first commit

This commit is contained in:
lingxiao865
2026-02-10 08:05:03 +08:00
commit c5af079d8c
1094 changed files with 97530 additions and 0 deletions

View File

@@ -0,0 +1 @@
import{j as e,H as t,q as a,C as o,A as n}from"./index-CJxdOECQ.js";function i(i,s={}){const d=e("token");let p="https://api.makesong.cn/yu"+i;if("GET"===(s.method||"GET")&&s.data){const e=[];Object.keys(s.data).forEach((t=>{const a=s.data[t];null!=a&&e.push(`${encodeURIComponent(t)}=${encodeURIComponent(String(a))}`)}));const t=e.join("&");t&&(p+="?"+t)}return new Promise(((e,i)=>{t({url:p,method:s.method||"GET",data:"GET"===(s.method||"GET")?void 0:s.data,header:{"Content-Type":"application/json",...d&&{Authorization:`Bearer ${d}`},...s.header},success:t=>{const s=t.data;200===s.code?e(s.data):401==s.code?(a("token"),o({url:"/pages/login/login"})):(n({title:s.message||"请求失败",icon:"none"}),i(new Error(s.message)))},fail:e=>{n({title:"网络请求失败",icon:"none"}),i(e)}})}))}const s={auth:{register:(e,t)=>i("/api/auth/register",{method:"POST",data:{phone:e,nickname:t}}),sendCode:e=>i("/api/auth/send-code",{method:"POST",data:{phone:e}}),verificationLogin:(e,t)=>i("/api/auth/verification-login",{method:"POST",data:{phone:e,code:t}}),oneClickLogin:e=>i("/api/auth/one-click-login",{method:"POST",data:{phone:e}})},user:{getProfile:()=>i("/api/users/profile"),updateProfile:e=>i("/api/users/profile",{method:"PUT",data:e})},timeslots:{getList:e=>i("/api/timeslots",{data:e}),getById:e=>i(`/api/timeslots/${e}`)},appointments:{getList:e=>i("/api/appointments",{data:e}),getById:e=>i(`/api/appointments/${e}`),create:(e,t=1,a)=>i("/api/appointments",{method:"POST",data:{time_slot_id:e,people_count:t,notes:a}}),cancel:e=>i(`/api/appointments/${e}`,{method:"DELETE"})},health:()=>i("/health")};export{s as a};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
.hotspot-expanded.relative[data-v-74d90c49]{position:relative}.hotspot-expanded[data-v-74d90c49]:after{content:"";display:block;position:absolute;left:0;top:0;right:0;bottom:0;transform:scale(1.5)}.t-draggable[data-v-74d90c49],.t-fab[data-v-e2150818]{position:fixed}.t-fab__button[data-v-e2150818]{box-shadow:var(--td-fab-shadow, var(--td-shadow-2, 0 3px 14px 2px rgba(0, 0, 0, .05), 0 8px 10px 1px rgba(0, 0, 0, .06), 0 5px 5px -3px rgba(0, 0, 0, .1)))}.t-fab__draggable[data-v-e2150818]{position:fixed}.container[data-v-4a80eaa6]{height:calc(100vh - var(--window-top));display:flex;flex-direction:column;background:#f5f5f5;overflow:hidden}.welcome-section[data-v-4a80eaa6]{flex-shrink:0;background:linear-gradient(135deg,#ff7a00,#ff9500);padding:1rem}.welcome-text[data-v-4a80eaa6]{font-size:1.125rem;font-weight:700;color:#fff}.swiper-container[data-v-4a80eaa6]{flex-shrink:0;margin:.75rem 1rem;border-radius:.5rem;overflow:hidden;box-shadow:0 .125rem .375rem rgba(0,0,0,.1)}.swiper[data-v-4a80eaa6]{width:100%;height:11.25rem}.swiper-item[data-v-4a80eaa6]{width:100%;height:100%}.banner-image[data-v-4a80eaa6]{width:100%;height:100%;background:linear-gradient(135deg,#ff7a00,#ff9500)}.grid-scroll[data-v-4a80eaa6]{flex:1;overflow:hidden}.grid-container[data-v-4a80eaa6]{display:grid;grid-template-columns:repeat(3,1fr);gap:.75rem;padding:0 1rem;width:100%;align-content:center}.grid-item[data-v-4a80eaa6]{display:flex;flex-direction:column;align-items:center;justify-content:center;background:#fff;border-radius:.5rem;padding:1.25rem .625rem;box-shadow:0 .0625rem .375rem rgba(0,0,0,.06);transition:all .3s ease}.grid-item[data-v-4a80eaa6]:active{transform:scale(.95);box-shadow:0 .0625rem .25rem rgba(0,0,0,.1)}.grid-icon[data-v-4a80eaa6]{font-size:2rem;margin-bottom:.5rem}.grid-text[data-v-4a80eaa6]{font-size:.875rem;color:#333;font-weight:500}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
.login-container[data-v-ba5c5b6b]{min-height:100vh;background:linear-gradient(135deg,#ff7a00,#ff9500);padding:2.5rem 1.25rem}.login-header[data-v-ba5c5b6b]{text-align:center;margin-bottom:3.125rem}.title[data-v-ba5c5b6b]{display:block;font-size:1.5rem;font-weight:700;color:#fff;margin-bottom:.625rem}.subtitle[data-v-ba5c5b6b]{display:block;font-size:.875rem;color:rgba(255,255,255,.8)}.login-form[data-v-ba5c5b6b]{background:#fff;border-radius:1rem;padding:1.875rem 1.25rem;box-shadow:0 .25rem .75rem rgba(0,0,0,.1)}.form-item[data-v-ba5c5b6b]{margin-bottom:1rem}.prefix-icon[data-v-ba5c5b6b]{font-size:1rem;color:#ff7a00}.form-actions[data-v-ba5c5b6b]{margin-top:1.875rem}.form-switch[data-v-ba5c5b6b]{display:flex;justify-content:space-between;margin-top:1rem;font-size:.875rem;color:#666}.form-switch uni-text[data-v-ba5c5b6b]{padding:.5rem 0}.register-link[data-v-ba5c5b6b]{color:#ff7a00!important;font-weight:700}.btn-primary[data-v-ba5c5b6b]{background:linear-gradient(135deg,#ff7a00,#ff9500)!important;border:none!important;border-radius:.25rem!important;color:#fff!important;box-shadow:0 .125rem .375rem rgba(255,122,0,.3)!important;outline:none!important}.btn-primary[data-v-ba5c5b6b]:after{border:none!important;box-shadow:none!important}.btn-primary[data-v-ba5c5b6b]:active{background:linear-gradient(135deg,#ff6900,#ff8500)!important}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
import{f as e,g as a,d as l,o as t,c as s,w as n,l as o,t as i,u,e as c,A as r,B as v,C as d,v as f,z as p,i as m}from"./index-CJxdOECQ.js";import{_ as g}from"./input.BkLVqGkG.js";import{r as _,b,_ as h}from"./button.BC3KjxGU.js";import{a as k}from"./api.U2gW6MFc.js";import"./parent-map.DJ2qhm0x.js";const y=h(e({__name:"login",setup(e){const h=a("13777777777"),y=a(""),x=a("one-click"),C=a(!1),j=a(!1),w=a(0),I=a("发送验证码"),z=()=>{x.value="code"===x.value?"one-click":"code"},L=async()=>{if(console.log(h.value),h.value&&11===h.value.length)try{await k.auth.sendCode("+86"+h.value),r({title:"验证码已发送",icon:"success"}),j.value=!0,w.value=60;const e=setInterval((()=>{w.value--,I.value=`${w.value}秒后重发`,w.value<=0&&(clearInterval(e),j.value=!1,I.value="发送验证码")}),1e3)}catch(e){console.error("发送验证码失败",e)}else r({title:"请输入正确的手机号",icon:"none"})},U=async()=>{if(h.value&&11===h.value.length)if(y.value&&6===y.value.length){C.value=!0;try{const e=await k.auth.verificationLogin("+86"+h.value,y.value);v("token",e.token),v("user",e.user),r({title:"登录成功",icon:"success"}),d({url:"/pages/index/index"})}catch(e){console.error("登录失败",e)}finally{C.value=!1}}else r({title:"请输入验证码",icon:"none"});else r({title:"请输入正确的手机号",icon:"none"})},A=async()=>{if(h.value&&11===h.value.length){C.value=!0;try{const e=await k.auth.oneClickLogin("+86"+h.value);v("token",e.token),v("user",e.user),r({title:"登录成功",icon:"success"}),d({url:"/pages/index/index"})}catch(e){console.error("登录失败",e)}finally{C.value=!1}}else r({title:"请输入正确的手机号",icon:"none"})},B=()=>{f({url:"/pages/register/register"})};return(e,a)=>{const r=p,v=m,d=_(l("t-input"),g),f=_(l("t-button"),b);return t(),s(v,{class:"login-container"},{default:n((()=>[o(v,{class:"login-header"},{default:n((()=>[o(r,{class:"title"},{default:n((()=>[i("欢迎使用预约系统")])),_:1}),o(r,{class:"subtitle"},{default:n((()=>[i("请登录或注册")])),_:1})])),_:1}),o(v,{class:"login-form"},{default:n((()=>[o(v,{class:"form-item"},{default:n((()=>[o(d,{value:h.value,"onUpdate:value":a[0]||(a[0]=e=>h.value=e),placeholder:"请输入手机号",type:"number",maxlength:11,clearable:""},{prefixIcon:n((()=>[o(r,{class:"prefix-icon"},{default:n((()=>[i("📱")])),_:1})])),_:1},8,["value"])])),_:1}),"code"===x.value?(t(),s(v,{key:0,class:"form-item"},{default:n((()=>[o(d,{value:y.value,"onUpdate:value":a[1]||(a[1]=e=>y.value=e),placeholder:"请输入验证码",type:"number",maxlength:6,clearable:""},{prefixIcon:n((()=>[o(r,{class:"prefix-icon"},{default:n((()=>[i("🔐")])),_:1})])),suffix:n((()=>[o(f,{size:"small",variant:"text",disabled:j.value,onClick:L},{default:n((()=>[i(u(I.value),1)])),_:1},8,["disabled"])])),_:1},8,["value"])])),_:1})):c("",!0),o(v,{class:"form-actions"},{default:n((()=>["code"===x.value?(t(),s(f,{key:0,"t-class":"btn-primary",theme:"primary",size:"large",block:"",loading:C.value,onClick:U},{default:n((()=>[i(" 验证码登录 ")])),_:1},8,["loading"])):(t(),s(f,{key:1,"t-class":"btn-primary",theme:"primary",size:"large",block:"",loading:C.value,onClick:A},{default:n((()=>[i(" 一键登录 ")])),_:1},8,["loading"]))])),_:1}),o(v,{class:"form-switch"},{default:n((()=>[o(r,{onClick:z},{default:n((()=>[i(u("code"===x.value?"使用一键登录":"使用验证码登录"),1)])),_:1}),o(r,{class:"register-link",onClick:B},{default:n((()=>[i("注册新账号")])),_:1})])),_:1})])),_:1})])),_:1})}}}),[["__scopeId","data-v-ba5c5b6b"]]);export{y as default};

View File

@@ -0,0 +1 @@
import{f as e,g as a,d as t,o as l,c as s,w as r,l as i,t as o,A as n,B as u,C as c,D as f,z as d,i as m}from"./index-CJxdOECQ.js";import{_ as p}from"./input.BkLVqGkG.js";import{r as _,b as v,_ as g}from"./button.BC3KjxGU.js";import{a as h}from"./api.U2gW6MFc.js";import"./parent-map.DJ2qhm0x.js";const b=g(e({__name:"register",setup(e){const g=a(""),b=a(""),x=a(!1),y=async()=>{if(g.value&&11===String(g.value).length)if(b.value&&0!==b.value.trim().length){x.value=!0;try{const e=await h.auth.register("+86"+g.value,b.value.trim());u("token",e.token),u("user",e.user),n({title:"注册成功",icon:"success"}),c({url:"/pages/index/index"})}catch(e){console.error("注册失败",e)}finally{x.value=!1}}else n({title:"请输入昵称",icon:"none"});else n({title:"请输入正确的手机号",icon:"none"})},j=()=>{f()};return(e,a)=>{const n=d,u=m,c=_(t("t-input"),p),f=_(t("t-button"),v);return l(),s(u,{class:"register-container"},{default:r((()=>[i(u,{class:"register-header"},{default:r((()=>[i(n,{class:"title"},{default:r((()=>[o("注册账号")])),_:1}),i(n,{class:"subtitle"},{default:r((()=>[o("创建您的预约系统账号")])),_:1})])),_:1}),i(u,{class:"register-form"},{default:r((()=>[i(u,{class:"form-item"},{default:r((()=>[i(c,{value:g.value,"onUpdate:value":a[0]||(a[0]=e=>g.value=e),placeholder:"请输入手机号",type:"number",maxlength:11,clearable:""},{prefixIcon:r((()=>[i(n,{class:"prefix-icon"},{default:r((()=>[o("📱")])),_:1})])),_:1},8,["value"])])),_:1}),i(u,{class:"form-item"},{default:r((()=>[i(c,{value:b.value,"onUpdate:value":a[1]||(a[1]=e=>b.value=e),placeholder:"请输入昵称",maxlength:20,clearable:""},{prefixIcon:r((()=>[i(n,{class:"prefix-icon"},{default:r((()=>[o("👤")])),_:1})])),_:1},8,["value"])])),_:1}),i(u,{class:"form-actions"},{default:r((()=>[i(f,{class:"btn-primary",theme:"primary",size:"large",block:"",loading:x.value,onClick:y},{default:r((()=>[o(" 注册 ")])),_:1},8,["loading"])])),_:1}),i(u,{class:"form-switch"},{default:r((()=>[i(n,{onClick:j},{default:r((()=>[o("已有账号?去登录")])),_:1})])),_:1})])),_:1})])),_:1})}}}),[["__scopeId","data-v-c8de2d17"]]);export{b as default};

View File

@@ -0,0 +1 @@
const e={CollapsePanel:"Collapse",TabPanel:"Tabs",StepItem:"Steps",TabBarItem:"TabBar",SideBarItem:"SideBar",GridItem:"Grid",DropdownItem:"DropdownMenu",Radio:"RadioGroup",Checkbox:"CheckboxGroup",Cell:"CellGroup",Avatar:"AvatarGroup",PickerItem:"Picker",IndexesAnchor:"Indexes",SwiperNav:"Swiper",Col:"Row",BackTop:"PullDownRefresh",FormItem:"Form",FormKey:"FormKey"};export{e as R};

View File

@@ -0,0 +1 @@
.register-container[data-v-c8de2d17]{min-height:100vh;background:linear-gradient(135deg,#ff7a00,#ff9500);padding:2.5rem 1.25rem}.register-header[data-v-c8de2d17]{text-align:center;margin-bottom:3.125rem}.title[data-v-c8de2d17]{display:block;font-size:1.5rem;font-weight:700;color:#fff;margin-bottom:.625rem}.subtitle[data-v-c8de2d17]{display:block;font-size:.875rem;color:rgba(255,255,255,.8)}.register-form[data-v-c8de2d17]{background:#fff;border-radius:1rem;padding:1.875rem 1.25rem;box-shadow:0 .25rem .75rem rgba(0,0,0,.1)}.form-item[data-v-c8de2d17]{margin-bottom:1rem}.prefix-icon[data-v-c8de2d17]{font-size:1rem;color:#ff7a00}.form-actions[data-v-c8de2d17]{margin-top:1.875rem}.form-switch[data-v-c8de2d17]{display:flex;justify-content:center;margin-top:1rem;font-size:.875rem;color:#ff7a00}.form-switch uni-text[data-v-c8de2d17]{padding:.5rem 0}.btn-primary[data-v-c8de2d17] .t-button{background:linear-gradient(135deg,#ff7a00,#ff9500)!important;border:none!important;box-shadow:0 .125rem .375rem rgba(255,122,0,.3)}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
import{s as t}from"./button.BC3KjxGU.js";const a={data:()=>({distanceTop:0}),props:{usingCustomNavbar:{type:Boolean,default:!1},customNavbarHeight:{type:Number,default:0}},created(){this.usingCustomNavbar&&this.calculateCustomNavbarDistanceTop()},methods:{calculateCustomNavbarDistanceTop(){const{statusBarHeight:a}=t;this.distanceTop=Math.max(0,this.customNavbarHeight+a)}}};export{a as u};

23
unpackage/dist/build/web/index.html vendored Normal file
View File

@@ -0,0 +1,23 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<link rel="stylesheet" href="/assets/uni.66e2963d.css">
<meta charset="UTF-8" />
<script>
var coverSupport = 'CSS' in window && typeof CSS.supports === 'function' && (CSS.supports('top: env(a)') ||
CSS.supports('top: constant(a)'))
document.write(
'<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' +
(coverSupport ? ', viewport-fit=cover' : '') + '" />')
</script>
<title>yu</title>
<!--preload-links-->
<!--app-context-->
<script type="module" crossorigin src="/assets/index-CJxdOECQ.js"></script>
<link rel="stylesheet" crossorigin href="/assets/index-C_CZfDaH.css">
</head>
<body>
<div id="app"><!--app-html--></div>
</body>
</html>

View File

@@ -0,0 +1,8 @@
这是一个占位符文件,用于轮播图显示。
请在 static 目录下放置以下图片文件:
- banner1.png
- banner2.png
- banner3.png
或者使用网络图片链接替换 banners 数组中的 image 路径。

BIN
unpackage/dist/build/web/static/logo.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB