2 lines
13 KiB
JavaScript
Executable File
2 lines
13 KiB
JavaScript
Executable File
import{j as Z,H as c,L as y,P as a,M as e,O as o,Y as g,F as M,ab as L,I as E,Z as v,ag as i,m as te,c as ae,e as z,k as le,a3 as ne,V as G,R as J,u as h,X as W,ah as se,ao as H,n as ie}from"./vue-Gs2e-20-.js";import{a as _,b as Q,d as ee,c as oe,s as de,f as re,g as ue,u as ce}from"./element-plus-JbJMPIks.js";import{u as me}from"./records-rp0LN8a-.js";import{_ as X,a as I}from"./index-jY687wPe.js";import{a as pe,s as _e}from"./date-CWsjnySd.js";const fe={class:"record-form-container card"},ve={class:"form-header"},ye={class:"form-grid"},ge={class:"form-main"},be={class:"category-option"},ke={class:"category-icon"},Ve={class:"form-side"},we={class:"form-footer"},$e={__name:"RecordForm",props:{categories:{type:Array,default:()=>[]},users:{type:Array,default:()=>[]},date:{type:String,required:!0}},emits:["submit"],setup(x,{emit:w}){const b=x,B=w,k=z(!1),n=te({type:"expense",category_id:null,amount:0,user:"",note:""}),m=ae(()=>b.categories.filter(p=>p.type===n.type));Z(m,p=>{p.length>0&&!p.find(d=>d.id===n.category_id)&&(n.category_id=p[0].id)},{immediate:!0}),Z(()=>b.users,p=>{p.length>0&&!n.user&&(n.user=p[0].name)},{immediate:!0});async function D(){if(n.amount<=0)return _.warning("请输入有效金额");if(!n.category_id)return _.warning("请选择分类");if(!n.user)return _.warning("请选择用户");k.value=!0;try{await B("submit",{...n,date:b.date}),n.amount=0,n.note=""}finally{k.value=!1}}return(p,d)=>{const R=i("el-radio-button"),N=i("el-radio-group"),V=i("el-input-number"),s=i("el-form-item"),C=i("el-option"),T=i("el-select"),U=i("el-input"),Y=i("Check"),S=i("el-icon"),A=i("el-button"),F=i("el-form");return c(),y("div",fe,[a("div",ve,[e(N,{modelValue:n.type,"onUpdate:modelValue":d[0]||(d[0]=r=>n.type=r),size:"large",class:"type-selector"},{default:o(()=>[e(R,{label:"expense"},{default:o(()=>[...d[5]||(d[5]=[g("支出",-1)])]),_:1}),e(R,{label:"income"},{default:o(()=>[...d[6]||(d[6]=[g("收入",-1)])]),_:1})]),_:1},8,["modelValue"])]),e(F,{model:n,"label-position":"top",class:"modern-form"},{default:o(()=>[a("div",ye,[a("div",ge,[e(s,{label:"金额"},{default:o(()=>[e(V,{modelValue:n.amount,"onUpdate:modelValue":d[1]||(d[1]=r=>n.amount=r),precision:2,step:10,min:.01,"controls-position":"right",class:"amount-input"},{prefix:o(()=>[...d[7]||(d[7]=[g("¥",-1)])]),_:1},8,["modelValue"])]),_:1}),e(s,{label:"分类"},{default:o(()=>[e(T,{modelValue:n.category_id,"onUpdate:modelValue":d[2]||(d[2]=r=>n.category_id=r),placeholder:"选择分类",class:"full-width"},{default:o(()=>[(c(!0),y(M,null,L(m.value,r=>(c(),E(C,{key:r.id,label:r.name,value:r.id},{default:o(()=>[a("div",be,[a("span",ke,v(r.icon||"💰"),1),a("span",null,v(r.name),1)])]),_:2},1032,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1})]),a("div",Ve,[e(s,{label:"归属用户"},{default:o(()=>[e(T,{modelValue:n.user,"onUpdate:modelValue":d[3]||(d[3]=r=>n.user=r),placeholder:"选择用户",class:"full-width"},{default:o(()=>[(c(!0),y(M,null,L(x.users,r=>(c(),E(C,{key:r.id,label:r.name,value:r.name},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),e(s,{label:"备注"},{default:o(()=>[e(U,{modelValue:n.note,"onUpdate:modelValue":d[4]||(d[4]=r=>n.note=r),placeholder:"补充说明...",clearable:""},null,8,["modelValue"])]),_:1})])]),a("div",we,[e(A,{type:"primary",size:"large",onClick:D,class:"submit-btn",loading:k.value},{default:o(()=>[e(S,null,{default:o(()=>[e(Y)]),_:1}),d[8]||(d[8]=a("span",null,"确认保存",-1))]),_:1},8,["loading"])])]),_:1},8,["model"])])}}},xe=X($e,[["__scopeId","data-v-aacbca7e"]]),Ce={class:"record-table-container"},he={class:"category-cell"},De={class:"cat-icon"},Ue={class:"cat-name"},ze={key:1,class:"mobile-list"},Re={class:"card-main"},Ae={class:"card-left"},Me={class:"cat-avatar"},Be={class:"cat-info"},Ie={class:"cat-title"},Ee={class:"cat-user-note"},Te={class:"user-pill"},Ye={key:0,class:"note-text"},Fe={class:"card-right"},Le={class:"card-actions"},Ne={class:"edit-grid"},Se={__name:"RecordTable",props:{records:{type:Array,default:()=>[]},categories:{type:Array,default:()=>[]},users:{type:Array,default:()=>[]},loading:{type:Boolean,default:!1}},emits:["edit","delete"],setup(x,{emit:w}){const b=x,B=w,k=z(!1),n=z(!1),m=te({id:null,type:"",category_id:null,amount:0,user:"",note:""});function D(){k.value=window.innerWidth<=768}le(()=>{D(),window.addEventListener("resize",D)}),ne(()=>{window.removeEventListener("resize",D)});function p(V){const s=b.categories.find(C=>C.id===V);return s?s.icon:"💰"}function d(V){Object.assign(m,V),n.value=!0}async function R(V){try{await oe.confirm("确定删除该记录吗?","提示",{type:"warning",confirmButtonText:"确定删除",cancelButtonText:"取消"}),B("delete",V.id)}catch{}}function N(){B("edit",{...m}),n.value=!1}return(V,s)=>{const C=i("el-table-column"),T=i("el-tag"),U=i("el-button"),Y=i("el-button-group"),S=i("el-table"),A=i("el-empty"),F=i("el-input-number"),r=i("el-form-item"),u=i("el-option"),t=i("el-select"),$=i("el-input"),q=i("el-form"),O=i("el-dialog"),P=se("loading");return c(),y("div",Ce,[k.value?G((c(),y("div",ze,[(c(!0),y(M,null,L(x.records,l=>(c(),y("div",{key:l.id,class:"mobile-record-card"},[a("div",Re,[a("div",Ae,[a("div",Me,v(p(l.category_id)),1),a("div",Be,[a("div",Ie,v(l.category_name),1),a("div",Ee,[a("span",Te,v(l.user),1),l.note?(c(),y("span",Ye,v(l.note),1)):W("",!0)])])]),a("div",Fe,[a("div",{class:J(["card-amount mono-number",l.type==="income"?"text-income":"text-expense"])},v(l.type==="income"?"+":"-")+"¥"+v(l.amount.toFixed(2)),3)])]),a("div",Le,[e(U,{link:"",icon:h(Q),onClick:K=>d(l)},{default:o(()=>[...s[6]||(s[6]=[g("编辑",-1)])]),_:1},8,["icon","onClick"]),e(U,{link:"",type:"danger",icon:h(ee),onClick:K=>R(l)},{default:o(()=>[...s[7]||(s[7]=[g("删除",-1)])]),_:1},8,["icon","onClick"])])]))),128)),x.records.length===0?(c(),E(A,{key:0,description:"暂无记录","image-size":60})):W("",!0)])),[[P,x.loading]]):G((c(),E(S,{key:0,data:x.records,stripe:"",style:{width:"100%"},class:"desktop-table"},{default:o(()=>[e(C,{prop:"category_name",label:"分类",width:"120"},{default:o(({row:l})=>[a("div",he,[a("span",De,v(p(l.category_id)),1),a("span",Ue,v(l.category_name),1)])]),_:1}),e(C,{prop:"amount",label:"金额",width:"140",align:"right"},{default:o(({row:l})=>[a("span",{class:J(["mono-number table-amount",l.type==="income"?"text-income":"text-expense"])},v(l.type==="income"?"+":"-")+"¥"+v(l.amount.toFixed(2)),3)]),_:1}),e(C,{prop:"user",label:"用户",width:"100",align:"center"},{default:o(({row:l})=>[e(T,{size:"small",effect:"plain"},{default:o(()=>[g(v(l.user),1)]),_:2},1024)]),_:1}),e(C,{prop:"note",label:"备注","show-overflow-tooltip":""}),e(C,{label:"操作",width:"120",align:"right"},{default:o(({row:l})=>[e(Y,null,{default:o(()=>[e(U,{icon:h(Q),size:"small",onClick:K=>d(l)},null,8,["icon","onClick"]),e(U,{icon:h(ee),size:"small",type:"danger",plain:"",onClick:K=>R(l)},null,8,["icon","onClick"])]),_:2},1024)]),_:1})]),_:1},8,["data"])),[[P,x.loading]]),e(O,{modelValue:n.value,"onUpdate:modelValue":s[5]||(s[5]=l=>n.value=l),title:"修改记录",width:"90%","max-width":"500px"},{footer:o(()=>[e(U,{onClick:s[4]||(s[4]=l=>n.value=!1)},{default:o(()=>[...s[8]||(s[8]=[g("取消",-1)])]),_:1}),e(U,{type:"primary",onClick:N},{default:o(()=>[...s[9]||(s[9]=[g("确定修改",-1)])]),_:1})]),default:o(()=>[e(q,{model:m,"label-position":"top"},{default:o(()=>[a("div",Ne,[e(r,{label:"金额"},{default:o(()=>[e(F,{modelValue:m.amount,"onUpdate:modelValue":s[0]||(s[0]=l=>m.amount=l),precision:2,step:10,style:{width:"100%"}},null,8,["modelValue"])]),_:1}),e(r,{label:"分类"},{default:o(()=>[e(t,{modelValue:m.category_id,"onUpdate:modelValue":s[1]||(s[1]=l=>m.category_id=l),style:{width:"100%"}},{default:o(()=>[(c(!0),y(M,null,L(x.categories.filter(l=>l.type===m.type),l=>(c(),E(u,{key:l.id,label:l.name,value:l.id},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),e(r,{label:"用户"},{default:o(()=>[e(t,{modelValue:m.user,"onUpdate:modelValue":s[2]||(s[2]=l=>m.user=l),style:{width:"100%"}},{default:o(()=>[(c(!0),y(M,null,L(x.users,l=>(c(),E(u,{key:l.id,label:l.name,value:l.name},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),e(r,{label:"备注"},{default:o(()=>[e($,{modelValue:m.note,"onUpdate:modelValue":s[3]||(s[3]=l=>m.note=l),clearable:""},null,8,["modelValue"])]),_:1})])]),_:1},8,["model"])]),_:1},8,["modelValue"])])}}},Ke=X(Se,[["__scopeId","data-v-3db1c182"]]),je={class:"daily-input app-page"},Oe={class:"page-header"},Pe={class:"date-picker-section card page-section"},qe={class:"date-nav"},He={class:"date-display"},We={class:"page-section"},Xe={class:"records-container card"},Ze={class:"user-list"},Ge={class:"user-info-display"},Je={class:"user-avatar-small"},Qe={class:"user-name-text"},et={class:"user-actions"},tt={class:"add-user-row"},lt={__name:"DailyInput",setup(x){const w=me(),b=z([]),B=pe(),k=z(B),n=z(!1),m=z(""),D=z(null),p=z(""),d=z(null);function R(u){k.value=_e(k.value,u),V()}function N(){k.value=B,V()}async function V(){await w.fetchByDate(k.value)}async function s(u){try{await w.addRecord(u),_.success("添加成功")}catch(t){_.error(t.message)}}async function C(u){try{await w.updateRecord(u.id,u),_.success("修改成功")}catch(t){_.error(t.message)}}async function T(u){try{await w.deleteRecord(u),_.success("删除成功")}catch(t){_.error(t.message)}}function U(){m.value="",D.value=null,n.value=!0}async function Y(){const u=m.value.trim();if(!u)return _.warning("请输入用户名");try{await I.create(u),m.value="",b.value=await I.getAll(),_.success("用户已添加")}catch(t){_.error(t.message)}}function S(u){D.value=u.id,p.value=u.name,ie(()=>{var t;(t=d.value)==null||t.focus()})}function A(){D.value=null,p.value=""}async function F(u){const t=p.value.trim();if(!t)return _.warning("用户名不能为空");if(t===u.name){A();return}try{await I.rename(u.id,t),b.value=await I.getAll(),await V(),A(),_.success("改名成功")}catch($){_.error($.message)}}async function r(u){try{await oe.confirm(`确定删除用户「${u.name}」?(该用户不能有记录)`,"确认删除",{type:"warning",confirmButtonText:"删除",cancelButtonText:"取消"}),await I.delete(u.id),b.value=await I.getAll(),_.success("用户已删除")}catch(t){t!=="cancel"&&_.error(t.message||String(t))}}return le(async()=>{const[,u]=await Promise.all([w.fetchCategories(),I.getAll()]);b.value=u,await V()}),(u,t)=>{const $=i("el-button"),q=i("el-date-picker"),O=i("el-input"),P=i("el-empty"),l=i("el-icon"),K=i("el-dialog");return c(),y("div",je,[a("div",Oe,[t[7]||(t[7]=a("h2",{class:"page-title"},"日常记账",-1)),e($,{text:"",type:"primary",onClick:U,icon:h(de)},{default:o(()=>[...t[6]||(t[6]=[g(" 管理用户 ",-1)])]),_:1},8,["icon"])]),a("div",Pe,[a("div",qe,[e($,{icon:h(re),circle:"",onClick:t[0]||(t[0]=f=>R(-1)),class:"nav-btn"},null,8,["icon"]),a("div",He,[e(q,{modelValue:k.value,"onUpdate:modelValue":t[1]||(t[1]=f=>k.value=f),type:"date",format:"YYYY年MM月DD日","value-format":"YYYY-MM-DD",clearable:!1,onChange:V,class:"custom-date-picker"},null,8,["modelValue"])]),e($,{icon:h(ue),circle:"",onClick:t[2]||(t[2]=f=>R(1)),class:"nav-btn"},null,8,["icon"]),e($,{onClick:N,round:"",size:"small",type:"primary",plain:"",class:"today-btn"},{default:o(()=>[...t[8]||(t[8]=[g("今天",-1)])]),_:1})])]),a("div",We,[e(xe,{categories:h(w).categories,users:b.value,date:k.value,onSubmit:s},null,8,["categories","users","date"])]),a("div",Xe,[t[9]||(t[9]=a("div",{class:"section-title-small"},"今日记录",-1)),e(Ke,{records:h(w).records,categories:h(w).categories,users:b.value,loading:h(w).loading,onEdit:C,onDelete:T},null,8,["records","categories","users","loading"])]),e(K,{modelValue:n.value,"onUpdate:modelValue":t[5]||(t[5]=f=>n.value=f),title:"用户管理",width:"90%","max-width":"420px",class:"modern-dialog","close-on-click-modal":!1},{default:o(()=>[a("div",Ze,[(c(!0),y(M,null,L(b.value,f=>(c(),y("div",{key:f.id,class:"user-row"},[D.value===f.id?(c(),y(M,{key:0},[e(O,{modelValue:p.value,"onUpdate:modelValue":t[3]||(t[3]=j=>p.value=j),size:"default",style:{flex:"1"},ref_for:!0,ref_key:"editInputRef",ref:d,onKeyup:[H(j=>F(f),["enter"]),H(A,["esc"])]},null,8,["modelValue","onKeyup"]),e($,{type:"primary",onClick:j=>F(f)},{default:o(()=>[...t[10]||(t[10]=[g("保存",-1)])]),_:1},8,["onClick"]),e($,{onClick:A},{default:o(()=>[...t[11]||(t[11]=[g("取消",-1)])]),_:1})],64)):(c(),y(M,{key:1},[a("div",Ge,[a("div",Je,v(f.name.charAt(0).toUpperCase()),1),a("span",Qe,v(f.name),1)]),a("div",et,[e($,{size:"small",plain:"",onClick:j=>S(f)},{default:o(()=>[...t[12]||(t[12]=[g("改名",-1)])]),_:1},8,["onClick"]),e($,{size:"small",type:"danger",plain:"",onClick:j=>r(f)},{default:o(()=>[...t[13]||(t[13]=[g("删除",-1)])]),_:1},8,["onClick"])])],64))]))),128)),b.value.length===0?(c(),E(P,{key:0,description:"暂无用户","image-size":60})):W("",!0)]),t[15]||(t[15]=a("div",{class:"divider"},null,-1)),a("div",tt,[e(O,{modelValue:m.value,"onUpdate:modelValue":t[4]||(t[4]=f=>m.value=f),placeholder:"输入新用户名...",size:"default",style:{flex:"1"},clearable:"",onKeyup:H(Y,["enter"])},{prefix:o(()=>[e(l,null,{default:o(()=>[e(h(ce))]),_:1})]),_:1},8,["modelValue"]),e($,{type:"primary",onClick:Y},{default:o(()=>[...t[14]||(t[14]=[g("添加用户",-1)])]),_:1})])]),_:1},8,["modelValue"])])}}},dt=X(lt,[["__scopeId","data-v-295aaf08"]]);export{dt as default};
|