PageSourceSearch

https://0h9.cn/assets/pages-oral_lp-oral_lp_index_v2.CPlB1SD1.js

js 0h9.cn collected 2026-10-09 04:34:12 UTC 12,367 bytes, 1 lines download raw bytes

1import{j as e,p as t,q as l,c as a,w as s,d as n,o,a as i,g as c,e as u,f as d,F as r,x as f,t as v,y as p,D as m,b as _,C as h,s as g,h as y,E as b,I as w,G as j,H as k,J as C}from"./index-BKsmAAP-.js";import{o as x}from"./uni-app.es.CUeE75Jc.js";import{r as P}from"./regions.data.DAH66ryh.js";import{_ as E}from"./_plugin-vue_export-helper.BCo6x5W8.js";const $=E({__name:"oral_lp_index_v2",setup(E){const $=[{icon:"牙",name:"牙齿检查",theme:"mint"},{icon:"补",name:"补牙修复",theme:"blue"},{icon:"洗",name:"洁牙护理",theme:"orange"},{icon:"矫",name:"牙齿矫正",theme:"purple"},{icon:"种",name:"种植咨询",theme:"mint"},{icon:"冠",name:"牙冠修复",theme:"blue"},{icon:"痛",name:"牙痛急诊",theme:"orange"},{icon:"儿",name:"儿童齿科",theme:"purple"}],T=[{title:"牙疼、牙龈肿、冷热敏感",desc:"建议尽快安排检查,确认是否需要处理",tag:"建议检查"},{title:"缺牙、松动、咀嚼不适",desc:"先面诊评估缺牙位置、数量和修复条件",tag:"方案评估"},{title:"牙不齐、龅牙、咬合问题",desc:"先预约正畸评估,了解周期和方案选择",tag:"预约评估"}],I=[{no:"1",title:"填写信息",desc:"选择城市、项目并填写手机号"},{no:"2",title:"电话确认",desc:"核对就近门诊和可约时间"},{no:"3",title:"到店面诊",desc:"医生检查后给出处理建议"}],q=["牙齿检查","补牙修复","洁牙护理","牙齿矫正","种植咨询","牙痛急诊","儿童齿科"],z=P,A=e([]),D=e([]),H=e(""),O=e(!1),S=e(!1),G=e("");let V=null;const B=e(null),J=e(null),L=t({phone:"",project:"",province:"",city:"",district:""}),F=t({phone:"",project:"",area:""});x((e=>{H.value=(null==e?void 0:e.mzuid)||"000000","000000"!==H.value&&Q()}));const M=()=>{h({selector:"#form-anchor",duration:300})},N=e=>{var t;L.project=(null==(t=null==e?void 0:e.target)?void 0:t.value)||"",Z("project")},R=e=>{const t=z.find((t=>{var l;return t.name===((null==(l=null==e?void 0:e.target)?void 0:l.value)||"")}));B.value=t||null,J.value=null,L.province=(null==t?void 0:t.name)||"",L.city="",L.district="",A.value=(null==t?void 0:t.children)||[],D.value=[],Z("area")},U=e=>{const t=A.value.find((t=>{var l;return t.name===((null==(l=null==e?void 0:e.target)?void 0:l.value)||"")}));J.value=t||null,L.city=(null==t?void 0:t.name)||"",L.district="",D.value=(null==t?void 0:t.children)||[],Z("area")},Y=e=>{const t=D.value.find((t=>{var l;return t.name===((null==(l=null==e?void 0:e.target)?void 0:l.value)||"")}));L.district=(null==t?void 0:t.name)||"",Z("area")},Z=e=>{F[e]=""},K=async()=>{try{return await new Promise(((e,t)=>{"undefined"!=typeof navigator&&navigator.geolocation?navigator.geolocation.getCurrentPosition((t=>{e({longitude:t.coords.longitude,latitude:t.coords.latitude})}),t,{enableHighAccuracy:!0,timeout:1e4,maximumAge:0}):t(new Error("Browser geolocation is not supported"))}))}catch(e){return console.warn("浏览器定位失败,尝试 uni.getLocation:",e),new Promise(((e,t)=>{C({type:"wgs84",isHighAccuracy:!0,success:e,fail:t})}))}},Q=async()=>{var e,t;try{const a=await l({url:"https://ops.funmz.com/userD/api/code/queryPhoneByCode",method:"POST",data:{openId:H.value}});if(!(null==(e=null==a?void 0:a.data)?void 0:e.success)||!(null==(t=null==a?void 0:a.data)?void 0:t.res))return;L.phone=String(a.data.res)}catch(a){console.error("根据 mzuid 获取手机号失败:",a)}},W=async()=>{var e,t;if(!O.value){O.value=!0;try{const n=await K(),o=await(a=n.longitude,s=n.latitude,l({url:`https://ops.funmz.com/userD/api/code/getGdLocation/${a},${s}`,method:"GET"}));if(!(null==(e=null==o?void 0:o.data)?void 0:e.success)||!(null==(t=null==o?void 0:o.data)?void 0:t.res))throw new Error("Invalid location response");const{province:i,city:c,district:u}=o.data.res;((e,t,l)=>{const a=z.find((t=>t.name===e));if(!a)throw new Error("Province not found");const s=a.children||[];let n=s.find((e=>e.name===t));if(n||1!==s.length||(n=s[0]),!n)throw new Error("City not found");const o=n.children||[],i=o.find((e=>e.name===l));if(!i)throw new Error("District not found");B.value=a,J.value=n,A.value=s,D.value=o,L.province=a.name,L.city=n.name,L.district=i.name})(i,c,u),g({title:"已自动填充地区",icon:"none"})}catch(n){console.error("自动获取位置失败:",n),g({title:"定位失败,请手动选择",icon:"none"})}finally{O.value=!1}var a,s}},X=async()=>
1{if(Z("phone"),Z("project"),Z("area"),!L.phone)return void(F.phone="请填写手机号,方便工作人员联系您确认预约。");if(!/^1[3-9]\d{9}$/.test(L.phone))return void(F.phone="手机号格式不正确,请输入 11 位大陆手机号。");if(!L.project)return void(F.project="请选择想咨询的口腔项目。");if(!L.province||!L.city||!L.district)return void(F.area=L.province?L.city?"请选择所在区县。":"请选择所在城市。":"请选择所在省份。");const e=`${L.province}${L.city}${L.district}`;try{await(async()=>{await l({url:"/ops/api/wechatOffiAccountEvent",method:"POST",data:{eventType:"form_data",openId:H.value,source:"口腔表单",details:JSON.stringify({phone:L.phone,consultProject:L.project,province:L.province,city:L.city,district:L.district})}})})(),t=`已收到${e}的${L.project}预约需求`,G.value=t,S.value=!0,V&&clearTimeout(V),V=setTimeout((()=>{S.value=!1,V=null}),2600),L.phone="",L.project="",L.province="",L.city="",L.district="",B.value=null,J.value=null,A.value=[],D.value=[]}catch(a){console.error("口腔表单提交失败:",a),g({title:"提交失败,请稍后重试",icon:"none"})}var t},ee=async()=>{if(!(await new Promise((e=>{const t=j();t.select("#form-anchor").boundingClientRect(),t.exec((t=>{const l=null==t?void 0:t[0];if(!l)return void e(!1);const{windowHeight:a}=k();e(l.top<a&&l.bottom>0)}))}))))return M(),void setTimeout((()=>{X()}),320);X()};return(e,t)=>{const l=n,h=y,g=b,j=w;return o(),a(l,{class:"page"},{default:s((()=>[i(l,{class:"shell"},{default:s((()=>[i(l,{class:"hero"},{default:s((()=>[i(l,{class:"hero-content"},{default:s((()=>[i(l,{class:"badge"},{default:s((()=>[c("附近口腔门诊预约")])),_:1}),i(l,{class:"hero-title"},{default:s((()=>[i(h,null,{default:s((()=>[c("牙齿不舒服")])),_:1}),i(h,null,{default:s((()=>[c("先约面诊更安心")])),_:1})])),_:1}),i(l,{class:"hero-desc"},{default:s((()=>[c(" 填写手机号、城市和项目,工作人员协助确认附近门诊、可约时间和检查注意事项。 ")])),_:1}),i(l,{class:"hero-actions"},{default:s((()=>[i(g,{class:"hero-button",type:"button",onClick:M},{default:s((()=>[c("立即预约")])),_:1}),i(g,{class:"hero-button secondary",type:"button",onClick:M},{default:s((()=>[c("门诊咨询")])),_:1})])),_:1})])),_:1})])),_:1}),i(l,{class:"quick-panel"},{default:s((()=>[i(l,{class:"stats"},{default:s((()=>[i(l,{class:"stat"},{default:s((()=>[i(h,{class:"stat-strong"},{default:s((()=>[c("1分钟")])),_:1}),i(h,{class:"stat-text"},{default:s((()=>[c("完成登记")])),_:1})])),_:1}),i(l,{class:"stat"},{default:s((()=>[i(h,{class:"stat-strong"},{default:s((()=>[c("专人")])),_:1}),i(h,{class:"stat-text"},{default:s((()=>[c("确认门诊")])),_:1})])),_:1}),i(l,{class:"stat"},{default:s((()=>[i(h,{class:"stat-strong"},{default:s((()=>[c("同城")])),_:1}),i(h,{class:"stat-text"},{default:s((()=>[c("门诊预约")])),_:1})])),_:1})])),_:1})])),_:1}),i(l,{class:"section"},{default:s((()=>[i(l,{class:"section-title"},{default:s((()=>[i(h,{class:"section-heading"},{default:s((()=>[c("可预约项目")])),_:1}),i(h,{class:"section-subtitle"},{default:s((()=>[c("同城匹配")])),_:1})])),_:1}),i(l,{class:"service-grid"},{default:s((()=>[(o(),u(r,null,d($,(e=>i(l,{key:e.name,class:"service",onClick:M},{default:s((()=>[i(l,{class:f(["icon",e.theme])},{default:s((()=>[c(v(e.icon),1)])),_:2},1032,["class"]),i(h,null,{default:s((()=>[c(v(e.name),1)])),_:2},1024)])),_:2},1024))),64))])),_:1})])),_:1}),i(l,{class:"section"},{default:s((()=>[i(l,{class:"section-title"},{default:s((()=>[i(h,{class:"section-heading"},{default:s((()=>[c("这些情况建议尽快看牙")])),_:1}),i(h,{class:"section-subtitle"},{default:s((()=>[c("先预约检查")])),_:1})])),_:1}),i(l,{class:"problem-list"},{default:s((()=>[(o(),u(r,null,d(T,(e=>i(l,{key:e.title,class:"problem"},{default:s((()=>[i(l,{class:"problem-text"},{default:s((()=>[i(h,{class:"problem-title"},{default:s((()=>[c(v(e.title),1)])),_:2},1024),i(h,{class:"problem-desc"},{default:s((()=>[c(v(e.desc),1)])),_:2},1024)])),_:2},1024),i(h,{class:"pill"},{default:s((()=>[c(v(e.tag),1)])),_:2},1024)])),_:2},1024))),64))])),_:1})])),_:1}),i(l,{class:"section"},{default:s((()=>[i(l,{class:"section-title"},{default:s((()=>[i(h,{class:"section-heading"},{default:s((()=>[c("安心预约流程")])),_:1}),i(h,{class:"section-subtitle"},{default:s((()=>[c("专人确认")])),_:1})])),_:1}),i(l,{class:"steps"},{default:s((()=>[(o(),u(r,null,d(I,(e=>i(l,{key:e.no,class:"step"},{default:s((()=>[i(h,{class:"step-no"},{default:s((()=>[c(v(e.no),1)])),_:2},1024),i(h,{class:"step-title"},{default:s((()=>
1[c(v(e.title),1)])),_:2},1024),i(h,{class:"step-desc"},{default:s((()=>[c(v(e.desc),1)])),_:2},1024)])),_:2},1024))),64))])),_:1})])),_:1}),i(l,{id:"form-anchor",class:"section"},{default:s((()=>[i(l,{class:"section-title"},{default:s((()=>[i(h,{class:"section-heading"},{default:s((()=>[c("免费预约面诊")])),_:1}),i(h,{class:"section-subtitle"},{default:s((()=>[c("手机号必填")])),_:1})])),_:1}),i(l,{class:"form"},{default:s((()=>[i(l,{class:f(["field",{"has-error":F.phone}])},{default:s((()=>[i(l,{class:"field-label required-label"},{default:s((()=>[i(h,{class:"required-star"},{default:s((()=>[c("*")])),_:1}),i(h,null,{default:s((()=>[c("手机号")])),_:1})])),_:1}),i(j,{modelValue:L.phone,"onUpdate:modelValue":t[0]||(t[0]=e=>L.phone=e),modelModifiers:{trim:!0},class:"field-input",type:"number",maxlength:"11",placeholder:"请输入 11 位手机号",onInput:t[1]||(t[1]=e=>Z("phone"))},null,8,["modelValue"]),i(h,{class:"field-error"},{default:s((()=>[c(v(F.phone||""),1)])),_:1})])),_:1},8,["class"]),i(l,{class:f(["field",{"has-error":F.project}])},{default:s((()=>[i(h,{class:"field-label"},{default:s((()=>[c("想咨询的项目")])),_:1}),p("select",{class:"field-input field-select",value:L.project,onChange:N},[p("option",{value:""},"请选择项目"),(o(),u(r,null,d(q,(e=>p("option",{key:e,value:e},v(e),9,["value"]))),64))],40,["value"]),i(h,{class:"field-error"},{default:s((()=>[c(v(F.project||""),1)])),_:1})])),_:1},8,["class"]),i(l,{class:f(["field",{"has-error":F.area}])},{default:s((()=>[i(l,{class:"field-head"},{default:s((()=>[i(h,{class:"field-label"},{default:s((()=>[c("所在区域")])),_:1}),i(g,{class:"locate-button",type:"button",onClick:W},{default:s((()=>[c(v(O.value?"定位中...":"自动获取位置"),1)])),_:1})])),_:1}),i(l,{class:"select-row"},{default:s((()=>[p("select",{class:"field-input field-select",value:L.province,onChange:R},[p("option",{value:""},"省份"),(o(!0),u(r,null,d(m(z),(e=>(o(),u("option",{key:e.code,value:e.name},v(e.name),9,["value"])))),128))],40,["value"]),p("select",{class:f(["field-input field-select",{disabled:0===A.value.length}]),value:L.city,disabled:0===A.value.length,onChange:U},[p("option",{value:""},"城市"),(o(!0),u(r,null,d(A.value,(e=>(o(),u("option",{key:e.code,value:e.name},v(e.name),9,["value"])))),128))],42,["value","disabled"]),p("select",{class:f(["field-input field-select",{disabled:0===D.value.length}]),value:L.district,disabled:0===D.value.length,onChange:Y},[p("option",{value:""},"区县"),(o(!0),u(r,null,d(D.value,(e=>(o(),u("option",{key:e.code,value:e.name},v(e.name),9,["value"])))),128))],42,["value","disabled"])])),_:1}),i(h,{class:"field-error"},{default:s((()=>[c(v(F.area||""),1)])),_:1})])),_:1},8,["class"]),i(g,{class:"submit",type:"button",onClick:X},{default:s((()=>[c("提交预约,等待电话确认")])),_:1}),i(h,{class:"notice"},{default:s((()=>[c(" 提交后由工作人员联系确认,页面仅用于预约咨询,不替代医生线下诊断。 ")])),_:1})])),_:1})])),_:1})])),_:1}),i(l,{class:"sticky-cta"},{default:s((()=>[i(g,{class:"submit sticky-submit",type:"button",onClick:ee},{default:s((()=>[c("立即预约面诊")])),_:1})])),_:1}),S.value?(o(),a(l,{key:0,class:"success-toast"},{default:s((()=>[c(v(G.value),1)])),_:1})):_("",!0)])),_:1})}}},[["__scopeId","data-v-850568d0"]]);export{$ as default};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.