import{$ as e,H as t,L as n,P as r,V as i,Wt as a,_ as o,d as s,et as c,f as l,i as u,lt as d,p as f,st as p,u as m,v as h,z as g}from"./runtime-core.esm-bundler-DbRZbT7v.js";import{o as _,s as v}from"./index-DK5nh4op.js";import"./request-BcX6wdRT.js";import{i as y}from"./crm-D8MwtJCV.js";import{i as b,r as x}from"./room-CR75Q7cU.js";var S={class:`p-6 space-y-4`},C={class:`bg-white rounded-2xl border border-gray-100 shadow-sm p-4 flex items-center flex-wrap gap-3`},w={class:`bg-white rounded-2xl border border-gray-100 shadow-sm`},T={class:`flex items-center justify-between px-5 py-4 border-b border-gray-50`},E={class:`px-2`},D={class:`px-5 py-3 border-t border-gray-50`},O={__name:`index`,setup(O){let k=d([]),A=d(0),j=d(!1),M=d(!1),N=d(!1),P=d([]),F=d([]),I=p({customer_id:``,room_id:``,status:``}),L=p({page:1,per_page:20}),R=d(null),z=p({id:null,customer_id:``,room_id:``,contract_id:``,check_in_date:``,check_out_date:``,remark:``}),B=d(!1),V={customer_id:[{required:!0,message:`请选择客户`,trigger:`change`}],room_id:[{required:!0,message:`请选择房间`,trigger:`change`}],check_in_date:[{required:!0,message:`请选择入住日期`,trigger:`change`}],check_out_date:[{required:!0,message:`请选择退房日期`,trigger:`change`}]},H={0:`预定`,1:`已入住`,2:`已退房`,3:`已取消`},U={0:`warning`,1:`success`,2:`info`,3:`danger`};async function W(){j.value=!0;try{let e=await x.getList({...I,...L});k.value=e.data?.list||e.data?.data||[],A.value=e.data?.total||0}finally{j.value=!1}}async function G(){try{let e=await y.getList({per_page:500});P.value=e.data?.list||e.data?.data||[]}catch{}}async function K(){try{let e=await b.getList({per_page:200});F.value=e.data?.list||e.data?.data||[]}catch{}}function q(){L.page=1,W()}function J(){Object.assign(I,{customer_id:``,room_id:``,status:``}),q()}function Y(){B.value=!1,Object.assign(z,{id:null,customer_id:``,room_id:``,contract_id:``,check_in_date:``,check_out_date:``,remark:``}),M.value=!0}async function X(){R.value&&await R.value.validate(async e=>{if(e){N.value=!0;try{B.value?await x.update(z.id,z):await x.create(z),v.success(B.value?`更新成功`:`预定成功`),M.value=!1,W(),K()}finally{N.value=!1}}})}async function Z(e){await _.confirm(`确定为「${e.customer?.name}」办理入住?`,`入住确认`,{type:`info`}),await x.checkIn(e.id),v.success(`入住成功`),W(),K()}async function Q(e){await _.confirm(`确定为「${e.customer?.name}」办理退房?`,`退房确认`,{type:`warning`}),await x.checkOut(e.id),v.success(`退房成功`),W(),K()}async function $(e){await _.confirm(`确定取消该预定吗?`,`取消确认`,{type:`warning`}),await x.cancel(e.id,{}),v.success(`已取消`),W(),K()}async function ee(e){await _.confirm(`确定删除该预定吗?`,`删除确认`,{type:`warning`}),await x.delete(e.id),v.success(`删除成功`),W()}function te(e){L.page=e,W()}function ne(e){L.per_page=e,L.page=1,W()}return r(()=>{W(),G(),K()}),(r,d)=>{let p=i(`el-option`),_=i(`el-select`),v=i(`el-button`),y=i(`el-table-column`),b=i(`el-tag`),x=i(`el-table`),O=i(`el-pagination`),B=i(`el-form-item`),W=i(`el-date-picker`),G=i(`el-input`),K=i(`el-form`),re=i(`el-dialog`),ie=t(`loading`);return n(),f(`div`,S,[m(`div`,C,[h(_,{modelValue:I.customer_id,"onUpdate:modelValue":d[0]||=e=>I.customer_id=e,placeholder:`选择客户`,clearable:``,filterable:``,style:{width:`180px`}},{default:e(()=>[(n(!0),f(u,null,g(P.value,e=>(n(),s(p,{key:e.id,label:`${e.name}(${e.phone})`,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`]),h(_,{modelValue:I.status,"onUpdate:modelValue":d[1]||=e=>I.status=e,placeholder:`状态`,clearable:``,style:{width:`120px`}},{default:e(()=>[(n(),f(u,null,g(H,(e,t)=>h(p,{key:t,label:e,value:Number(t)},null,8,[`label`,`value`])),64))]),_:1},8,[`modelValue`]),h(v,{type:`primary`,onClick:q},{default:e(()=>[...d[11]||=[o(`查询`,-1)]]),_:1}),h(v,{onClick:J},{default:e(()=>[...d[12]||=[o(`重置`,-1)]]),_:1})]),m(`div`,w,[m(`div`,T,[d[14]||=m(`div`,{class:`flex items-center gap-3`},[m(`span`,{class:`font-medium text-gray-700`},`预定列表`)],-1),h(v,{type:`primary`,onClick:Y},{default:e(()=>[...d[13]||=[o(`新增预定`,-1)]]),_:1})]),m(`div`,E,[c((n(),s(x,{data:k.value,style:{width:`100%`}},{default:e(()=>[h(y,{label:`客户`,"min-width":`100`},{default:e(({row:e})=>[o(a(e.customer?.name||`-`),1)]),_:1}),h(y,{label:`房间`,"min-width":`120`},{default:e(({row:e})=>[o(a(e.room?.number||`-`)+` (`+a(e.room?.room_type?.name||``)+`)`,1)]),_:1}),h(y,{prop:`check_in_date`,label:`入住日期`,"min-width":`110`}),h(y,{prop:`check_out_date`,label:`退房日期`,"min-width":`110`}),h(y,{label:`状态`,width:`100`,align:`center`},{default:e(({row:t})=>[h(b,{type:U[t.status],size:`small`},{default:e(()=>[o(a(H[t.status]),1)]),_:2},1032,[`type`])]),_:1}),h(y,{label:`操作`,width:`260`,fixed:`right`,align:`center`},{default:e(({row:t})=>[t.status===0?(n(),s(v,{key:0,size:`small`,type:`success`,text:``,onClick:e=>Z(t)},{default:e(()=>[...d[15]||=[o(`入住`,-1)]]),_:1},8,[`onClick`])):l(``,!0),t.status===1?(n(),s(v,{key:1,size:`small`,type:`warning`,text:``,onClick:e=>Q(t)},{default:e(()=>[...d[16]||=[o(`退房`,-1)]]),_:1},8,[`onClick`])):l(``,!0),t.status<2?(n(),s(v,{key:2,size:`small`,type:`info`,text:``,onClick:e=>$(t)},{default:e(()=>[...d[17]||=[o(`取消`,-1)]]),_:1},8,[`onClick`])):l(``,!0),t.status===1?l(``,!0):(n(),s(v,{key:3,size:`small`,type:`danger`,text:``,onClick:e=>ee(t)},{default:e(()=>[...d[18]||=[o(`删除`,-1)]]),_:1},8,[`onClick`]))]),_:1})]),_:1},8,[`data`])),[[ie,j.value]])]),m(`div`,D,[h(O,{"current-page":L.page,"onUpdate:currentPage":d[2]||=e=>L.page=e,"page-size":L.per_page,"onUpdate:pageSize":d[3]||=e=>L.per_page=e,total:A.value,"page-sizes":[10,20,50],layout:`total,sizes,prev,pager,next,jumper`,background:``,onCurrentChange:te,onSizeChange:ne},null,8,[`current-page`,`page-size`,`total`])])]),h(re,{modelValue:M.value,"onUpdate:modelValue":d[10]||=e=>M.value=e,title:`新增预定`,width:`550px`,"destroy-on-close":``},{footer:e(()=>[h(v,{onClick:d[9]||=e=>M.value=!1},{default:e(()=>[...d[19]||=[o(`取消`,-1)]]),_:1}),h(v,{type:`primary`,loading:N.value,onClick:X},{default:e(()=>[...d[20]||=[o(`确定`,-1)]]),_:1},8,[`loading`])]),default:e(()=>[h(K,{ref_key:`formRef`,ref:R,model:z,rules:V,"label-width":`80px`},{default:e(()=>[h(B,{label:`客户`,prop:`customer_id`},{default:e(()=>[h(_,{modelValue:z.customer_id,"onUpdate:modelValue":d[4]||=e=>z.customer_id=e,filterable:``,style:{width:`100%`}},{default:e(()=>[(n(!0),f(u,null,g(P.value,e=>(n(),s(p,{key:e.id,label:`${e.name}(${e.phone})`,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`])]),_:1}),h(B,{label:`房间`,prop:`room_id`},{default:e(()=>[h(_,{modelValue:z.room_id,"onUpdate:modelValue":d[5]||=e=>z.room_id=e,filterable:``,style:{width:`100%`}},{default:e(()=>[(n(!0),f(u,null,g(F.value.filter(e=>e.status===1),e=>(n(),s(p,{key:e.id,label:`${e.number} (${e.room_type?.name||``})`,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`])]),_:1}),h(B,{label:`入住日期`,prop:`check_in_date`},{default:e(()=>[h(W,{modelValue:z.check_in_date,"onUpdate:modelValue":d[6]||=e=>z.check_in_date=e,type:`date`,"value-format":`YYYY-MM-DD`,style:{width:`100%`}},null,8,[`modelValue`])]),_:1}),h(B,{label:`退房日期`,prop:`check_out_date`},{default:e(()=>[h(W,{modelValue:z.check_out_date,"onUpdate:modelValue":d[7]||=e=>z.check_out_date=e,type:`date`,"value-format":`YYYY-MM-DD`,style:{width:`100%`}},null,8,[`modelValue`])]),_:1}),h(B,{label:`备注`},{default:e(()=>[h(G,{modelValue:z.remark,"onUpdate:modelValue":d[8]||=e=>z.remark=e,type:`textarea`,rows:2},null,8,[`modelValue`])]),_:1})]),_:1},8,[`model`])]),_:1},8,[`modelValue`])])}}};export{O as default};