feat: 注册页加部门选择/用户管理修部门下拉/超管可跨店建用户/公开部门接口
This commit is contained in:
@@ -86,6 +86,25 @@ class AuthController extends Controller
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取门店部门列表(公开接口,注册时使用)
|
||||
*/
|
||||
public function departments(Request $request): JsonResponse
|
||||
{
|
||||
$storeId = $request->input('store_id');
|
||||
if (!$storeId) {
|
||||
return $this->error('请选择门店', 42200);
|
||||
}
|
||||
|
||||
$departments = \App\Models\Department::withoutGlobalScope('store')
|
||||
->where('store_id', $storeId)
|
||||
->where('status', 1)
|
||||
->orderBy('sort')
|
||||
->get(['id', 'name', 'parent_id']);
|
||||
|
||||
return $this->success($departments);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取可用注册套餐列表(公开接口)
|
||||
*/
|
||||
@@ -118,6 +137,7 @@ class AuthController extends Controller
|
||||
'password' => 'required|string|min:6',
|
||||
'name' => 'required|string|max:50',
|
||||
'phone' => 'required|string|max:20',
|
||||
'department_id' => 'nullable|exists:departments,id',
|
||||
]);
|
||||
|
||||
// 验证套餐属于该门店
|
||||
@@ -128,12 +148,13 @@ class AuthController extends Controller
|
||||
->firstOrFail();
|
||||
|
||||
$user = \App\Models\User::create([
|
||||
'store_id' => $data['store_id'],
|
||||
'username' => $data['username'],
|
||||
'password' => $data['password'],
|
||||
'name' => $data['name'],
|
||||
'phone' => $data['phone'],
|
||||
'status' => 2, // Pending
|
||||
'store_id' => $data['store_id'],
|
||||
'username' => $data['username'],
|
||||
'password' => $data['password'],
|
||||
'name' => $data['name'],
|
||||
'phone' => $data['phone'],
|
||||
'department_id' => $data['department_id'] ?? null,
|
||||
'status' => 2, // Pending
|
||||
]);
|
||||
|
||||
// 绑定套餐角色
|
||||
|
||||
@@ -47,12 +47,20 @@ class UserController extends Controller
|
||||
'status' => 'in:0,1,2',
|
||||
'role_ids' => 'array',
|
||||
'role_ids.*' => 'exists:roles,id',
|
||||
'store_id' => 'nullable|exists:stores,id',
|
||||
]);
|
||||
|
||||
$roleIds = $data['role_ids'] ?? [];
|
||||
unset($data['role_ids']);
|
||||
|
||||
$data['store_id'] = auth()->user()->store_id;
|
||||
$authUser = auth()->user();
|
||||
// 超级管理员可指定 store_id,普通管理员只能在自己门店下创建
|
||||
if ($authUser->is_super && !empty($data['store_id'])) {
|
||||
// use provided store_id
|
||||
} else {
|
||||
$data['store_id'] = $authUser->store_id;
|
||||
}
|
||||
|
||||
$user = User::create($data);
|
||||
|
||||
if ($roleIds) {
|
||||
|
||||
@@ -80,6 +80,7 @@ use App\Http\Controllers\Admin\System\RegistrationPackageController;
|
||||
Route::post('/auth/login', [AuthController::class, 'login']);
|
||||
Route::post('/auth/register', [AuthController::class, 'register']);
|
||||
Route::get('/auth/register/packages', [AuthController::class, 'registrationPackages']);
|
||||
Route::get('/auth/register/departments', [AuthController::class, 'departments']);
|
||||
Route::get('/auth/stores', [\App\Http\Controllers\Admin\System\StoreController::class, 'publicList']);
|
||||
|
||||
// ===== 需要认证的路由 =====
|
||||
|
||||
+1
-1
@@ -1 +1 @@
|
||||
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-3YculFMX.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};
|
||||
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
-1
File diff suppressed because one or more lines are too long
Vendored
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
Vendored
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
Vendored
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
@@ -1 +1 @@
|
||||
import{t as e}from"./request-DD5g7hLU.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};
|
||||
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};
|
||||
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
@@ -1 +1 @@
|
||||
import{t as e}from"./request-DD5g7hLU.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};
|
||||
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};
|
||||
+1
-1
File diff suppressed because one or more lines are too long
Vendored
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
@@ -1 +1 @@
|
||||
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-3YculFMX.js";import"./request-DD5g7hLU.js";import{t as h}from"./user-BFl2lhly.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};
|
||||
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};
|
||||
Vendored
+1
-1
File diff suppressed because one or more lines are too long
Vendored
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
@@ -1 +1 @@
|
||||
import{t as e}from"./request-DD5g7hLU.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};
|
||||
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};
|
||||
+1
-1
File diff suppressed because one or more lines are too long
Vendored
+1
-1
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
|
||||
import{t as e}from"./request-DD5g7hLU.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};
|
||||
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};
|
||||
+2
-2
File diff suppressed because one or more lines are too long
+1
-1
@@ -1 +1 @@
|
||||
import{t as e}from"./request-DD5g7hLU.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};
|
||||
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};
|
||||
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
|
||||
import{t as e}from"./request-DD5g7hLU.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};
|
||||
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
-1
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
@@ -1 +1 @@
|
||||
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-3YculFMX.js";import"./request-DD5g7hLU.js";import{t as m}from"./user-BFl2lhly.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};
|
||||
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
-1
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
@@ -1 +1 @@
|
||||
import{t as e}from"./request-DD5g7hLU.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};
|
||||
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};
|
||||
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
@@ -1 +1 @@
|
||||
import{t as e}from"./request-DD5g7hLU.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};
|
||||
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};
|
||||
Vendored
+1
-1
@@ -1 +1 @@
|
||||
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-3YculFMX.js";import"./request-DD5g7hLU.js";import{a as y}from"./office-CIThbrL3.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};
|
||||
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
-1
@@ -1 +1 @@
|
||||
import{t as e}from"./request-DD5g7hLU.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};
|
||||
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};
|
||||
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
@@ -1 +1 @@
|
||||
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-3YculFMX.js";import"./request-DD5g7hLU.js";import{t as g}from"./report-wIlYRH-f.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};
|
||||
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};
|
||||
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
-2
File diff suppressed because one or more lines are too long
+2
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
Vendored
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
Vendored
+1
-1
File diff suppressed because one or more lines are too long
Vendored
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
-1
File diff suppressed because one or more lines are too long
+1
File diff suppressed because one or more lines are too long
+2
-2
File diff suppressed because one or more lines are too long
+1
-1
@@ -1 +1 @@
|
||||
import{t as e}from"./request-DD5g7hLU.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};
|
||||
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
-1
@@ -1 +1 @@
|
||||
import{s as e}from"./index-3YculFMX.js";import{t}from"./axios-M7beJlyD.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};
|
||||
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};
|
||||
Vendored
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
@@ -1 +1 @@
|
||||
import{t as e}from"./request-DD5g7hLU.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};
|
||||
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};
|
||||
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
@@ -1 +1 @@
|
||||
import{t as e}from"./request-DD5g7hLU.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};
|
||||
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
-1
@@ -1 +1 @@
|
||||
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-3YculFMX.js";import"./request-DD5g7hLU.js";import{c as y,i as b,n as x}from"./inventory-BVEZNzEQ.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};
|
||||
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};
|
||||
Vendored
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
@@ -1 +1 @@
|
||||
import{t as e}from"./request-DD5g7hLU.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};
|
||||
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};
|
||||
+1
-1
File diff suppressed because one or more lines are too long
Vendored
+1
-1
@@ -1 +1 @@
|
||||
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{l as _,s as v}from"./index-3YculFMX.js";import"./request-DD5g7hLU.js";import{t as y}from"./finance-xn2Nlkdw.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 gap-3 px-5 py-4 border-b border-gray-50`},w={class:`px-2`},T={class:`text-gray-700`},E={class:`px-5 py-3 border-t border-gray-50`},D={__name:`index`,setup(D){let O=d([]),k=d(0),A=d(!1),j=p({account_id:``,type:``,date_from:``,date_to:``}),M=p({page:1,per_page:20}),N={deposit:`充值`,consume:`消费`,refund:`退款`,adjust:`调整`},P={deposit:`success`,consume:`danger`,refund:`warning`,adjust:`info`};async function F(){A.value=!0;try{let e=await y.getList({...j,...M});O.value=e.data?.list||e.data?.data||[],k.value=e.data?.total||0}catch{v.error(`获取流水列表失败`)}finally{A.value=!1}}function I(){M.page=1,F()}function L(){Object.assign(j,{account_id:``,type:``,date_from:``,date_to:``}),I()}function R(e){M.page=e,F()}function z(e){M.per_page=e,M.page=1,F()}function B(e){return[`deposit`,`refund`].includes(e.type)?`text-green-600 font-semibold`:`text-red-500 font-semibold`}function V(e){return[`deposit`,`refund`].includes(e.type)?`+`:`-`}return r(()=>F()),(r,d)=>{let p=i(`el-input`),v=i(`el-option`),y=i(`el-select`),D=i(`el-date-picker`),F=i(`el-button`),H=i(`el-tag`),U=i(`el-table-column`),W=i(`el-table`),G=i(`el-pagination`),K=t(`loading`);return n(),f(`div`,b,[m(`div`,x,[h(p,{modelValue:j.account_id,"onUpdate:modelValue":d[0]||=e=>j.account_id=e,placeholder:`账户ID`,style:{width:`150px`},clearable:``,onKeydown:_(I,[`enter`])},null,8,[`modelValue`]),h(y,{modelValue:j.type,"onUpdate:modelValue":d[1]||=e=>j.type=e,placeholder:`流水类型`,clearable:``,style:{width:`130px`}},{default:e(()=>[(n(),f(u,null,g(N,(e,t)=>h(v,{key:t,label:e,value:t},null,8,[`label`,`value`])),64))]),_:1},8,[`modelValue`]),h(D,{modelValue:j.date_from,"onUpdate:modelValue":d[2]||=e=>j.date_from=e,type:`date`,"value-format":`YYYY-MM-DD`,placeholder:`开始日期`,style:{width:`150px`}},null,8,[`modelValue`]),h(D,{modelValue:j.date_to,"onUpdate:modelValue":d[3]||=e=>j.date_to=e,type:`date`,"value-format":`YYYY-MM-DD`,placeholder:`结束日期`,style:{width:`150px`}},null,8,[`modelValue`]),h(F,{type:`primary`,onClick:I},{default:e(()=>[...d[6]||=[s(`查询`,-1)]]),_:1}),h(F,{onClick:L},{default:e(()=>[...d[7]||=[s(`重置`,-1)]]),_:1})]),m(`div`,S,[m(`div`,C,[d[9]||=m(`span`,{class:`w-1 h-5 bg-rose-500 rounded-full inline-block`},null,-1),d[10]||=m(`span`,{class:`font-medium text-gray-700`},`账户流水明细`,-1),h(H,{type:`info`,size:`small`,class:`ml-auto`},{default:e(()=>[...d[8]||=[s(`只读`,-1)]]),_:1})]),m(`div`,w,[l((n(),c(W,{data:O.value,style:{width:`100%`},stripe:``},{default:e(()=>[h(U,{prop:`id`,label:`流水ID`,width:`80`,align:`center`}),h(U,{prop:`customer_name`,label:`客户`,"min-width":`110`}),h(U,{label:`类型`,width:`90`,align:`center`},{default:e(({row:t})=>[h(H,{type:P[t.type],size:`small`},{default:e(()=>[s(o(N[t.type]||t.type),1)]),_:2},1032,[`type`])]),_:1}),h(U,{label:`金额`,width:`120`,align:`right`},{default:e(({row:e})=>[m(`span`,{class:a(B(e))},o(V(e))+o(Number(e.amount||0).toFixed(2)),3)]),_:1}),h(U,{label:`余额(后)`,width:`120`,align:`right`},{default:e(({row:e})=>[m(`span`,T,o(Number(e.balance_after||0).toFixed(2)),1)]),_:1}),h(U,{prop:`operator_name`,label:`操作人`,width:`100`,align:`center`}),h(U,{prop:`remark`,label:`备注`,"min-width":`140`,"show-overflow-tooltip":``}),h(U,{prop:`created_at`,label:`时间`,"min-width":`160`})]),_:1},8,[`data`])),[[K,A.value]])]),m(`div`,E,[h(G,{"current-page":M.page,"onUpdate:currentPage":d[4]||=e=>M.page=e,"page-size":M.per_page,"onUpdate:pageSize":d[5]||=e=>M.per_page=e,total:k.value,"page-sizes":[10,20,50],layout:`total,sizes,prev,pager,next,jumper`,background:``,onCurrentChange:R,onSizeChange:z},null,8,[`current-page`,`page-size`,`total`])])])])}}};export{D as default};
|
||||
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{l as _,s as v}from"./index-Mgun2LFs.js";import"./request-DG5cMCYw.js";import{t as y}from"./finance-Cw6lAEm1.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 gap-3 px-5 py-4 border-b border-gray-50`},w={class:`px-2`},T={class:`text-gray-700`},E={class:`px-5 py-3 border-t border-gray-50`},D={__name:`index`,setup(D){let O=d([]),k=d(0),A=d(!1),j=p({account_id:``,type:``,date_from:``,date_to:``}),M=p({page:1,per_page:20}),N={deposit:`充值`,consume:`消费`,refund:`退款`,adjust:`调整`},P={deposit:`success`,consume:`danger`,refund:`warning`,adjust:`info`};async function F(){A.value=!0;try{let e=await y.getList({...j,...M});O.value=e.data?.list||e.data?.data||[],k.value=e.data?.total||0}catch{v.error(`获取流水列表失败`)}finally{A.value=!1}}function I(){M.page=1,F()}function L(){Object.assign(j,{account_id:``,type:``,date_from:``,date_to:``}),I()}function R(e){M.page=e,F()}function z(e){M.per_page=e,M.page=1,F()}function B(e){return[`deposit`,`refund`].includes(e.type)?`text-green-600 font-semibold`:`text-red-500 font-semibold`}function V(e){return[`deposit`,`refund`].includes(e.type)?`+`:`-`}return r(()=>F()),(r,d)=>{let p=i(`el-input`),v=i(`el-option`),y=i(`el-select`),D=i(`el-date-picker`),F=i(`el-button`),H=i(`el-tag`),U=i(`el-table-column`),W=i(`el-table`),G=i(`el-pagination`),K=t(`loading`);return n(),f(`div`,b,[m(`div`,x,[h(p,{modelValue:j.account_id,"onUpdate:modelValue":d[0]||=e=>j.account_id=e,placeholder:`账户ID`,style:{width:`150px`},clearable:``,onKeydown:_(I,[`enter`])},null,8,[`modelValue`]),h(y,{modelValue:j.type,"onUpdate:modelValue":d[1]||=e=>j.type=e,placeholder:`流水类型`,clearable:``,style:{width:`130px`}},{default:e(()=>[(n(),f(u,null,g(N,(e,t)=>h(v,{key:t,label:e,value:t},null,8,[`label`,`value`])),64))]),_:1},8,[`modelValue`]),h(D,{modelValue:j.date_from,"onUpdate:modelValue":d[2]||=e=>j.date_from=e,type:`date`,"value-format":`YYYY-MM-DD`,placeholder:`开始日期`,style:{width:`150px`}},null,8,[`modelValue`]),h(D,{modelValue:j.date_to,"onUpdate:modelValue":d[3]||=e=>j.date_to=e,type:`date`,"value-format":`YYYY-MM-DD`,placeholder:`结束日期`,style:{width:`150px`}},null,8,[`modelValue`]),h(F,{type:`primary`,onClick:I},{default:e(()=>[...d[6]||=[s(`查询`,-1)]]),_:1}),h(F,{onClick:L},{default:e(()=>[...d[7]||=[s(`重置`,-1)]]),_:1})]),m(`div`,S,[m(`div`,C,[d[9]||=m(`span`,{class:`w-1 h-5 bg-rose-500 rounded-full inline-block`},null,-1),d[10]||=m(`span`,{class:`font-medium text-gray-700`},`账户流水明细`,-1),h(H,{type:`info`,size:`small`,class:`ml-auto`},{default:e(()=>[...d[8]||=[s(`只读`,-1)]]),_:1})]),m(`div`,w,[l((n(),c(W,{data:O.value,style:{width:`100%`},stripe:``},{default:e(()=>[h(U,{prop:`id`,label:`流水ID`,width:`80`,align:`center`}),h(U,{prop:`customer_name`,label:`客户`,"min-width":`110`}),h(U,{label:`类型`,width:`90`,align:`center`},{default:e(({row:t})=>[h(H,{type:P[t.type],size:`small`},{default:e(()=>[s(o(N[t.type]||t.type),1)]),_:2},1032,[`type`])]),_:1}),h(U,{label:`金额`,width:`120`,align:`right`},{default:e(({row:e})=>[m(`span`,{class:a(B(e))},o(V(e))+o(Number(e.amount||0).toFixed(2)),3)]),_:1}),h(U,{label:`余额(后)`,width:`120`,align:`right`},{default:e(({row:e})=>[m(`span`,T,o(Number(e.balance_after||0).toFixed(2)),1)]),_:1}),h(U,{prop:`operator_name`,label:`操作人`,width:`100`,align:`center`}),h(U,{prop:`remark`,label:`备注`,"min-width":`140`,"show-overflow-tooltip":``}),h(U,{prop:`created_at`,label:`时间`,"min-width":`160`})]),_:1},8,[`data`])),[[K,A.value]])]),m(`div`,E,[h(G,{"current-page":M.page,"onUpdate:currentPage":d[4]||=e=>M.page=e,"page-size":M.per_page,"onUpdate:pageSize":d[5]||=e=>M.per_page=e,total:k.value,"page-sizes":[10,20,50],layout:`total,sizes,prev,pager,next,jumper`,background:``,onCurrentChange:R,onSizeChange:z},null,8,[`current-page`,`page-size`,`total`])])])])}}};export{D as default};
|
||||
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
@@ -1 +1 @@
|
||||
import{l as e,lt as t}from"./runtime-core.esm-bundler-DbRZbT7v.js";import{a as n,d as r}from"./index-3YculFMX.js";import{t as i}from"./request-DD5g7hLU.js";function a(e){return i.post(`/auth/login`,e)}function o(){return i.post(`/auth/logout`)}function s(){return i.get(`/auth/me`)}var c=r({useUserStore:()=>l}),l=n(`user`,()=>{let n=t(localStorage.getItem(`token`)||``),r=t(null),i=t([]),c=t([]),l=e(()=>!!n.value),u=e(()=>r.value?.is_super===!0||r.value?.is_super===1);async function d(e){let t=await a(e),{token:r}=t.data;return n.value=r,localStorage.setItem(`token`,r),t}async function f(){let e=await s(),t=e.data;return r.value=t,i.value=t.permissions||[],c.value=t.menus||[],e}async function p(){try{await o()}catch{}finally{n.value=``,r.value=null,i.value=[],c.value=[],localStorage.removeItem(`token`),localStorage.removeItem(`userInfo`)}}function m(e){return u.value?!0:i.value.includes(e)}return{token:n,userInfo:r,permissions:i,menus:c,isLoggedIn:l,isSuper:u,login:d,getInfo:f,logout:p,hasPermission:m}});export{c as n,l as t};
|
||||
import{l as e,lt as t}from"./runtime-core.esm-bundler-DbRZbT7v.js";import{a as n,d as r}from"./index-Mgun2LFs.js";import{t as i}from"./request-DG5cMCYw.js";function a(e){return i.post(`/auth/login`,e)}function o(){return i.post(`/auth/logout`)}function s(){return i.get(`/auth/me`)}var c=r({useUserStore:()=>l}),l=n(`user`,()=>{let n=t(localStorage.getItem(`token`)||``),r=t(null),i=t([]),c=t([]),l=e(()=>!!n.value),u=e(()=>r.value?.is_super===!0||r.value?.is_super===1);async function d(e){let t=await a(e),{token:r}=t.data;return n.value=r,localStorage.setItem(`token`,r),t}async function f(){let e=await s(),t=e.data;return r.value=t,i.value=t.permissions||[],c.value=t.menus||[],e}async function p(){try{await o()}catch{}finally{n.value=``,r.value=null,i.value=[],c.value=[],localStorage.removeItem(`token`),localStorage.removeItem(`userInfo`)}}function m(e){return u.value?!0:i.value.includes(e)}return{token:n,userInfo:r,permissions:i,menus:c,isLoggedIn:l,isSuper:u,login:d,getInfo:f,logout:p,hasPermission:m}});export{c as n,l as t};
|
||||
+1
File diff suppressed because one or more lines are too long
-1
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
Vendored
+1
-1
@@ -5,7 +5,7 @@
|
||||
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>frontend</title>
|
||||
<script type="module" crossorigin src="/assets/index-3YculFMX.js"></script>
|
||||
<script type="module" crossorigin src="/assets/index-Mgun2LFs.js"></script>
|
||||
<link rel="modulepreload" crossorigin href="/assets/preload-helper-DSXbuxSR.js">
|
||||
<link rel="modulepreload" crossorigin href="/assets/runtime-core.esm-bundler-DbRZbT7v.js">
|
||||
<link rel="stylesheet" crossorigin href="/assets/index-BTxz3KtI.css">
|
||||
|
||||
@@ -7,12 +7,15 @@ import axios from 'axios'
|
||||
const router = useRouter()
|
||||
const loading = ref(false)
|
||||
const packagesLoading = ref(false)
|
||||
const deptLoading = ref(false)
|
||||
const packages = ref([])
|
||||
const stores = ref([])
|
||||
const departments = ref([])
|
||||
|
||||
const form = reactive({
|
||||
store_id: '',
|
||||
registration_package_id: '',
|
||||
department_id: '',
|
||||
username: '',
|
||||
password: '',
|
||||
name: '',
|
||||
@@ -22,7 +25,7 @@ const form = reactive({
|
||||
const formRef = ref(null)
|
||||
const rules = {
|
||||
store_id: [{ required: true, message: '请选择门店', trigger: 'change' }],
|
||||
registration_package_id: [{ required: true, message: '请选择岗位套餐', trigger: 'change' }],
|
||||
registration_package_id: [{ required: true, message: '请选择申请岗位', trigger: 'change' }],
|
||||
username: [
|
||||
{ required: true, message: '请输入登录账号', trigger: 'blur' },
|
||||
{ min: 2, max: 50, message: '2-50个字符', trigger: 'blur' },
|
||||
@@ -47,19 +50,29 @@ async function fetchStores() {
|
||||
}
|
||||
}
|
||||
|
||||
async function fetchPackages() {
|
||||
if (!form.store_id) return
|
||||
packagesLoading.value = true
|
||||
async function onStoreChange() {
|
||||
form.registration_package_id = ''
|
||||
form.department_id = ''
|
||||
packages.value = []
|
||||
departments.value = []
|
||||
if (!form.store_id) return
|
||||
|
||||
packagesLoading.value = true
|
||||
deptLoading.value = true
|
||||
|
||||
try {
|
||||
const res = await axios.get('/api/v1/auth/register/packages', {
|
||||
params: { store_id: form.store_id },
|
||||
})
|
||||
packages.value = res.data?.data || []
|
||||
const [pkgRes, deptRes] = await Promise.all([
|
||||
axios.get('/api/v1/auth/register/packages', { params: { store_id: form.store_id } }),
|
||||
axios.get('/api/v1/auth/register/departments', { params: { store_id: form.store_id } }),
|
||||
])
|
||||
packages.value = pkgRes.data?.data || []
|
||||
departments.value = deptRes.data?.data || []
|
||||
} catch {
|
||||
packages.value = []
|
||||
departments.value = []
|
||||
} finally {
|
||||
packagesLoading.value = false
|
||||
deptLoading.value = false
|
||||
}
|
||||
}
|
||||
|
||||
@@ -95,22 +108,19 @@ onMounted(fetchStores)
|
||||
</div>
|
||||
|
||||
<el-form ref="formRef" :model="form" :rules="rules" label-position="top">
|
||||
<!-- 门店 -->
|
||||
<el-form-item label="所属门店" prop="store_id">
|
||||
<el-select
|
||||
v-model="form.store_id"
|
||||
placeholder="请选择门店"
|
||||
style="width: 100%"
|
||||
@change="fetchPackages"
|
||||
@change="onStoreChange"
|
||||
>
|
||||
<el-option
|
||||
v-for="s in stores"
|
||||
:key="s.id"
|
||||
:label="s.name"
|
||||
:value="s.id"
|
||||
/>
|
||||
<el-option v-for="s in stores" :key="s.id" :label="s.name" :value="s.id" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<!-- 申请岗位套餐 -->
|
||||
<el-form-item label="申请岗位" prop="registration_package_id">
|
||||
<el-select
|
||||
v-model="form.registration_package_id"
|
||||
@@ -129,7 +139,24 @@ onMounted(fetchStores)
|
||||
<span v-if="p.description" class="text-gray-400 text-xs ml-2">{{ p.description }}</span>
|
||||
</el-option>
|
||||
<template v-if="packages.length === 0 && form.store_id && !packagesLoading" #empty>
|
||||
<div class="text-center py-4 text-gray-400 text-sm">该门店暂无可用套餐</div>
|
||||
<div class="text-center py-4 text-gray-400 text-sm">该门店暂无可用套餐,请联系管理员</div>
|
||||
</template>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<!-- 所属部门 -->
|
||||
<el-form-item label="所属部门" prop="department_id">
|
||||
<el-select
|
||||
v-model="form.department_id"
|
||||
placeholder="请先选择门店"
|
||||
style="width: 100%"
|
||||
:loading="deptLoading"
|
||||
:disabled="!form.store_id"
|
||||
clearable
|
||||
>
|
||||
<el-option v-for="d in departments" :key="d.id" :label="d.name" :value="d.id" />
|
||||
<template v-if="departments.length === 0 && form.store_id && !deptLoading" #empty>
|
||||
<div class="text-center py-4 text-gray-400 text-sm">该门店暂无部门数据</div>
|
||||
</template>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
@@ -1,11 +1,16 @@
|
||||
<script setup>
|
||||
import { ref, reactive, onMounted } from 'vue'
|
||||
import { ref, reactive, onMounted, computed } from 'vue'
|
||||
import { ElMessage, ElMessageBox } from 'element-plus'
|
||||
import { userApi, roleApi, departmentApi } from '@/api/system.js'
|
||||
import { userApi, roleApi, departmentApi, storeApi } from '@/api/system.js'
|
||||
import { useUserStore } from '@/stores/user.js'
|
||||
|
||||
const userStore = useUserStore()
|
||||
const isSuper = computed(() => userStore.userInfo?.is_super)
|
||||
|
||||
// ─── State ───────────────────────────────────────────────────────────────────
|
||||
|
||||
const tableData = ref([])
|
||||
const stores = ref([])
|
||||
const total = ref(0)
|
||||
const loading = ref(false)
|
||||
const dialogVisible = ref(false)
|
||||
@@ -42,7 +47,8 @@ const form = reactive({
|
||||
role_ids: [],
|
||||
status: 1,
|
||||
password: '',
|
||||
password_confirm: ''
|
||||
password_confirm: '',
|
||||
store_id: ''
|
||||
})
|
||||
|
||||
const isEdit = ref(false)
|
||||
@@ -99,6 +105,14 @@ const resetPwdRules = {
|
||||
|
||||
// ─── Methods ──────────────────────────────────────────────────────────────────
|
||||
|
||||
function flattenDeptTree(nodes, result = []) {
|
||||
for (const n of nodes) {
|
||||
result.push({ id: n.id, name: n.name })
|
||||
if (n.children?.length) flattenDeptTree(n.children, result)
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
async function fetchList() {
|
||||
loading.value = true
|
||||
try {
|
||||
@@ -124,7 +138,9 @@ async function fetchRoles() {
|
||||
async function fetchDepartments() {
|
||||
try {
|
||||
const res = await departmentApi.getList({ per_page: 500 })
|
||||
departments.value = res.data?.list || res.data?.data || []
|
||||
// API returns tree array directly in res.data, flatten it for selects
|
||||
const raw = Array.isArray(res.data) ? res.data : (res.data?.list || res.data?.data || [])
|
||||
departments.value = flattenDeptTree(raw)
|
||||
} catch {
|
||||
//
|
||||
}
|
||||
@@ -146,7 +162,7 @@ function handleAdd() {
|
||||
Object.assign(form, {
|
||||
id: null, username: '', name: '', phone: '', email: '',
|
||||
department_id: '', position_id: '', role_ids: [], status: 1,
|
||||
password: '', password_confirm: ''
|
||||
password: '', password_confirm: '', store_id: ''
|
||||
})
|
||||
dialogVisible.value = true
|
||||
}
|
||||
@@ -276,6 +292,11 @@ onMounted(() => {
|
||||
fetchList()
|
||||
fetchRoles()
|
||||
fetchDepartments()
|
||||
if (isSuper.value) {
|
||||
storeApi.getList({ page_size: 200 }).then(res => {
|
||||
stores.value = res.data?.list || []
|
||||
}).catch(() => {})
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
@@ -411,6 +432,13 @@ onMounted(() => {
|
||||
label-position="right"
|
||||
>
|
||||
<el-row :gutter="16">
|
||||
<el-col v-if="isSuper && !isEdit" :span="24">
|
||||
<el-form-item label="所属门店" prop="store_id">
|
||||
<el-select v-model="form.store_id" placeholder="超管可指定门店(不选则为当前门店)" clearable style="width:100%">
|
||||
<el-option v-for="s in stores" :key="s.id" :label="s.name" :value="s.id" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="用户名" prop="username">
|
||||
<el-input v-model="form.username" placeholder="请输入用户名" :disabled="isEdit" />
|
||||
@@ -433,14 +461,9 @@ onMounted(() => {
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="部门" prop="department_id">
|
||||
<el-tree-select
|
||||
v-model="form.department_id"
|
||||
:data="departments"
|
||||
:props="{ label: 'name', value: 'id', children: 'children' }"
|
||||
placeholder="选择部门"
|
||||
clearable
|
||||
style="width: 100%"
|
||||
/>
|
||||
<el-select v-model="form.department_id" placeholder="选择部门" clearable style="width:100%">
|
||||
<el-option v-for="d in departments" :key="d.id" :label="d.name" :value="d.id" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
|
||||
Reference in New Issue
Block a user