chore: 前端dist移出git,改为本地build直传服务器

This commit is contained in:
li
2026-03-14 19:20:48 +08:00
parent 94b46611d3
commit 54d2f617bb
108 changed files with 42 additions and 212 deletions
+41 -10
View File
@@ -1,26 +1,57 @@
#!/bin/bash
# ─────────────────────────────────────────────────────────────
# 月子 SaaS 一键部署
# 用法:./deploy.sh [commit message]
#
# 流程:
# 1. git commit + push(源码,不含 dist
# 2. 本地构建前端
# 3. rsync 直接上传 dist 到服务器
# 4. SSH 触发后端 git pull + migrate + cache
# ─────────────────────────────────────────────────────────────
set -e
SERVER="root@82.157.47.215"
SERVER_PASS="Aiying88"
COMMIT_MSG="${1:-deploy: update}"
ROOT_DIR="$(cd "$(dirname "$0")" && pwd)"
FRONTEND_DIR="$ROOT_DIR/frontend"
REMOTE_FRONTEND="/var/www/saas/frontend"
REMOTE_BACKEND_SCRIPT="/var/www/saas/deploy-backend.sh"
echo "▶ 构建前端..."
cd "$ROOT_DIR/frontend"
npm run build
GREEN='\033[0;32m'; YELLOW='\033[1;33m'; NC='\033[0m'
step() { echo -e "${YELLOW}==> $1${NC}"; }
ok() { echo -e "${GREEN}$1${NC}"; }
echo "▶ 提交变更(含 dist..."
# ── 1. 提交并推送源码 ─────────────────────────────────────────
step "提交源码到 git..."
cd "$ROOT_DIR"
git add -A
git diff --cached --quiet && echo " 无变更,跳过提交" || git commit -m "$COMMIT_MSG"
echo "▶ 推送到远程..."
if git diff --cached --quiet; then
echo " 无源码变更,跳过提交"
else
git commit -m "$COMMIT_MSG"
fi
git push origin main
ok "源码已推送"
echo "▶ 通知服务器更新..."
ssh "$SERVER" '/var/www/saas/deploy.sh'
# ── 2. 本地构建前端 ───────────────────────────────────────────
step "构建前端..."
cd "$FRONTEND_DIR"
npm run build
ok "前端构建完成"
# ── 3. 上传 dist 到服务器 ─────────────────────────────────────
step "上传 dist 到服务器..."
sshpass -p "$SERVER_PASS" rsync -az --delete \
"$FRONTEND_DIR/dist/" \
"$SERVER:$REMOTE_FRONTEND/"
ok "前端文件已同步"
# ── 4. 触发后端同步 ───────────────────────────────────────────
step "同步后端(git pull + migrate + cache..."
sshpass -p "$SERVER_PASS" ssh "$SERVER" "bash $REMOTE_BACKEND_SCRIPT"
ok "后端同步完成"
echo ""
echo "✅ 部署完成!"
echo -e "${GREEN}🎉 部署完成!${NC}"
+1 -1
View File
@@ -8,7 +8,7 @@ pnpm-debug.log*
lerna-debug.log*
node_modules
# dist — tracked for server deployment (no Node.js on server)
dist
dist-ssr
*.local
-1
View File
@@ -1 +0,0 @@
import{$ as e,L as t,V as n,_ as r,_t as i,p as a,u as o,v as s}from"./runtime-core.esm-bundler-DbRZbT7v.js";import{i as c,t as l}from"./index-Mgun2LFs.js";var u={class:`error-page flex-center flex-col`},d=l({__name:`404`,setup(l){let d=c();return(c,l)=>{let f=n(`el-button`);return t(),a(`div`,u,[l[2]||=o(`div`,{class:`code`},`404`,-1),l[3]||=o(`div`,{class:`message`},`抱歉,您访问的页面不存在`,-1),s(f,{type:`primary`,onClick:l[0]||=e=>i(d).push(`/`)},{default:e(()=>[...l[1]||=[r(`返回首页`,-1)]]),_:1})])}}},[[`__scopeId`,`data-v-58ff5114`]]);export{d as default};
-1
View File
@@ -1 +0,0 @@
.error-page[data-v-58ff5114]{gap:16px;height:100vh}.code[data-v-58ff5114]{color:var(--color-primary);font-size:120px;font-weight:700;line-height:1}.message[data-v-58ff5114]{color:var(--color-text-secondary);font-size:18px}
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
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
File diff suppressed because one or more lines are too long
-1
View File
@@ -1 +0,0 @@
import{t as e}from"./request-DG5cMCYw.js";var t={getList:t=>e.get(`/care/profiles`,{params:t}),getDetail:t=>e.get(`/care/profiles/${t}`),create:t=>e.post(`/care/profiles`,t),update:(t,n)=>e.put(`/care/profiles/${t}`,n),delete:t=>e.delete(`/care/profiles/${t}`)},n={getList:t=>e.get(`/care/plans`,{params:t}),getDetail:t=>e.get(`/care/plans/${t}`),create:t=>e.post(`/care/plans`,t),update:(t,n)=>e.put(`/care/plans/${t}`,n),delete:t=>e.delete(`/care/plans/${t}`)},r={getList:t=>e.get(`/care/records`,{params:t}),getDetail:t=>e.get(`/care/records/${t}`),create:t=>e.post(`/care/records`,t),update:(t,n)=>e.put(`/care/records/${t}`,n),delete:t=>e.delete(`/care/records/${t}`)},i={getList:t=>e.get(`/care/exceptions`,{params:t}),getDetail:t=>e.get(`/care/exceptions/${t}`),create:t=>e.post(`/care/exceptions`,t),update:(t,n)=>e.put(`/care/exceptions/${t}`,n),handle:(t,n)=>e.put(`/care/exceptions/${t}/handle`,n),resolve:(t,n)=>e.put(`/care/exceptions/${t}/handle`,n)},a={getList:t=>e.get(`/care/health-metrics`,{params:t}),create:t=>e.post(`/care/health-metrics`,t)};export{a,r as i,n,t as r,i as t};
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
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
-1
View File
@@ -1 +0,0 @@
import{t as e}from"./request-DG5cMCYw.js";var t={getList:t=>e.get(`/crm/channels`,{params:t}),getDetail:t=>e.get(`/crm/channels/${t}`),create:t=>e.post(`/crm/channels`,t),update:(t,n)=>e.put(`/crm/channels/${t}`,n),delete:t=>e.delete(`/crm/channels/${t}`)},n={getList:t=>e.get(`/crm/leads`,{params:t}),getDetail:t=>e.get(`/crm/leads/${t}`),create:t=>e.post(`/crm/leads`,t),update:(t,n)=>e.put(`/crm/leads/${t}`,n),delete:t=>e.delete(`/crm/leads/${t}`),follow:(t,n)=>e.post(`/crm/leads/${t}/follow`,n),assign:(t,n)=>e.put(`/crm/leads/${t}/assign`,n)},r={getList:t=>e.get(`/crm/customers`,{params:t}),getDetail:t=>e.get(`/crm/customers/${t}`),create:t=>e.post(`/crm/customers`,t),update:(t,n)=>e.put(`/crm/customers/${t}`,n),delete:t=>e.delete(`/crm/customers/${t}`)},i={getList:t=>e.get(`/crm/contracts`,{params:t}),getDetail:t=>e.get(`/crm/contracts/${t}`),create:t=>e.post(`/crm/contracts`,t),update:(t,n)=>e.put(`/crm/contracts/${t}`,n),delete:t=>e.delete(`/crm/contracts/${t}`),audit:(t,n)=>e.put(`/crm/contracts/${t}/audit`,n)},a={getList:t=>e.get(`/crm/questionnaires`,{params:t}),getDetail:t=>e.get(`/crm/questionnaires/${t}`),create:t=>e.post(`/crm/questionnaires`,t),update:(t,n)=>e.put(`/crm/questionnaires/${t}`,n),delete:t=>e.delete(`/crm/questionnaires/${t}`),submitAnswer:t=>e.post(`/crm/questionnaire-answers`,t),getAnswers:t=>e.get(`/crm/questionnaire-answers`,{params:t})},o={getList:t=>e.get(`/crm/complaints`,{params:t}),getDetail:t=>e.get(`/crm/complaints/${t}`),create:t=>e.post(`/crm/complaints`,t),update:(t,n)=>e.put(`/crm/complaints/${t}`,n),delete:t=>e.delete(`/crm/complaints/${t}`),handle:(t,n)=>e.put(`/crm/complaints/${t}/handle`,n)};export{n as a,r as i,o as n,a as o,i as r,t};
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
-1
View File
@@ -1 +0,0 @@
import{L as e,P as t,Vt as n,Wt as r,_ as i,_t as a,g as o,i as s,l as c,lt as l,p as u,u as d,v as f,z as p}from"./runtime-core.esm-bundler-DbRZbT7v.js";import{i as m}from"./index-Mgun2LFs.js";import"./request-DG5cMCYw.js";import{t as h}from"./user-MeQHut5G.js";import{t as g}from"./iconify-f5JHLb1p.js";var _={class:`p-6 space-y-5`},v={class:`bg-gradient-to-r from-rose-50 to-orange-50 rounded-3xl p-8 flex items-center justify-between border border-rose-100`},y={class:`text-2xl font-bold text-gray-800 mb-1`},b={class:`text-gray-400 text-sm`},x={class:`grid grid-cols-4 gap-5`},S={class:`flex items-center gap-4 mb-4`},C={class:`text-gray-400 text-xs`},w={class:`text-2xl font-bold text-gray-800`},T={class:`bg-white rounded-3xl border border-gray-100 shadow-sm p-6`},E={class:`grid grid-cols-6 gap-4`},D=[`onClick`],O={class:`text-xs font-medium text-gray-600 group-hover:text-rose-500`},k={__name:`index`,setup(k){let A=h(),j=m(),M=c(()=>A.userInfo?.name||A.userInfo?.username||`用户`),N=c(()=>{let e=new Date;return`${e.getFullYear()}${e.getMonth()+1}${e.getDate()}${[`星期日`,`星期一`,`星期二`,`星期三`,`星期四`,`星期五`,`星期六`][e.getDay()]}`}),P=l([{title:`今日预约客户`,value:`--`,trend:`+12% 较昨日`,trendUp:!0,icon:`solar:users-group-rounded-bold-duotone`,iconBg:`bg-rose-50`,iconColor:`text-rose-500`},{title:`当前入驻率`,value:`--`,trend:`良好运营状态`,trendUp:!0,icon:`solar:home-bold-duotone`,iconBg:`bg-blue-50`,iconColor:`text-blue-500`},{title:`今日护理评分`,value:`--`,trend:`历史最高纪录`,trendUp:!0,icon:`solar:heart-pulse-bold-duotone`,iconBg:`bg-amber-50`,iconColor:`text-amber-500`},{title:`本月营收(预计)`,value:`--`,trend:`+8.4% 较上月`,trendUp:!0,icon:`solar:wad-of-money-bold-duotone`,iconBg:`bg-teal-50`,iconColor:`text-teal-500`}]),F=[{label:`新增客户`,icon:`solar:user-plus-bold-duotone`,path:`/crm/customers`},{label:`办理入住`,icon:`solar:home-bold-duotone`,path:`/room/reservations`},{label:`办理退住`,icon:`solar:door-open-bold-duotone`,path:`/room/rooms`},{label:`新建工单`,icon:`solar:document-add-bold-duotone`,path:`/service/orders`},{label:`今日月子餐`,icon:`solar:cup-bold`,path:`/meal/daily-plans`},{label:`护理记录`,icon:`solar:heart-pulse-bold-duotone`,path:`/care/records`}];return t(()=>{}),(t,c)=>(e(),u(`div`,_,[d(`div`,v,[d(`div`,null,[d(`h2`,y,`你好,`+r(M.value)+` 👋`,1),d(`p`,b,r(N.value)+`,祝您工作愉快!`,1)]),f(a(g),{icon:`solar:heart-bold`,class:`text-8xl text-rose-200`})]),d(`div`,x,[(e(!0),u(s,null,p(P.value,t=>(e(),u(`div`,{key:t.title,class:`bg-white rounded-3xl border border-gray-100 shadow-sm p-6`},[d(`div`,S,[d(`div`,{class:n([`w-12 h-12 rounded-2xl flex items-center justify-center text-2xl`,[t.iconBg,t.iconColor]])},[f(a(g),{icon:t.icon},null,8,[`icon`])],2),d(`div`,null,[d(`p`,C,r(t.title),1),d(`p`,w,r(t.value),1)])]),d(`div`,{class:n([`text-xs font-bold flex items-center gap-1`,t.trendUp?`text-green-500`:`text-red-400`])},[f(a(g),{icon:t.trendUp?`solar:double-alt-arrow-up-bold-duotone`:`solar:double-alt-arrow-down-bold-duotone`},null,8,[`icon`]),i(` `+r(t.trend),1)],2)]))),128))]),d(`div`,T,[c[0]||=d(`h3`,{class:`font-bold text-gray-800 mb-5 flex items-center gap-2`},[d(`span`,{class:`w-1 h-5 bg-rose-500 rounded-full inline-block`}),i(` 快捷入口 `)],-1),d(`div`,E,[(e(),u(s,null,p(F,e=>d(`button`,{key:e.label,class:`flex flex-col items-center justify-center gap-3 p-5 rounded-2xl bg-gray-50 hover:bg-rose-50 hover:text-rose-500 transition-all duration-150 group`,onClick:t=>a(j).push(e.path)},[f(a(g),{icon:e.icon,class:`text-3xl text-gray-400 group-hover:text-rose-500 transition-colors`},null,8,[`icon`]),d(`span`,O,r(e.label),1)],8,D)),64))])]),c[1]||=o(`<div class="bg-white rounded-3xl border border-gray-100 shadow-sm p-6"><h3 class="font-bold text-gray-800 mb-4 flex items-center gap-2"><span class="w-1 h-5 bg-rose-500 rounded-full inline-block"></span> 系统信息 </h3><div class="grid grid-cols-3 gap-4"><div class="flex gap-3 text-sm"><span class="text-gray-400 w-20 flex-shrink-0">系统名称</span><span class="text-gray-700 font-medium">宫中有喜月子会所综合管理系统</span></div><div class="flex gap-3 text-sm"><span class="text-gray-400 w-20 flex-shrink-0">当前版本</span><span class="text-gray-700 font-medium">v1.0.0</span></div><div class="flex gap-3 text-sm"><span class="text-gray-400 w-20 flex-shrink-0">技术支持</span><span class="text-gray-700 font-medium">宫中有喜运营团队</span></div></div></div>`,1)]))}};export{k as default};
File diff suppressed because one or more lines are too long
-1
View File
@@ -1 +0,0 @@
.dict-page[data-v-aa3d11a2]{flex-direction:column;display:flex}.dict-layout[data-v-aa3d11a2]{flex:1;gap:16px;min-height:0;display:flex}.dict-left[data-v-aa3d11a2]{flex-direction:column;flex-shrink:0;gap:12px;width:280px;height:fit-content;max-height:calc(100vh - 140px);display:flex;overflow:hidden}.dict-right[data-v-aa3d11a2]{flex:1;min-width:0}.panel-header[data-v-aa3d11a2]{justify-content:space-between;align-items:center;display:flex}.panel-title[data-v-aa3d11a2]{color:var(--color-text-primary);font-size:15px;font-weight:600}.type-search[data-v-aa3d11a2]{margin-bottom:4px}.type-list[data-v-aa3d11a2]{flex:1;min-height:100px;overflow-y:auto}.type-item[data-v-aa3d11a2]{cursor:pointer;border-radius:6px;justify-content:space-between;align-items:center;padding:10px 12px;transition:background .15s;display:flex}.type-item[data-v-aa3d11a2]:hover{background:var(--color-primary-lighter)}.type-item:hover .type-item-actions[data-v-aa3d11a2]{opacity:1}.type-item.active[data-v-aa3d11a2]{background:var(--color-primary-lighter)}.type-item.active .type-name[data-v-aa3d11a2]{color:var(--color-primary-dark);font-weight:600}.type-item-info[data-v-aa3d11a2]{flex:1;min-width:0}.type-name[data-v-aa3d11a2]{color:var(--color-text-primary);white-space:nowrap;text-overflow:ellipsis;font-size:14px;overflow:hidden}.type-code[data-v-aa3d11a2]{color:var(--color-text-placeholder);margin-top:2px;font-size:11px}.type-item-actions[data-v-aa3d11a2]{opacity:0;gap:6px;transition:opacity .15s;display:flex}.action-icon[data-v-aa3d11a2]{cursor:pointer;color:var(--color-text-secondary);border-radius:3px;padding:2px;font-size:14px;transition:color .15s}.action-icon[data-v-aa3d11a2]:hover{color:var(--color-primary)}.action-icon.danger[data-v-aa3d11a2]:hover{color:var(--color-danger)}.form-tip[data-v-aa3d11a2]{color:var(--color-text-secondary);font-size:12px}
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
-1
View File
@@ -1 +0,0 @@
[data-v-42007c88] .row-today-highlight{background-color:#fff1f2!important}[data-v-42007c88] .row-today-highlight:hover>td{background-color:#ffe4e6!important}
File diff suppressed because one or more lines are too long
-1
View File
@@ -1 +0,0 @@
.text-muted[data-v-ebc24859]{color:var(--color-text-secondary);font-size:13px}
File diff suppressed because one or more lines are too long
-1
View File
@@ -1 +0,0 @@
import{t as e}from"./request-DG5cMCYw.js";var t={getList:t=>e.get(`/finance/categories`,{params:t}),getDetail:t=>e.get(`/finance/categories/${t}`),create:t=>e.post(`/finance/categories`,t),update:(t,n)=>e.put(`/finance/categories/${t}`,n),delete:t=>e.delete(`/finance/categories/${t}`)},n={getList:t=>e.get(`/finance/records`,{params:t}),getDetail:t=>e.get(`/finance/records/${t}`),create:t=>e.post(`/finance/records`,t),update:(t,n)=>e.put(`/finance/records/${t}`,n),delete:t=>e.delete(`/finance/records/${t}`),audit:(t,n)=>e.put(`/finance/records/${t}/audit`,n)},r={getList:t=>e.get(`/finance/accounts`,{params:t}),recharge:t=>e.post(`/finance/accounts/recharge`,t)},i={getList:t=>e.get(`/finance/transactions`,{params:t})},a={getList:t=>e.get(`/finance/prepaid-cards`,{params:t}),getDetail:t=>e.get(`/finance/prepaid-cards/${t}`),create:t=>e.post(`/finance/prepaid-cards`,t),update:(t,n)=>e.put(`/finance/prepaid-cards/${t}`,n),delete:t=>e.delete(`/finance/prepaid-cards/${t}`)},o={getList:t=>e.get(`/finance/invoices`,{params:t}),getDetail:t=>e.get(`/finance/invoices/${t}`),create:t=>e.post(`/finance/invoices`,t),update:(t,n)=>e.put(`/finance/invoices/${t}`,n),delete:t=>e.delete(`/finance/invoices/${t}`),issue:t=>e.put(`/finance/invoices/${t}/issue`)},s={getList:t=>e.get(`/finance/records`,{params:{type:`payment`,...t}}),create:t=>e.post(`/finance/records`,t),audit:(t,n)=>e.put(`/finance/records/${t}/audit`,n)};export{o as a,n as i,r as n,s as o,t as r,a as s,i as t};
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
-1
View File
@@ -1 +0,0 @@
import{t as e}from"./request-DG5cMCYw.js";var t={getList:t=>e.get(`/hr/profiles`,{params:t}),getDetail:t=>e.get(`/hr/profiles/${t}`),create:t=>e.post(`/hr/profiles`,t),update:(t,n)=>e.put(`/hr/profiles/${t}`,n),delete:t=>e.delete(`/hr/profiles/${t}`)},n={getList:t=>e.get(`/hr/schedules`,{params:t}),create:t=>e.post(`/hr/schedules`,t)},r={getList:t=>e.get(`/hr/attendances`,{params:t}),create:t=>e.post(`/hr/attendances`,t),clockIn:()=>e.post(`/hr/attendances/clock-in`),clockOut:()=>e.post(`/hr/attendances/clock-out`)},i={getList:t=>e.get(`/hr/leaves`,{params:t}),getDetail:t=>e.get(`/hr/leaves/${t}`),create:t=>e.post(`/hr/leaves`,t),update:(t,n)=>e.put(`/hr/leaves/${t}`,n),delete:t=>e.delete(`/hr/leaves/${t}`),audit:(t,n)=>e.put(`/hr/leaves/${t}/audit`,n)},a={getList:t=>e.get(`/hr/salaries`,{params:t}),getDetail:t=>e.get(`/hr/salaries/${t}`),create:t=>e.post(`/hr/salaries`,t),update:(t,n)=>e.put(`/hr/salaries/${t}`,n),delete:t=>e.delete(`/hr/salaries/${t}`),confirm:t=>e.put(`/hr/salaries/${t}/confirm`),pay:t=>e.put(`/hr/salaries/${t}/pay`)};export{n as a,a as i,t as n,i as r,r as t};
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
-1
View File
@@ -1 +0,0 @@
import{t as e}from"./request-DG5cMCYw.js";var t={getList:t=>e.get(`/inventory/warehouses`,{params:t}),getDetail:t=>e.get(`/inventory/warehouses/${t}`),create:t=>e.post(`/inventory/warehouses`,t),update:(t,n)=>e.put(`/inventory/warehouses/${t}`,n),delete:t=>e.delete(`/inventory/warehouses/${t}`)},n={getList:t=>e.get(`/inventory/suppliers`,{params:t}),getDetail:t=>e.get(`/inventory/suppliers/${t}`),create:t=>e.post(`/inventory/suppliers`,t),update:(t,n)=>e.put(`/inventory/suppliers/${t}`,n),delete:t=>e.delete(`/inventory/suppliers/${t}`)},r={getList:t=>e.get(`/inventory/materials`,{params:t}),getDetail:t=>e.get(`/inventory/materials/${t}`),create:t=>e.post(`/inventory/materials`,t),update:(t,n)=>e.put(`/inventory/materials/${t}`,n),delete:t=>e.delete(`/inventory/materials/${t}`)},i={getList:t=>e.get(`/inventory/purchase-orders`,{params:t}),getDetail:t=>e.get(`/inventory/purchase-orders/${t}`),create:t=>e.post(`/inventory/purchase-orders`,t),update:(t,n)=>e.put(`/inventory/purchase-orders/${t}`,n),delete:t=>e.delete(`/inventory/purchase-orders/${t}`),audit:(t,n)=>e.put(`/inventory/purchase-orders/${t}/audit`,n)},a={getList:t=>e.get(`/inventory/stock-movements`,{params:t}),getDetail:t=>e.get(`/inventory/stock-movements/${t}`),create:t=>e.post(`/inventory/stock-movements`,t),confirm:t=>e.put(`/inventory/stock-movements/${t}/confirm`)},o={getList:t=>e.get(`/inventory/stock`,{params:t}),export:t=>e.get(`/inventory/stock/export`,{params:t,responseType:`blob`})},s={getList:t=>e.get(`/inventory/transfers`,{params:t}),getDetail:t=>e.get(`/inventory/transfers/${t}`),create:t=>e.post(`/inventory/transfers`,t),confirm:t=>e.put(`/inventory/transfers/${t}/confirm`),cancel:t=>e.put(`/inventory/transfers/${t}/cancel`)},c={getList:t=>e.get(`/inventory/checks`,{params:t}),getDetail:t=>e.get(`/inventory/checks/${t}`),create:t=>e.post(`/inventory/checks`,t),complete:(t,n)=>e.put(`/inventory/checks/${t}/complete`,n)};export{a,t as c,o as i,r as n,n as o,i as r,s,c as t};
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
-1
View File
@@ -1 +0,0 @@
import{t as e}from"./request-DG5cMCYw.js";var t={getList:t=>e.get(`/kb/categories`,{params:t}),getDetail:t=>e.get(`/kb/categories/${t}`),create:t=>e.post(`/kb/categories`,t),update:(t,n)=>e.put(`/kb/categories/${t}`,n),delete:t=>e.delete(`/kb/categories/${t}`)},n={getList:t=>e.get(`/kb/articles`,{params:t}),getDetail:t=>e.get(`/kb/articles/${t}`),create:t=>e.post(`/kb/articles`,t),update:(t,n)=>e.put(`/kb/articles/${t}`,n),delete:t=>e.delete(`/kb/articles/${t}`),publish:t=>e.put(`/kb/articles/${t}/publish`),offline:t=>e.put(`/kb/articles/${t}/offline`)};export{t as n,n as t};
-1
View File
@@ -1 +0,0 @@
.fade-slide-enter-active,.fade-slide-leave-active{transition:opacity .15s,transform .15s}.fade-slide-enter-from{opacity:0;transform:translateY(6px)}.fade-slide-leave-to{opacity:0;transform:translateY(-6px)}
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
-1
View File
@@ -1 +0,0 @@
import{$ as e,L as t,V as n,Wt as r,_ as i,_t as a,lt as o,p as s,st as c,u as l,v as u}from"./runtime-core.esm-bundler-DbRZbT7v.js";import{i as d,r as f,s as p}from"./index-Mgun2LFs.js";import"./request-DG5cMCYw.js";import{t as m}from"./user-MeQHut5G.js";import{t as h}from"./iconify-f5JHLb1p.js";var g={class:`min-h-screen flex items-center justify-center bg-rose-50 relative overflow-hidden`},_={class:`relative z-10 w-[420px] bg-white rounded-3xl p-12 shadow-2xl text-center`},v={class:`flex justify-center mb-6`},y={class:`w-20 h-20 bg-rose-500 rounded-2xl flex items-center justify-center text-white shadow-lg`},b={class:`text-center mt-2 text-sm text-gray-400`},x={class:`text-xs text-gray-300 mt-4`},S={__name:`index`,setup(S){let C=d(),w=f(),T=m(),E=o(null),D=o(!1),O=c({username:``,password:``}),k={username:[{required:!0,message:`请输入用户名`,trigger:`blur`},{min:2,max:50,message:`用户名长度为 2-50 个字符`,trigger:`blur`}],password:[{required:!0,message:`请输入密码`,trigger:`blur`},{min:6,message:`密码长度不少于 6 位`,trigger:`blur`}]};async function A(){if(E.value){try{await E.value.validate()}catch{return}D.value=!0;try{await T.login({username:O.username,password:O.password});let e=w.query.redirect||`/`;await C.push(e),p.success(`登录成功,欢迎回来!`)}catch{}finally{D.value=!1}}}function j(e){e.key===`Enter`&&A()}return(o,c)=>{let d=n(`el-input`),f=n(`el-form-item`),p=n(`el-button`),m=n(`el-form`),S=n(`router-link`);return t(),s(`div`,g,[c[6]||=l(`div`,{class:`absolute w-96 h-96 rounded-full opacity-20 pointer-events-none`,style:{background:`radial-gradient(circle, #f43f5e, transparent)`,top:`-120px`,right:`-80px`}},null,-1),c[7]||=l(`div`,{class:`absolute w-72 h-72 rounded-full opacity-20 pointer-events-none`,style:{background:`radial-gradient(circle, #fb7185, transparent)`,bottom:`-80px`,left:`-60px`}},null,-1),l(`div`,_,[l(`div`,v,[l(`div`,y,[u(a(h),{icon:`solar:heart-bold`,class:`text-4xl`})])]),c[4]||=l(`h1`,{class:`text-3xl font-bold text-gray-800 mb-2 tracking-widest`},`宫中有喜`,-1),c[5]||=l(`p`,{class:`text-gray-400 text-sm mb-8`},`月子会所综合管理系统`,-1),u(m,{ref_key:`formRef`,ref:E,model:O,rules:k,class:`text-left`,onKeydown:j},{default:e(()=>[u(f,{prop:`username`},{default:e(()=>[u(d,{modelValue:O.username,"onUpdate:modelValue":c[0]||=e=>O.username=e,placeholder:`请输入用户名`,size:`large`,"prefix-icon":`User`,autocomplete:`username`,clearable:``},null,8,[`modelValue`])]),_:1}),u(f,{prop:`password`},{default:e(()=>[u(d,{modelValue:O.password,"onUpdate:modelValue":c[1]||=e=>O.password=e,type:`password`,placeholder:`请输入密码`,size:`large`,"prefix-icon":`Lock`,autocomplete:`current-password`,"show-password":``,clearable:``},null,8,[`modelValue`])]),_:1}),u(f,null,{default:e(()=>[u(p,{type:`primary`,size:`large`,style:{width:`100%`,height:`48px`,"font-size":`16px`,"letter-spacing":`4px`,"border-radius":`12px`},loading:D.value,onClick:A},{default:e(()=>[i(r(D.value?`登录中...`:`登 录`),1)]),_:1},8,[`loading`])]),_:1})]),_:1},8,[`model`]),l(`div`,b,[c[3]||=i(` 还没有账号? `,-1),u(S,{to:`/register`,class:`text-blue-400 hover:text-blue-300 transition-colors`},{default:e(()=>[...c[2]||=[i(`申请注册`,-1)]]),_:1})]),l(`p`,x,`宫中有喜月子会所 © `+r(new Date().getFullYear()),1)])])}}};export{S as default};
-1
View File
@@ -1 +0,0 @@
.detail-section[data-v-648c01e9]{color:var(--color-text-secondary);border-bottom:1px solid var(--color-border);margin:16px 0 8px;padding-bottom:4px;font-size:13px;font-weight:600}.json-block[data-v-648c01e9]{border:1px solid var(--color-border);white-space:pre-wrap;word-break:break-all;background:#f8f9fa;border-radius:6px;max-height:200px;padding:12px;font-family:JetBrains Mono,Consolas,Courier New,monospace;font-size:12px;overflow:auto}.error-block[data-v-648c01e9]{color:var(--color-danger);background:#fff5f5;border-color:#ffd6d6}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
-1
View File
@@ -1 +0,0 @@
import{t as e}from"./request-DG5cMCYw.js";var t={getList:t=>e.get(`/meal/dishes`,{params:t}),getDetail:t=>e.get(`/meal/dishes/${t}`),create:t=>e.post(`/meal/dishes`,t),update:(t,n)=>e.put(`/meal/dishes/${t}`,n),delete:t=>e.delete(`/meal/dishes/${t}`)},n={getList:t=>e.get(`/meal/templates`,{params:t}),getDetail:t=>e.get(`/meal/templates/${t}`),create:t=>e.post(`/meal/templates`,t),update:(t,n)=>e.put(`/meal/templates/${t}`,n),delete:t=>e.delete(`/meal/templates/${t}`)},r={getList:t=>e.get(`/meal/daily-plans`,{params:t}),getDetail:t=>e.get(`/meal/daily-plans/${t}`),create:t=>e.post(`/meal/daily-plans`,t),update:(t,n)=>e.put(`/meal/daily-plans/${t}`,n),delete:t=>e.delete(`/meal/daily-plans/${t}`),deliver:t=>e.put(`/meal/daily-plans/${t}/deliver`),updateStatus:(t,n)=>e.put(`/meal/daily-plans/${t}/status`,n)},i={getList:t=>e.get(`/meal/reviews`,{params:t}),getDetail:t=>e.get(`/meal/reviews/${t}`),create:t=>e.post(`/meal/reviews`,t)};export{n as i,t as n,i as r,r as t};
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
-1
View File
@@ -1 +0,0 @@
import{t as e}from"./request-DG5cMCYw.js";var t={getList:t=>e.get(`/nanny/nannies`,{params:t}),getDetail:t=>e.get(`/nanny/nannies/${t}`),create:t=>e.post(`/nanny/nannies`,t),update:(t,n)=>e.put(`/nanny/nannies/${t}`,n),delete:t=>e.delete(`/nanny/nannies/${t}`)},n={getList:t=>e.get(`/nanny/orders`,{params:t}),getDetail:t=>e.get(`/nanny/orders/${t}`),create:t=>e.post(`/nanny/orders`,t),update:(t,n)=>e.put(`/nanny/orders/${t}`,n),delete:t=>e.delete(`/nanny/orders/${t}`)},r={getList:t=>e.get(`/nanny/schedules`,{params:t}),create:t=>e.post(`/nanny/schedules`,t)};export{n,r,t};
-1
View File
@@ -1 +0,0 @@
import{$ as e,H as t,L as n,P as r,V as i,Vt as a,Wt as o,_ as s,d as c,et 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{s as _,t as v}from"./index-Mgun2LFs.js";import"./request-DG5cMCYw.js";import{a as y}from"./office-B6vgiUI4.js";var b={class:`p-6 space-y-4`},x={class:`bg-white rounded-2xl border border-gray-100 shadow-sm p-4 flex items-center flex-wrap gap-3`},S={class:`bg-white rounded-2xl border border-gray-100 shadow-sm`},C={class:`flex items-center justify-between px-5 py-4 border-b border-gray-50`},w={class:`px-2`},T={key:1,class:`text-muted`},E={class:`px-5 py-3 border-t border-gray-50`},D=v({__name:`index`,setup(v){let D=d([]),O=d(0),k=d(!1),A=p({type:``,is_read:``}),j=p({page:1,per_page:20}),M={1:`系统`,2:`审批`,3:`待办`,4:`提醒`},N={1:``,2:`warning`,3:`danger`,4:`success`};async function P(){k.value=!0;try{let e=await y.getList({...A,...j});D.value=e.data?.list||e.data?.data||[],O.value=e.data?.total||0}finally{k.value=!1}}function F(){j.page=1,P()}function I(){Object.assign(A,{type:``,is_read:``}),F()}async function L(e){await y.markRead(e.id),_.success(`已标记为已读`),P()}async function R(){await y.markAllRead(),_.success(`全部标记为已读`),P()}function z(e){j.page=e,P()}function B(e){j.per_page=e,j.page=1,P()}return r(P),(r,d)=>{let p=i(`el-option`),_=i(`el-select`),v=i(`el-button`),y=i(`el-table-column`),P=i(`el-tag`),V=i(`el-table`),H=i(`el-pagination`),U=t(`loading`);return n(),f(`div`,b,[m(`div`,x,[h(_,{modelValue:A.type,"onUpdate:modelValue":d[0]||=e=>A.type=e,placeholder:`通知类型`,clearable:``,style:{width:`140px`}},{default:e(()=>[(n(),f(u,null,g(M,(e,t)=>h(p,{key:t,label:e,value:Number(t)},null,8,[`label`,`value`])),64))]),_:1},8,[`modelValue`]),h(_,{modelValue:A.is_read,"onUpdate:modelValue":d[1]||=e=>A.is_read=e,placeholder:`读取状态`,clearable:``,style:{width:`130px`}},{default:e(()=>[h(p,{label:`未读`,value:0}),h(p,{label:`已读`,value:1})]),_:1},8,[`modelValue`]),h(v,{type:`primary`,onClick:F},{default:e(()=>[...d[4]||=[s(`查询`,-1)]]),_:1}),h(v,{onClick:I},{default:e(()=>[...d[5]||=[s(`重置`,-1)]]),_:1})]),m(`div`,S,[m(`div`,C,[d[7]||=m(`div`,{class:`flex items-center gap-3`},[m(`span`,{class:`font-medium text-gray-700`},`通知列表`)],-1),h(v,{type:`primary`,onClick:R},{default:e(()=>[...d[6]||=[s(`全部标记已读`,-1)]]),_:1})]),m(`div`,w,[l((n(),c(V,{data:D.value,style:{width:`100%`}},{default:e(()=>[h(y,{prop:`title`,label:`标题`,"min-width":`180`}),h(y,{prop:`content`,label:`内容`,"min-width":`260`,"show-overflow-tooltip":``}),h(y,{label:`类型`,width:`90`,align:`center`},{default:e(({row:t})=>[h(P,{type:N[t.type],size:`small`},{default:e(()=>[s(o(M[t.type]||`-`),1)]),_:2},1032,[`type`])]),_:1}),h(y,{label:`状态`,width:`80`,align:`center`},{default:e(({row:e})=>[m(`span`,{class:a([`read-dot`,e.is_read?`read`:`unread`])},null,2),m(`span`,null,o(e.is_read?`已读`:`未读`),1)]),_:1}),h(y,{prop:`created_at`,label:`创建时间`,"min-width":`160`}),h(y,{label:`操作`,width:`120`,fixed:`right`,align:`center`},{default:e(({row:t})=>[t.is_read?(n(),f(`span`,T,`-`)):(n(),c(v,{key:0,size:`small`,type:`primary`,text:``,onClick:e=>L(t)},{default:e(()=>[...d[8]||=[s(`标记已读`,-1)]]),_:1},8,[`onClick`]))]),_:1})]),_:1},8,[`data`])),[[U,k.value]])]),m(`div`,E,[h(H,{"current-page":j.page,"onUpdate:currentPage":d[2]||=e=>j.page=e,"page-size":j.per_page,"onUpdate:pageSize":d[3]||=e=>j.per_page=e,total:O.value,"page-sizes":[10,20,50],layout:`total, sizes, prev, pager, next, jumper`,background:``,onCurrentChange:z,onSizeChange:B},null,8,[`current-page`,`page-size`,`total`])])])])}}},[[`__scopeId`,`data-v-0e888ba3`]]);export{D as default};
-1
View File
@@ -1 +0,0 @@
.read-dot[data-v-0e888ba3]{vertical-align:middle;border-radius:50%;width:8px;height:8px;margin-right:6px;display:inline-block}.read-dot.unread[data-v-0e888ba3]{background-color:#67c23a}.read-dot.read[data-v-0e888ba3]{background-color:#c0c4cc}.text-muted[data-v-0e888ba3]{color:var(--color-text-secondary);font-size:13px}
-1
View File
@@ -1 +0,0 @@
import{t as e}from"./request-DG5cMCYw.js";var t={getList:t=>e.get(`/office/approval-templates`,{params:t}),getDetail:t=>e.get(`/office/approval-templates/${t}`),create:t=>e.post(`/office/approval-templates`,t),update:(t,n)=>e.put(`/office/approval-templates/${t}`,n),delete:t=>e.delete(`/office/approval-templates/${t}`)},n={getList:t=>e.get(`/office/approvals`,{params:t}),getDetail:t=>e.get(`/office/approvals/${t}`),create:t=>e.post(`/office/approvals`,t),approve:(t,n)=>e.put(`/office/approvals/${t}/approve`,n),reject:(t,n)=>e.put(`/office/approvals/${t}/reject`,n),withdraw:t=>e.put(`/office/approvals/${t}/withdraw`)},r={getList:t=>e.get(`/office/announcements`,{params:t}),getDetail:t=>e.get(`/office/announcements/${t}`),create:t=>e.post(`/office/announcements`,t),update:(t,n)=>e.put(`/office/announcements/${t}`,n),delete:t=>e.delete(`/office/announcements/${t}`),publish:t=>e.put(`/office/announcements/${t}/publish`)},i={getList:t=>e.get(`/office/handovers`,{params:t}),create:t=>e.post(`/office/handovers`,t),confirm:t=>e.put(`/office/handovers/${t}/confirm`)},a={getList:t=>e.get(`/office/notifications`,{params:t}),markRead:t=>e.put(`/office/notifications/${t}/read`),markAllRead:()=>e.put(`/office/notifications/read-all`)};export{a,i,n,t as r,r as t};
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
-1
View File
@@ -1 +0,0 @@
.section-title[data-v-5c43fcd0]{color:var(--color-text-primary);border-left:3px solid var(--color-primary);padding-left:8px;font-size:16px;font-weight:600}.mt-16[data-v-5c43fcd0]{margin-top:16px}.overview-card[data-v-5c43fcd0]{margin-bottom:16px}.overview-card[data-v-5c43fcd0] .el-card__body{padding:20px}.card-inner[data-v-5c43fcd0]{align-items:center;gap:16px;display:flex}.card-icon-wrap[data-v-5c43fcd0]{border-radius:12px;flex-shrink:0;justify-content:center;align-items:center;width:56px;height:56px;display:flex}.card-icon-text[data-v-5c43fcd0]{font-size:22px;font-weight:700}.card-info[data-v-5c43fcd0]{flex:1;min-width:0}.card-label[data-v-5c43fcd0]{color:var(--color-text-secondary);margin-bottom:4px;font-size:13px}.card-value[data-v-5c43fcd0]{align-items:baseline;gap:4px;display:flex}.card-number[data-v-5c43fcd0]{font-size:28px;font-weight:700;line-height:1}.card-unit[data-v-5c43fcd0]{color:var(--color-text-secondary);font-size:13px}
-1
View File
@@ -1 +0,0 @@
import{$ as e,H as t,L as n,P as r,Ut as i,V as a,Wt as o,d as s,et as c,i as l,lt as u,p as d,u as f,v as p,z as m}from"./runtime-core.esm-bundler-DbRZbT7v.js";import{t as h}from"./index-Mgun2LFs.js";import"./request-DG5cMCYw.js";import{t as g}from"./report-B0fHHL3b.js";var _={class:`p-6 space-y-4`},v={class:`bg-white rounded-2xl border border-gray-100 shadow-sm p-5 mb-4 flex items-center gap-4`},y={class:`flex-1 min-w-0`},b={class:`text-sm text-gray-500 mb-1`},x={class:`flex items-baseline gap-1`},S={class:`text-sm text-gray-400`},C=h({__name:`index`,setup(h){let C=u(!1),w=u([{key:`customer_count`,title:`客户数`,value:`--`,unit:``,color:`#E8A87C`,bg:`#FBE8D5`},{key:`contract_amount`,title:`合同金额`,value:`--`,unit:``,color:`#67C23A`,bg:`#E8F5E1`},{key:`total_rooms`,title:`总房间数`,value:`--`,unit:``,color:`#409EFF`,bg:`#E0EFFF`},{key:`occupied_rooms`,title:`入住房间数`,value:`--`,unit:``,color:`#E6A23C`,bg:`#FDF0D6`},{key:`today_revenue`,title:`今日营收`,value:`--`,unit:``,color:`#F56C6C`,bg:`#FDE2E2`},{key:`month_revenue`,title:`月度营收`,value:`--`,unit:``,color:`#C97B5E`,bg:`#F9E8E0`}]);async function T(){C.value=!0;try{let e=(await g.overview()).data||{};w.value.forEach(t=>{e[t.key]!==void 0&&e[t.key]!==null&&(t.value=e[t.key])})}finally{C.value=!1}}return r(T),(r,u)=>{let h=a(`el-col`),g=a(`el-row`),T=t(`loading`);return c((n(),d(`div`,_,[u[0]||=f(`div`,{class:`flex items-center gap-2 mb-2`},[f(`span`,{class:`w-1 h-5 rounded bg-primary inline-block`,style:{background:`var(--color-primary)`}}),f(`span`,{class:`font-semibold text-base text-gray-800`},`经营概览`)],-1),p(g,{gutter:16},{default:e(()=>[(n(!0),d(l,null,m(w.value,t=>(n(),s(h,{key:t.key,xs:24,sm:12,md:8,lg:8,xl:4},{default:e(()=>[f(`div`,v,[f(`div`,{class:`w-14 h-14 rounded-xl flex items-center justify-center flex-shrink-0`,style:i({background:t.bg})},[f(`span`,{class:`text-2xl font-bold`,style:i({color:t.color})},o(t.title.charAt(0)),5)],4),f(`div`,y,[f(`div`,b,o(t.title),1),f(`div`,x,[f(`span`,{class:`text-3xl font-bold leading-none`,style:i({color:t.color})},o(t.value),5),f(`span`,S,o(t.unit),1)])])])]),_:2},1024))),128))]),_:1})])),[[T,C.value]])}}},[[`__scopeId`,`data-v-5c43fcd0`]]);export{C as default};
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
File diff suppressed because one or more lines are too long
-1
View File
@@ -1 +0,0 @@
var e=`modulepreload`,t=function(e){return`/`+e},n={},r=function(r,i,a){let o=Promise.resolve();if(i&&i.length>0){let r=document.getElementsByTagName(`link`),s=document.querySelector(`meta[property=csp-nonce]`),c=s?.nonce||s?.getAttribute(`nonce`);function l(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}o=l(i.map(i=>{if(i=t(i,a),i in n)return;n[i]=!0;let o=i.endsWith(`.css`),s=o?`[rel="stylesheet"]`:``;if(a)for(let e=r.length-1;e>=0;e--){let t=r[e];if(t.href===i&&(!o||t.rel===`stylesheet`))return}else if(document.querySelector(`link[href="${i}"]${s}`))return;let l=document.createElement(`link`);if(l.rel=o?`stylesheet`:e,o||(l.as=`script`),l.crossOrigin=``,l.href=i,c&&l.setAttribute(`nonce`,c),document.head.appendChild(l),o)return new Promise((e,t)=>{l.addEventListener(`load`,e),l.addEventListener(`error`,()=>t(Error(`Unable to preload CSS for ${i}`)))})}))}function s(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return o.then(e=>{for(let t of e||[])t.status===`rejected`&&s(t.reason);return r().catch(s)})};export{r as t};
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
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
File diff suppressed because one or more lines are too long
-1
View File
@@ -1 +0,0 @@
import{t as e}from"./request-DG5cMCYw.js";var t={overview:t=>e.get(`/report/overview`,{params:t}),revenue:t=>e.get(`/report/revenue`,{params:t}),occupancy:t=>e.get(`/report/occupancy`,{params:t}),crmConversion:t=>e.get(`/report/crm-conversion`,{params:t})},n={getList:t=>e.get(`/report/exports`,{params:t}),create:t=>e.post(`/report/exports`,t)};export{n,t};
-1
View File
@@ -1 +0,0 @@
import{s as e}from"./index-Mgun2LFs.js";import{t}from"./axios-BvjS45eU.js";var n=t.create({baseURL:`/api/v1`,timeout:15e3,headers:{"Content-Type":`application/json`,Accept:`application/json`}});n.interceptors.request.use(e=>{let t=localStorage.getItem(`token`);return t&&(e.headers.Authorization=`Bearer ${t}`),e},e=>Promise.reject(e)),n.interceptors.response.use(t=>{let n=t.data;return n.code===0?n:n.code>=40100&&n.code<=40199?(localStorage.removeItem(`token`),localStorage.removeItem(`userInfo`),e.error(`登录已过期,请重新登录`),window.location.href=`/login`,Promise.reject(Error(n.message||`未授权`))):(e.error(n.message||`请求失败`),Promise.reject(Error(n.message||`请求失败`)))},t=>{if(t.response){let n=t.response.status;if(n===401)return localStorage.removeItem(`token`),localStorage.removeItem(`userInfo`),e.error(`登录已过期,请重新登录`),window.location.href=`/login`,Promise.reject(t);if(n===403)return e.error(`无权限访问`),Promise.reject(t);if(n===404)return e.error(`请求的资源不存在`),Promise.reject(t);if(n>=500)return e.error(`服务器内部错误,请稍后重试`),Promise.reject(t)}return t.code===`ECONNABORTED`||t.message.includes(`timeout`)?(e.error(`请求超时,请检查网络连接`),Promise.reject(t)):(e.error(t.message||`网络错误`),Promise.reject(t))});export{n as t};
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
-1
View File
@@ -1 +0,0 @@
.form-tip[data-v-54fa926d]{color:var(--color-text-secondary);margin-top:4px;font-size:12px;line-height:1.4}
-1
View File
@@ -1 +0,0 @@
import{t as e}from"./request-DG5cMCYw.js";var t={getList:t=>e.get(`/room/room-types`,{params:t}),getDetail:t=>e.get(`/room/room-types/${t}`),create:t=>e.post(`/room/room-types`,t),update:(t,n)=>e.put(`/room/room-types/${t}`,n),delete:t=>e.delete(`/room/room-types/${t}`)},n={getList:t=>e.get(`/room/rooms`,{params:t}),getDetail:t=>e.get(`/room/rooms/${t}`),create:t=>e.post(`/room/rooms`,t),update:(t,n)=>e.put(`/room/rooms/${t}`,n),delete:t=>e.delete(`/room/rooms/${t}`),updateStatus:(t,n)=>e.put(`/room/rooms/${t}/status`,n)},r={getList:t=>e.get(`/room/reservations`,{params:t}),getDetail:t=>e.get(`/room/reservations/${t}`),create:t=>e.post(`/room/reservations`,t),update:(t,n)=>e.put(`/room/reservations/${t}`,n),delete:t=>e.delete(`/room/reservations/${t}`),checkIn:t=>e.put(`/room/reservations/${t}/check-in`),checkOut:t=>e.put(`/room/reservations/${t}/check-out`),cancel:(t,n)=>e.put(`/room/reservations/${t}/cancel`,n)},i={getList:t=>e.get(`/room/customer-outings`,{params:t}),getDetail:t=>e.get(`/room/customer-outings/${t}`),create:t=>e.post(`/room/customer-outings`,t),recordBack:(t,n)=>e.put(`/room/customer-outings/${t}/back`,n)},a={getList:t=>e.get(`/room/call-records`,{params:t}),create:t=>e.post(`/room/call-records`,t),handle:(t,n)=>e.put(`/room/call-records/${t}/handle`,n)};export{t as a,n as i,i as n,r,a as t};
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
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
-1
View File
@@ -1 +0,0 @@
import{t as e}from"./request-DG5cMCYw.js";var t={getList:t=>e.get(`/service/items`,{params:t}),getDetail:t=>e.get(`/service/items/${t}`),create:t=>e.post(`/service/items`,t),update:(t,n)=>e.put(`/service/items/${t}`,n),delete:t=>e.delete(`/service/items/${t}`)},n={getList:t=>e.get(`/service/packages`,{params:t}),getDetail:t=>e.get(`/service/packages/${t}`),create:t=>e.post(`/service/packages`,t),update:(t,n)=>e.put(`/service/packages/${t}`,n),delete:t=>e.delete(`/service/packages/${t}`)},r={getList:t=>e.get(`/service/orders`,{params:t}),getDetail:t=>e.get(`/service/orders/${t}`),create:t=>e.post(`/service/orders`,t),update:(t,n)=>e.put(`/service/orders/${t}`,n),delete:t=>e.delete(`/service/orders/${t}`),pay:(t,n)=>e.put(`/service/orders/${t}/pay`,n),complete:t=>e.put(`/service/orders/${t}/complete`)},i={getList:t=>e.get(`/service/executions`,{params:t}),create:t=>e.post(`/service/executions`,t),start:t=>e.put(`/service/executions/${t}/start`),finish:t=>e.put(`/service/executions/${t}/finish`)};export{n as i,t as n,r,i as t};
-1
View File
@@ -1 +0,0 @@
.el-table .low-stock-row{background-color:#fff5f5!important}
-1
View File
@@ -1 +0,0 @@
import{$ as e,H as t,L as n,P as r,V as i,Vt as a,Wt as o,_ as s,d as c,et as l,f as u,i as d,lt as f,p,st as m,u as h,v as g,z as _}from"./runtime-core.esm-bundler-DbRZbT7v.js";import{s as v}from"./index-Mgun2LFs.js";import"./request-DG5cMCYw.js";import{c as y,i as b,n as x}from"./inventory-DpS3CSeB.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 gap-3 px-5 py-4 border-b border-gray-50`},E={class:`text-sm text-gray-400 ml-1`},D={class:`px-2`},O={class:`px-5 py-3 border-t border-gray-50`},k={__name:`index`,setup(k){let A=f([]),j=f(0),M=f(!1),N=f([]),P=f([]),F=m({warehouse_id:``,material_id:``,low_stock:``}),I=m({page:1,per_page:20});async function L(){M.value=!0;try{let e=await b.getList({...F,...I});A.value=e.data?.list||e.data?.data||[],j.value=e.data?.total||0}catch{v.error(`获取库存列表失败`)}finally{M.value=!1}}async function R(){try{let[e,t]=await Promise.all([y.getList({per_page:500}),x.getList({per_page:500})]);N.value=e.data?.list||e.data?.data||[],P.value=t.data?.list||t.data?.data||[]}catch{}}function z(){I.page=1,L()}function B(){Object.assign(F,{warehouse_id:``,material_id:``,low_stock:``}),z()}function V(e){I.page=e,L()}function H(e){I.per_page=e,I.page=1,L()}function U(e){return e.min_quantity!=null&&Number(e.quantity)<Number(e.min_quantity)}function W(){v.info(`导出功能待实现`)}return r(()=>{L(),R()}),(r,f)=>{let m=i(`el-option`),v=i(`el-select`),y=i(`el-button`),b=i(`el-alert`),x=i(`el-table-column`),k=i(`el-tag`),L=i(`el-table`),R=i(`el-pagination`),G=t(`loading`);return n(),p(`div`,S,[h(`div`,C,[g(v,{modelValue:F.warehouse_id,"onUpdate:modelValue":f[0]||=e=>F.warehouse_id=e,placeholder:`选择仓库`,clearable:``,filterable:``,style:{width:`160px`}},{default:e(()=>[(n(!0),p(d,null,_(N.value,e=>(n(),c(m,{key:e.id,label:e.name,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`]),g(v,{modelValue:F.material_id,"onUpdate:modelValue":f[1]||=e=>F.material_id=e,placeholder:`选择物料`,clearable:``,filterable:``,style:{width:`180px`}},{default:e(()=>[(n(!0),p(d,null,_(P.value,e=>(n(),c(m,{key:e.id,label:`${e.name}(${e.code||`-`})`,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`]),g(v,{modelValue:F.low_stock,"onUpdate:modelValue":f[2]||=e=>F.low_stock=e,placeholder:`库存状态`,clearable:``,style:{width:`130px`}},{default:e(()=>[g(m,{label:`全部`,value:``}),g(m,{label:`低库存预警`,value:`1`})]),_:1},8,[`modelValue`]),g(y,{type:`primary`,onClick:z},{default:e(()=>[...f[5]||=[s(`查询`,-1)]]),_:1}),g(y,{onClick:B},{default:e(()=>[...f[6]||=[s(`重置`,-1)]]),_:1}),g(y,{class:`ml-auto`,onClick:W},{default:e(()=>[...f[7]||=[s(`导出`,-1)]]),_:1})]),g(b,{title:`红色行表示当前库存低于最低库存量,请及时补货`,type:`warning`,"show-icon":``,closable:!1}),h(`div`,w,[h(`div`,T,[f[8]||=h(`span`,{class:`w-1 h-5 bg-rose-500 rounded-full inline-block`},null,-1),f[9]||=h(`span`,{class:`font-medium text-gray-700`},`库存查询`,-1),h(`span`,E,``+o(j.value)+``,1)]),h(`div`,D,[l((n(),c(L,{data:A.value,style:{width:`100%`},"row-class-name":({row:e})=>U(e)?`low-stock-row`:``},{default:e(()=>[g(x,{prop:`warehouse_name`,label:`仓库`,"min-width":`110`}),g(x,{prop:`material_code`,label:`物料编码`,width:`120`}),g(x,{prop:`material_name`,label:`物料名称`,"min-width":`140`}),g(x,{prop:`category`,label:`分类`,width:`100`,align:`center`}),g(x,{prop:`unit`,label:`单位`,width:`70`,align:`center`}),g(x,{label:`当前库存`,width:`110`,align:`right`},{default:e(({row:t})=>[h(`span`,{class:a(U(t)?`text-red-500 font-bold`:`text-gray-700`)},o(t.quantity),3),U(t)?(n(),c(k,{key:0,type:`danger`,size:`small`,class:`ml-1`},{default:e(()=>[...f[10]||=[s(`偏低`,-1)]]),_:1})):u(``,!0)]),_:1}),g(x,{prop:`min_quantity`,label:`最低库存`,width:`100`,align:`right`}),g(x,{prop:`max_quantity`,label:`最高库存`,width:`100`,align:`right`}),g(x,{prop:`updated_at`,label:`更新时间`,"min-width":`160`})]),_:1},8,[`data`,`row-class-name`])),[[G,M.value]])]),h(`div`,O,[g(R,{"current-page":I.page,"onUpdate:currentPage":f[3]||=e=>I.page=e,"page-size":I.per_page,"onUpdate:pageSize":f[4]||=e=>I.per_page=e,total:j.value,"page-sizes":[10,20,50],layout:`total,sizes,prev,pager,next,jumper`,background:``,onCurrentChange:V,onSizeChange:H},null,8,[`current-page`,`page-size`,`total`])])])])}}};export{k as default};
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
-1
View File
@@ -1 +0,0 @@
import{t as e}from"./request-DG5cMCYw.js";var t={getList:t=>e.get(`/system/stores`,{params:t}),getDetail:t=>e.get(`/system/stores/${t}`),create:t=>e.post(`/system/stores`,t),update:(t,n)=>e.put(`/system/stores/${t}`,n),delete:t=>e.delete(`/system/stores/${t}`)},n={getList:t=>e.get(`/system/departments`,{params:t}),create:t=>e.post(`/system/departments`,t),update:(t,n)=>e.put(`/system/departments/${t}`,n),delete:t=>e.delete(`/system/departments/${t}`)},r={getList:t=>e.get(`/system/positions`,{params:t}),create:t=>e.post(`/system/positions`,t),update:(t,n)=>e.put(`/system/positions/${t}`,n),delete:t=>e.delete(`/system/positions/${t}`)},i={getList:t=>e.get(`/system/users`,{params:t}),getDetail:t=>e.get(`/system/users/${t}`),create:t=>e.post(`/system/users`,t),update:(t,n)=>e.put(`/system/users/${t}`,n),delete:t=>e.delete(`/system/users/${t}`),resetPassword:(t,n)=>e.put(`/system/users/${t}/password`,n),updateStatus:(t,n)=>e.put(`/system/users/${t}/status`,{status:n}),approve:t=>e.put(`/system/users/${t}/approve`),reject:t=>e.put(`/system/users/${t}/reject`)},a={getList:t=>e.get(`/system/roles`,{params:t}),getDetail:t=>e.get(`/system/roles/${t}`),create:t=>e.post(`/system/roles`,t),update:(t,n)=>e.put(`/system/roles/${t}`,n),delete:t=>e.delete(`/system/roles/${t}`),assignPermissions:(t,n)=>e.put(`/system/roles/${t}/permissions`,{permission_ids:n})},o={getList:t=>e.get(`/system/menus`,{params:t}),create:t=>e.post(`/system/menus`,t),update:(t,n)=>e.put(`/system/menus/${t}`,n),delete:t=>e.delete(`/system/menus/${t}`)},s={getList:t=>e.get(`/system/permissions`,{params:t}),create:t=>e.post(`/system/permissions`,t),update:(t,n)=>e.put(`/system/permissions/${t}`,n),delete:t=>e.delete(`/system/permissions/${t}`)},c={getTypeList:t=>e.get(`/system/dictionaries`,{params:t}),createType:t=>e.post(`/system/dictionaries`,t),deleteType:t=>e.delete(`/system/dictionaries/${t}`),getItemList:(t,n)=>e.get(`/system/dictionaries/${t}/items`,{params:n}),createItem:(t,n)=>e.post(`/system/dictionaries/${t}/items`,n),updateItem:(t,n)=>e.put(`/system/dictionary-items/${t}`,n),deleteItem:t=>e.delete(`/system/dictionary-items/${t}`)},l={getList:t=>e.get(`/system/operation-logs`,{params:t})},u={getList:t=>e.get(`/system/registration-packages`,{params:t}),getDetail:t=>e.get(`/system/registration-packages/${t}`),create:t=>e.post(`/system/registration-packages`,t),update:(t,n)=>e.put(`/system/registration-packages/${t}`,n),delete:t=>e.delete(`/system/registration-packages/${t}`)};export{n as departmentApi,c as dictApi,l as logApi,o as menuApi,s as permissionApi,r as positionApi,u as registrationPackageApi,a as roleApi,t as storeApi,i as userApi};
File diff suppressed because one or more lines are too long

Some files were not shown because too many files have changed in this diff Show More