diff --git a/apps/web/src/pages/health/AppointmentList.tsx b/apps/web/src/pages/health/AppointmentList.tsx
index b8bd509..be81e3d 100644
--- a/apps/web/src/pages/health/AppointmentList.tsx
+++ b/apps/web/src/pages/health/AppointmentList.tsx
@@ -26,6 +26,7 @@ import { doctorApi } from '../../api/health/doctors';
import { StatusTag } from './components/StatusTag';
import { PatientSelect } from './components/PatientSelect';
import { DoctorSelect } from './components/DoctorSelect';
+import { AuthButton } from '../../components/AuthButton';
/** 预约类型选项 */
const APPOINTMENT_TYPE_OPTIONS = [
@@ -305,19 +306,21 @@ export default function AppointmentList() {
return 无可用操作;
}
return (
- ({
- key: t.value,
- label: t.label,
- onClick: () => handleStatusChange(record, t.value),
- })),
- }}
- >
-
-
+
+ ({
+ key: t.value,
+ label: t.label,
+ onClick: () => handleStatusChange(record, t.value),
+ })),
+ }}
+ >
+
+
+
);
},
},
@@ -352,9 +355,11 @@ export default function AppointmentList() {
- } onClick={openCreate}>
- 新建预约
-
+
+ } onClick={openCreate}>
+ 新建预约
+
+
diff --git a/apps/web/src/pages/health/ConsultationDetail.tsx b/apps/web/src/pages/health/ConsultationDetail.tsx
index ac7bd32..f99423d 100644
--- a/apps/web/src/pages/health/ConsultationDetail.tsx
+++ b/apps/web/src/pages/health/ConsultationDetail.tsx
@@ -6,6 +6,7 @@ import { consultationApi, type Session, type Message } from '../../api/health/co
import { StatusTag } from './components/StatusTag';
import { ImagePreview } from './components/ImagePreview';
import { useThemeMode } from '../../hooks/useThemeMode';
+import { AuthButton } from '../../components/AuthButton';
const PAGE_SIZE = 30;
@@ -276,21 +277,23 @@ export default function ConsultationDetail() {
)}
{session && !isClosed && (
-
- }
- style={{ marginLeft: 'auto' }}
+
+
- 关闭会话
-
-
+ }
+ style={{ marginLeft: 'auto' }}
+ >
+ 关闭会话
+
+
+
)}
diff --git a/apps/web/src/pages/health/ConsultationList.tsx b/apps/web/src/pages/health/ConsultationList.tsx
index b90511f..29e3833 100644
--- a/apps/web/src/pages/health/ConsultationList.tsx
+++ b/apps/web/src/pages/health/ConsultationList.tsx
@@ -20,6 +20,7 @@ import { PatientSelect } from './components/PatientSelect';
import { DoctorSelect } from './components/DoctorSelect';
import { ExportButton } from './components/ExportButton';
import { useThemeMode } from '../../hooks/useThemeMode';
+import { AuthButton } from '../../components/AuthButton';
const STATUS_OPTIONS = [
{ value: 'waiting', label: '等待中' },
@@ -258,26 +259,28 @@ export default function ConsultationList() {
key: 'actions',
width: 120,
render: (_: unknown, record: Session) => (
-
- {record.status !== 'closed' && (
- handleClose(record)}
- okText="确认"
- cancelText="取消"
- >
- }
- loading={closingId === record.id}
+
+
+ {record.status !== 'closed' && (
+ handleClose(record)}
+ okText="确认"
+ cancelText="取消"
>
- 关闭
-
-
- )}
-
+ }
+ loading={closingId === record.id}
+ >
+ 关闭
+
+
+ )}
+
+
),
},
];
@@ -305,16 +308,18 @@ export default function ConsultationList() {
value={query.status}
onChange={handleFilterChange}
/>
- }
- onClick={() => {
- createForm.resetFields();
- setCreateOpen(true);
- }}
- >
- 新建会话
-
+
+ }
+ onClick={() => {
+ createForm.resetFields();
+ setCreateOpen(true);
+ }}
+ >
+ 新建会话
+
+
(
-
- }
- onClick={() => openEdit(record)}
- >
- 编辑
-
- handleDelete(record.id)}
- okText="确定"
- cancelText="取消"
- >
- }>
- 删除
+
+
+ }
+ onClick={() => openEdit(record)}
+ >
+ 编辑
-
-
+ handleDelete(record.id)}
+ okText="确定"
+ cancelText="取消"
+ >
+ }>
+ 删除
+
+
+
+
),
},
];
@@ -284,9 +287,11 @@ export default function DoctorList() {
- } onClick={openCreate}>
- 新建医护
-
+
+ } onClick={openCreate}>
+ 新建医护
+
+
diff --git a/apps/web/src/pages/health/DoctorSchedule.tsx b/apps/web/src/pages/health/DoctorSchedule.tsx
index 8d3b111..6d2ffdc 100644
--- a/apps/web/src/pages/health/DoctorSchedule.tsx
+++ b/apps/web/src/pages/health/DoctorSchedule.tsx
@@ -30,6 +30,7 @@ import {
import { DoctorSelect } from './components/DoctorSelect';
import { CalendarView, type ScheduleItem } from './components/CalendarView';
import { StatusTag } from './components/StatusTag';
+import { AuthButton } from '../../components/AuthButton';
/** 时段选项 */
const PERIOD_OPTIONS = [
@@ -258,16 +259,18 @@ export default function DoctorSchedule() {
key: 'action',
width: 120,
render: (_: unknown, record: Schedule) => (
-
- }
- onClick={() => openEdit(record)}
- >
- 编辑
-
-
+
+
+ }
+ onClick={() => openEdit(record)}
+ >
+ 编辑
+
+
+
),
},
];
@@ -309,9 +312,11 @@ export default function DoctorSchedule() {
{selectedDoctorId && (
- } onClick={openCreate}>
- 新建排班
-
+
+ } onClick={openCreate}>
+ 新建排班
+
+
)}
diff --git a/apps/web/src/pages/health/FollowUpTaskList.tsx b/apps/web/src/pages/health/FollowUpTaskList.tsx
index 0f946b1..f135db5 100644
--- a/apps/web/src/pages/health/FollowUpTaskList.tsx
+++ b/apps/web/src/pages/health/FollowUpTaskList.tsx
@@ -19,6 +19,7 @@ import { StatusTag } from './components/StatusTag';
import { PatientSelect } from './components/PatientSelect';
import { DoctorSelect } from './components/DoctorSelect';
import { useThemeMode } from '../../hooks/useThemeMode';
+import { AuthButton } from '../../components/AuthButton';
const STATUS_OPTIONS = [
{ value: 'pending', label: '待处理' },
@@ -289,34 +290,36 @@ export default function FollowUpTaskList() {
key: 'actions',
width: 220,
render: (_: unknown, record: FollowUpTask) => (
-
- }
- onClick={() => openRecordModal(record)}
- >
- 填写记录
-
- }
- onClick={() => openAssignModal(record)}
- >
- 分配
-
- handleDelete(record)}
- okText="确认"
- cancelText="取消"
- >
- }>
- 删除
+
+
+ }
+ onClick={() => openRecordModal(record)}
+ >
+ 填写记录
-
-
+ }
+ onClick={() => openAssignModal(record)}
+ >
+ 分配
+
+ handleDelete(record)}
+ okText="确认"
+ cancelText="取消"
+ >
+ }>
+ 删除
+
+
+
+
),
},
];
@@ -344,16 +347,18 @@ export default function FollowUpTaskList() {
value={query.status}
onChange={(value) => handleFilterChange('status', value)}
/>
- }
- onClick={() => {
- createForm.resetFields();
- setCreateOpen(true);
- }}
- >
- 新建任务
-
+
+ }
+ onClick={() => {
+ createForm.resetFields();
+ setCreateOpen(true);
+ }}
+ >
+ 新建任务
+
+
= {
@@ -245,35 +246,37 @@ export default function OfflineEventList() {
key: 'action',
width: 200,
render: (_: unknown, record: OfflineEvent) => (
-
- }
- onClick={() => openEdit(record)}
- >
- 编辑
-
- }
- onClick={() => handleCheckin(record)}
- disabled={record.status === 'draft' || record.status === 'cancelled'}
- >
- 签到
-
- handleDelete(record)}
- okText="确定"
- cancelText="取消"
- >
- }>
- 删除
+
+
+ }
+ onClick={() => openEdit(record)}
+ >
+ 编辑
-
-
+ }
+ onClick={() => handleCheckin(record)}
+ disabled={record.status === 'draft' || record.status === 'cancelled'}
+ >
+ 签到
+
+ handleDelete(record)}
+ okText="确定"
+ cancelText="取消"
+ >
+ }>
+ 删除
+
+
+
+
),
},
];
@@ -298,9 +301,11 @@ export default function OfflineEventList() {
- } onClick={openCreate}>
- 新建活动
-
+
+ } onClick={openCreate}>
+ 新建活动
+
+
diff --git a/apps/web/src/pages/health/PatientDetail.tsx b/apps/web/src/pages/health/PatientDetail.tsx
index d8c004d..473b0df 100644
--- a/apps/web/src/pages/health/PatientDetail.tsx
+++ b/apps/web/src/pages/health/PatientDetail.tsx
@@ -16,6 +16,7 @@ import {
} from 'antd';
import { ArrowLeftOutlined, EditOutlined } from '@ant-design/icons';
import { patientApi } from '../../api/health/patients';
+import { AuthButton } from '../../components/AuthButton';
import type {
PatientDetail as PatientDetailType,
UpdatePatientReq,
@@ -187,9 +188,11 @@ export default function PatientDetail() {
- } onClick={openEditModal}>
- 编辑信息
-
+
+ } onClick={openEditModal}>
+ 编辑信息
+
+
diff --git a/apps/web/src/pages/health/PatientList.tsx b/apps/web/src/pages/health/PatientList.tsx
index af742a5..8bf3165 100644
--- a/apps/web/src/pages/health/PatientList.tsx
+++ b/apps/web/src/pages/health/PatientList.tsx
@@ -27,6 +27,7 @@ import type {
import { StatusTag } from './components/StatusTag';
import { GENDER_OPTIONS, BLOOD_TYPE_OPTIONS, STATUS_OPTIONS } from '../../constants/health';
import { useThemeMode } from '../../hooks/useThemeMode';
+import { AuthButton } from '../../components/AuthButton';
export default function PatientList() {
const [patients, setPatients] = useState([]);
@@ -239,33 +240,35 @@ export default function PatientList() {
key: 'actions',
width: 140,
render: (_: unknown, record: PatientListItem) => (
-
- }
- onClick={(e) => {
- e.stopPropagation();
- openEditModal(record);
- }}
- style={{ color: isDark ? '#94a3b8' : '#475569' }}
- />
- {
- e?.stopPropagation();
- handleDelete(record.id);
- }}
- >
+
+
}
- danger
- onClick={(e) => e.stopPropagation()}
+ icon={}
+ onClick={(e) => {
+ e.stopPropagation();
+ openEditModal(record);
+ }}
+ style={{ color: isDark ? '#94a3b8' : '#475569' }}
/>
-
-
+ {
+ e?.stopPropagation();
+ handleDelete(record.id);
+ }}
+ >
+ }
+ danger
+ onClick={(e) => e.stopPropagation()}
+ />
+
+
+
),
},
];
@@ -301,9 +304,11 @@ export default function PatientList() {
options={STATUS_OPTIONS}
style={{ width: 130, borderRadius: 8 }}
/>
- } onClick={openCreateModal}>
- 新建患者
-
+
+ } onClick={openCreateModal}>
+ 新建患者
+
+
diff --git a/apps/web/src/pages/health/PatientTagManage.tsx b/apps/web/src/pages/health/PatientTagManage.tsx
index e990514..3fa76d9 100644
--- a/apps/web/src/pages/health/PatientTagManage.tsx
+++ b/apps/web/src/pages/health/PatientTagManage.tsx
@@ -14,6 +14,7 @@ import { TagsOutlined, AppstoreOutlined } from '@ant-design/icons';
import { patientApi, type TagItem } from '../../api/health/patients';
import type { PatientListItem } from '../../api/health/patients';
import { useThemeMode } from '../../hooks/useThemeMode';
+import { AuthButton } from '../../components/AuthButton';
export default function PatientTagManage() {
const [patients, setPatients] = useState([]);
@@ -178,14 +179,16 @@ export default function PatientTagManage() {
key: 'actions',
width: 120,
render: (_: unknown, record: PatientListItem) => (
- }
- onClick={() => openTagModal(record)}
- >
- 管理标签
-
+
+ }
+ onClick={() => openTagModal(record)}
+ >
+ 管理标签
+
+
),
},
];
diff --git a/apps/web/src/pages/health/PointsOrderList.tsx b/apps/web/src/pages/health/PointsOrderList.tsx
index 3d3ab9a..6c26485 100644
--- a/apps/web/src/pages/health/PointsOrderList.tsx
+++ b/apps/web/src/pages/health/PointsOrderList.tsx
@@ -23,6 +23,7 @@ import {
type PointsOrder,
} from '../../api/health/points';
import { patientApi } from '../../api/health/patients';
+import { AuthButton } from '../../components/AuthButton';
/** 订单状态映射 */
const STATUS_MAP: Record = {
@@ -228,13 +229,15 @@ export default function PointsOrderList() {
- }
- onClick={openVerifyModal}
- >
- 核销订单
-
+
+ }
+ onClick={openVerifyModal}
+ >
+ 核销订单
+
+
diff --git a/apps/web/src/pages/health/PointsProductList.tsx b/apps/web/src/pages/health/PointsProductList.tsx
index e8cbe1c..b2a9bb3 100644
--- a/apps/web/src/pages/health/PointsProductList.tsx
+++ b/apps/web/src/pages/health/PointsProductList.tsx
@@ -26,6 +26,7 @@ import {
type PointsProduct,
type CreatePointsProductReq,
} from '../../api/health/points';
+import { AuthButton } from '../../components/AuthButton';
/** 商品类型映射 */
const PRODUCT_TYPES: Record = {
@@ -212,23 +213,25 @@ export default function PointsProductList() {
key: 'action',
width: 140,
render: (_: unknown, record: PointsProduct) => (
-
- }
- onClick={() => openEdit(record)}
- >
- 编辑
-
- handleToggleActive(record)}
- />
-
+
+
+ }
+ onClick={() => openEdit(record)}
+ >
+ 编辑
+
+ handleToggleActive(record)}
+ />
+
+
),
},
];
@@ -253,9 +256,11 @@ export default function PointsProductList() {
- } onClick={openCreate}>
- 新建商品
-
+
+ } onClick={openCreate}>
+ 新建商品
+
+
diff --git a/apps/web/src/pages/health/PointsRuleList.tsx b/apps/web/src/pages/health/PointsRuleList.tsx
index 6d84d84..7d01a5e 100644
--- a/apps/web/src/pages/health/PointsRuleList.tsx
+++ b/apps/web/src/pages/health/PointsRuleList.tsx
@@ -26,6 +26,7 @@ import {
type PointsRule,
type CreatePointsRuleReq,
} from '../../api/health/points';
+import { AuthButton } from '../../components/AuthButton';
/** 事件类型映射 */
const EVENT_TYPES: Record = {
@@ -216,23 +217,25 @@ export default function PointsRuleList() {
key: 'action',
width: 200,
render: (_: unknown, record: PointsRule) => (
-
- }
- onClick={() => openEdit(record)}
- >
- 编辑
-
- handleToggleActive(record)}
- />
-
+
+
+ }
+ onClick={() => openEdit(record)}
+ >
+ 编辑
+
+ handleToggleActive(record)}
+ />
+
+
),
},
];
@@ -247,9 +250,11 @@ export default function PointsRuleList() {
- } onClick={openCreate}>
- 新建规则
-
+
+ } onClick={openCreate}>
+ 新建规则
+
+