Compare commits
3 Commits
eb2d7302b7
...
39aa710fd3
| Author | SHA1 | Date | |
|---|---|---|---|
| 39aa710fd3 | |||
| 49f95b40ea | |||
| bd6f3ca587 |
@@ -5,6 +5,8 @@ import com.openhis.administration.domain.DoctorSchedule;
|
|||||||
|
|
||||||
public interface IDoctorScheduleAppService {
|
public interface IDoctorScheduleAppService {
|
||||||
|
|
||||||
|
R<?> getDoctorScheduleList();
|
||||||
|
|
||||||
R<?> addDoctorSchedule(DoctorSchedule doctorSchedule);
|
R<?> addDoctorSchedule(DoctorSchedule doctorSchedule);
|
||||||
|
|
||||||
R<?> removeDoctorSchedule(Integer doctorScheduleId);
|
R<?> removeDoctorSchedule(Integer doctorScheduleId);
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import com.openhis.web.appointmentmanage.appservice.IDoctorScheduleAppService;
|
|||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
public class DoctorScheduleAppServiceImpl implements IDoctorScheduleAppService {
|
public class DoctorScheduleAppServiceImpl implements IDoctorScheduleAppService {
|
||||||
@@ -15,6 +16,12 @@ public class DoctorScheduleAppServiceImpl implements IDoctorScheduleAppService {
|
|||||||
private IDoctorScheduleService doctorScheduleService;
|
private IDoctorScheduleService doctorScheduleService;
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public R<?> getDoctorScheduleList() {
|
||||||
|
List<DoctorSchedule> list = doctorScheduleService.list();
|
||||||
|
return R.ok(list);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public R<?> addDoctorSchedule(DoctorSchedule doctorSchedule) {
|
public R<?> addDoctorSchedule(DoctorSchedule doctorSchedule) {
|
||||||
if (ObjectUtil.isEmpty(doctorSchedule)) {
|
if (ObjectUtil.isEmpty(doctorSchedule)) {
|
||||||
|
|||||||
@@ -14,6 +14,15 @@ public class DoctorScheduleController {
|
|||||||
@Resource
|
@Resource
|
||||||
private IDoctorScheduleAppService doctorScheduleAppService;
|
private IDoctorScheduleAppService doctorScheduleAppService;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 获取医生排班List
|
||||||
|
*
|
||||||
|
* */
|
||||||
|
@GetMapping("/list")
|
||||||
|
public R<?> getDoctorScheduleList() {
|
||||||
|
return R.ok(doctorScheduleAppService.getDoctorScheduleList());
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* 新增医生排班
|
* 新增医生排班
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -40,6 +40,4 @@ public class Dept {
|
|||||||
/** 更新时间 */
|
/** 更新时间 */
|
||||||
private LocalDateTime updateTime;
|
private LocalDateTime updateTime;
|
||||||
|
|
||||||
/** 关联的排班列表(一对多关系) */
|
|
||||||
private List<DoctorSchedule> schedules;
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -28,6 +28,7 @@ public class SchedulePool {
|
|||||||
|
|
||||||
/** 结束时间 */
|
/** 结束时间 */
|
||||||
private LocalTime endTime;
|
private LocalTime endTime;
|
||||||
|
/**/
|
||||||
private Integer totalQuota;
|
private Integer totalQuota;
|
||||||
private Integer bookedNum;
|
private Integer bookedNum;
|
||||||
private Integer lockedNum;
|
private Integer lockedNum;
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ import Layout from '@/layout'
|
|||||||
|
|
||||||
// 公共路由
|
// 公共路由
|
||||||
export const constantRoutes = [
|
export const constantRoutes = [
|
||||||
{ path: '/appoinmentmanage', component: Layout, redirect: '/appoinmentmanage', name: 'AppoinmentManage', hidden: true, meta: { title: '预约管理', icon: 'component' }, children: [{ path: '', component: () => import('@/views/appoinmentmanage/index.vue'), name: 'AppoinmentManageIndex', meta: { title: '预约管理' } }] },
|
{ path: '/appoinmentmanage', component: Layout, redirect: '/appoinmentmanage', name: 'AppoinmentManage', hidden: true, meta: { title: '预约管理', icon: 'component' }, children: [{ path: '', component: () => import('@/views/appoinmentmanage/index.vue'), name: 'AppoinmentManageIndex', meta: { title: '预约管理' } }, { path: 'doctorschedule/:deptId', component: () => import('@/views/appoinmentmanage/doctorschedule/index.vue'), name: 'DoctorSchedule', hidden: true, meta: { title: '医生排班' } }] },
|
||||||
{
|
{
|
||||||
path: '/redirect',
|
path: '/redirect',
|
||||||
component: Layout,
|
component: Layout,
|
||||||
|
|||||||
@@ -128,7 +128,9 @@
|
|||||||
class="inline-select"
|
class="inline-select"
|
||||||
:disabled="!isEditMode"
|
:disabled="!isEditMode"
|
||||||
>
|
>
|
||||||
<el-option label="内科诊查" value="内科诊查"></el-option>
|
<el-option label="常规诊查" value="常规诊查"></el-option>
|
||||||
|
<el-option label="专科诊查" value="专科诊查"></el-option>
|
||||||
|
<el-option label="特殊诊查" value="特殊诊查"></el-option>
|
||||||
<el-option label="专家诊查" value="专家诊查"></el-option>
|
<el-option label="专家诊查" value="专家诊查"></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</template>
|
</template>
|
||||||
@@ -148,9 +150,9 @@
|
|||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="scope.row.stopReason"
|
v-model="scope.row.stopReason"
|
||||||
placeholder="请输入停诊原因"
|
:placeholder="scope.row.stopClinic ? '请输入停诊原因' : ''"
|
||||||
class="inline-input"
|
class="inline-input"
|
||||||
:disabled="!isEditMode"
|
:disabled="!isEditMode || !scope.row.stopClinic"
|
||||||
></el-input>
|
></el-input>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
@@ -370,6 +372,8 @@ onMounted(() => {
|
|||||||
|
|
||||||
.schedule-table-container {
|
.schedule-table-container {
|
||||||
margin-bottom: 20px;
|
margin-bottom: 20px;
|
||||||
|
width: 100%;
|
||||||
|
overflow-x: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
.daily-schedule {
|
.daily-schedule {
|
||||||
@@ -377,6 +381,7 @@ onMounted(() => {
|
|||||||
border: 1px solid #ebeef5;
|
border: 1px solid #ebeef5;
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.daily-header {
|
.daily-header {
|
||||||
@@ -400,14 +405,48 @@ onMounted(() => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.schedule-table {
|
.schedule-table {
|
||||||
|
width: 100% !important;
|
||||||
|
min-width: 100% !important;
|
||||||
|
|
||||||
|
:deep(.el-table__header-wrapper) {
|
||||||
|
width: 100% !important;
|
||||||
|
border-top: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
:deep(.el-table__body-wrapper) {
|
||||||
|
width: 100% !important;
|
||||||
|
}
|
||||||
|
|
||||||
:deep(.el-table__header-wrapper th.el-table__cell),
|
:deep(.el-table__header-wrapper th.el-table__cell),
|
||||||
:deep(.el-table__body-wrapper td.el-table__cell) {
|
:deep(.el-table__body-wrapper td.el-table__cell) {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
|
padding: 8px 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 隐藏表格头部的边框线,与日期标题融合 */
|
/* 确保表格容器填满 */
|
||||||
:deep(.el-table__header-wrapper) {
|
:deep(.el-table__inner-wrapper) {
|
||||||
border-top: none;
|
width: 100% !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 确保表格本身填满 */
|
||||||
|
:deep(.el-table__body) {
|
||||||
|
width: 100% !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 确保表格列正确分配宽度 */
|
||||||
|
:deep(.el-table__header) {
|
||||||
|
width: 100% !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
:deep(.el-table__header tr),
|
||||||
|
:deep(.el-table__body tr) {
|
||||||
|
width: 100% !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 确保表格容器的最小宽度与内容匹配 */
|
||||||
|
:deep(.el-table) {
|
||||||
|
width: 100% !important;
|
||||||
|
min-width: 100% !important;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -124,6 +124,7 @@
|
|||||||
|
|
||||||
<script setup name="AppoinmentManage">
|
<script setup name="AppoinmentManage">
|
||||||
import { ref, onMounted } from 'vue'
|
import { ref, onMounted } from 'vue'
|
||||||
|
import { useRouter } from 'vue-router'
|
||||||
import { ElMessage, ElDialog, ElSelect, ElOption, ElInput, ElForm, ElFormItem } from 'element-plus'
|
import { ElMessage, ElDialog, ElSelect, ElOption, ElInput, ElForm, ElFormItem } from 'element-plus'
|
||||||
import { EditPen, View, DocumentRemove } from '@element-plus/icons-vue'
|
import { EditPen, View, DocumentRemove } from '@element-plus/icons-vue'
|
||||||
import { listDept, searchDept } from '@/api/appoinmentmanage/dept'
|
import { listDept, searchDept } from '@/api/appoinmentmanage/dept'
|
||||||
@@ -254,14 +255,25 @@ const handleAppointmentSettingCancel = () => {
|
|||||||
appointmentSettingDialog.value = false
|
appointmentSettingDialog.value = false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 路由和导航
|
||||||
|
const router = useRouter()
|
||||||
|
|
||||||
// 编辑
|
// 编辑
|
||||||
const handleEdit = (row) => {
|
const handleEdit = (row) => {
|
||||||
ElMessage.info(`编辑科室: ${row.deptName}`)
|
// 导航到医生排班页面,传递科室ID和编辑模式
|
||||||
|
router.push({
|
||||||
|
path: `/appoinmentmanage/doctorschedule/${row.id}`,
|
||||||
|
query: { mode: 'edit' }
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
// 查看
|
// 查看
|
||||||
const handleView = (row) => {
|
const handleView = (row) => {
|
||||||
ElMessage.info(`查看科室: ${row.deptName}`)
|
// 导航到医生排班页面,传递科室ID和查看模式
|
||||||
|
router.push({
|
||||||
|
path: `/appoinmentmanage/doctorschedule/${row.id}`,
|
||||||
|
query: { mode: 'view' }
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
// 分页大小变化
|
// 分页大小变化
|
||||||
|
|||||||
Reference in New Issue
Block a user