feat: 订单双视图、工作台日历组件、医生排班管理与挂号语音提醒

- 订单双视图:商品订单/处方/挂号列表新增卡片视图(CardList)、视图切换组件 view-mode-switch、stat-islands 统计岛、constants 字典
- 工作台:新增工作日历 Widget、待办日历、即将到访预约、公告滚动 NoticeTicker、日历面板 CalendarPanel
- 医生排班:新增排班 API、ScheduleDrawer 抽屉、schedule-calendar 组件、门店设置弹窗
- 日志与通知:新增排班变更日志页、排班变更通知视图
- 挂号提醒:新增挂号语音播报资源与 register-notify 工具
- 桌面端:新增 apps/desktop 壳及 desktop 工具方法
- 其他:处方/订单导出、聊天设置与 WebSocket 等小幅优化
This commit is contained in:
李琦
2026-08-14 17:46:50 +08:00
parent f15bf10553
commit beba5e8feb
105 changed files with 16261 additions and 1253 deletions

View File

@@ -41,6 +41,7 @@ import BindPrescriptionTypesModal from './components/BindPrescriptionTypesModal.
import StoreExternalFieldModal from './components/StoreExternalFieldModal.vue';
import SalespersonCommissionDrawer from './components/SalespersonCommissionDrawer.vue';
import AddDoctorFromStoreModal from './components/AddDoctorFromStoreModal.vue';
import ScheduleCalendarModal from '#/views/doctor/doctor/components/schedule-calendar/ScheduleCalendarModal.vue';
import StoreCardModal from '#/components/store-card/StoreCardModal.vue';
import StoreVipCell from '#/components/vip/StoreVipCell.vue';
import VipHubModal from '#/components/vip/VipHubModal.vue';
@@ -385,6 +386,20 @@ const openSalespersonCommission = (row: { id: number; name: string }) => {
salespersonDrawerRef.value?.open(row);
};
const scheduleCalendarModalRef = ref<InstanceType<typeof ScheduleCalendarModal>>();
/**
* 打开「排班管理」日历面板
* 诊所维度入口:面板内选医生 → 月历多选日期 → 套班次模板/自定义时段/休诊
*/
const openScheduleCalendar = (row: { id: number; name: string }) => {
scheduleCalendarModalRef.value?.ModalApi?.setData({
storeId: Number(row?.id || 0),
storeName: row?.name || '',
});
scheduleCalendarModalRef.value?.ModalApi?.open();
};
/**
* 更新包邮状态
*/
@@ -503,6 +518,7 @@ const handleSwitchClinicType = (row: any) => {
<BindPrescriptionTypesModalComponent />
<StoreExternalFieldModalComponent />
<SalespersonCommissionDrawer ref="salespersonDrawerRef" />
<ScheduleCalendarModal ref="scheduleCalendarModalRef" />
<Grid>
<template #toolbar-actions>
<TableAction
@@ -779,6 +795,14 @@ const handleSwitchClinicType = (row: any) => {
ifShow: canAddDoctor,
onClick: openAddDoctorModal.bind(null, row),
},
{
label: '排班管理',
type: 'link',
icon: 'ant-design:calendar-outlined',
size: 'small',
auth: ['Super Admin', 'Admin'],
onClick: () => openScheduleCalendar(row),
},
{
label: '绑定特色方医生',
type: 'link',