医生通知修改
This commit is contained in:
parent
2aeae9c511
commit
9c05974a6a
@ -1,54 +1,56 @@
|
||||
import request from '@/config/axios'
|
||||
|
||||
// 医生通知 VO
|
||||
export interface DoctornoticeVO {
|
||||
id: number // 主键ID
|
||||
deviceid: number // 设备ID
|
||||
userid: number // 接收通知的用户ID
|
||||
doctorid: number // 发送通知的医生ID
|
||||
datatime: Date // 发送时间
|
||||
noticetype: number // 通知类型(1:异常提醒,2:建议提醒,3:复查提醒)
|
||||
noticetitle: string // 通知标题
|
||||
noticecontent: string // 通知内容
|
||||
noticelevel: number // 通知级别(1:普通,2:重要,3:紧急)
|
||||
readstatus: number // 读取状态(0:未读,1:已读)
|
||||
readtime: Date // 读取时间
|
||||
createtime: Date // 创建时间
|
||||
updatetime: Date // 更新时间
|
||||
createby: string // 创建人
|
||||
updateby: string // 更新人
|
||||
isdeleted: number // 是否删除(0:未删除,1:已删除)
|
||||
}
|
||||
|
||||
// 医生通知 API
|
||||
export const DoctornoticeApi = {
|
||||
// 查询医生通知分页
|
||||
getDoctornoticePage: async (params: any) => {
|
||||
return await request.get({ url: `/system/doctornotice/page`, params })
|
||||
},
|
||||
|
||||
// 查询医生通知详情
|
||||
getDoctornotice: async (id: number) => {
|
||||
return await request.get({ url: `/system/doctornotice/get?id=` + id })
|
||||
},
|
||||
|
||||
// 新增医生通知
|
||||
createDoctornotice: async (data: DoctornoticeVO) => {
|
||||
return await request.post({ url: `/system/doctornotice/create`, data })
|
||||
},
|
||||
|
||||
// 修改医生通知
|
||||
updateDoctornotice: async (data: DoctornoticeVO) => {
|
||||
return await request.put({ url: `/system/doctornotice/update`, data })
|
||||
},
|
||||
|
||||
// 删除医生通知
|
||||
deleteDoctornotice: async (id: number) => {
|
||||
return await request.delete({ url: `/system/doctornotice/delete?id=` + id })
|
||||
},
|
||||
|
||||
// 导出医生通知 Excel
|
||||
exportDoctornotice: async (params) => {
|
||||
return await request.download({ url: `/system/doctornotice/export-excel`, params })
|
||||
},
|
||||
}
|
||||
import request from '@/config/axios'
|
||||
|
||||
// 医生通知 VO
|
||||
export interface DoctornoticeVO {
|
||||
id: number // 主键ID
|
||||
deviceid: number // 设备ID
|
||||
userid: number // 接收通知的用户ID
|
||||
username: string // 接收通知的用户姓名
|
||||
orgid: number // 机构ID
|
||||
doctorid: number // 发送通知的医生ID
|
||||
datatime: Date // 发送时间
|
||||
noticetype: number // 通知类型(1:异常提醒,2:建议提醒,3:复查提醒)
|
||||
noticetitle: string // 通知标题
|
||||
noticecontent: string // 通知内容
|
||||
noticelevel: number // 通知级别(1:普通,2:重要,3:紧急)
|
||||
readstatus: number // 读取状态(0:未读,1:已读)
|
||||
readtime: Date // 读取时间
|
||||
createtime: Date // 创建时间
|
||||
updatetime: Date // 更新时间
|
||||
createby: string // 创建人
|
||||
updateby: string // 更新人
|
||||
isdeleted: number // 是否删除(0:未删除,1:已删除)
|
||||
}
|
||||
|
||||
// 医生通知 API
|
||||
export const DoctornoticeApi = {
|
||||
// 查询医生通知分页
|
||||
getDoctornoticePage: async (params: any) => {
|
||||
return await request.get({ url: `/system/doctornotice/page`, params })
|
||||
},
|
||||
|
||||
// 查询医生通知详情
|
||||
getDoctornotice: async (id: number) => {
|
||||
return await request.get({ url: `/system/doctornotice/get?id=` + id })
|
||||
},
|
||||
|
||||
// 新增医生通知
|
||||
createDoctornotice: async (data: DoctornoticeVO) => {
|
||||
return await request.post({ url: `/system/doctornotice/create`, data })
|
||||
},
|
||||
|
||||
// 修改医生通知
|
||||
updateDoctornotice: async (data: DoctornoticeVO) => {
|
||||
return await request.put({ url: `/system/doctornotice/update`, data })
|
||||
},
|
||||
|
||||
// 删除医生通知
|
||||
deleteDoctornotice: async (id: number) => {
|
||||
return await request.delete({ url: `/system/doctornotice/delete?id=` + id })
|
||||
},
|
||||
|
||||
// 导出医生通知 Excel
|
||||
exportDoctornotice: async (params) => {
|
||||
return await request.download({ url: `/system/doctornotice/export-excel`, params })
|
||||
},
|
||||
}
|
||||
|
||||
@ -150,9 +150,17 @@
|
||||
<script>
|
||||
import { DeviceuserApi } from '@/api/deviceuser'
|
||||
import { EcgdataApi } from '@/api/ecgdata'
|
||||
import { PersonApi } from '@/api/person'
|
||||
import { useMessage } from '@/hooks/web/useMessage'
|
||||
import { DoctornoticeApi } from '@/api/doctornotice'
|
||||
import { getUserProfile } from '@/api/system/user/profile'
|
||||
|
||||
export default {
|
||||
name: 'ECGDatas',
|
||||
setup() {
|
||||
const message = useMessage()
|
||||
return { message }
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
searchQuery: '',
|
||||
@ -166,6 +174,7 @@ export default {
|
||||
selectedPersonData: null, // 新增:存储选中人员的心电数据
|
||||
activeTab: 'basic', // 新增:当前激活的标签页
|
||||
doctorMessage: '', // 新增:医生通知内容
|
||||
userProfile: null, // 新增:存储当前登录用户信息
|
||||
basicFields: [
|
||||
{ key: 'heartrate', label: '心率(次/分)' },
|
||||
{ key: 'rhythm', label: '心律类型' },
|
||||
@ -216,7 +225,7 @@ export default {
|
||||
},
|
||||
methods: {
|
||||
// 打开组件
|
||||
open(deviceId, deviceName) {
|
||||
async open(deviceId, deviceName) {
|
||||
// 重置所有数据
|
||||
this.searchQuery = ''
|
||||
this.activePerson = ''
|
||||
@ -234,6 +243,8 @@ export default {
|
||||
this.dialogVisible = true
|
||||
this.currentDeviceId = deviceId
|
||||
this.currentDeviceName = deviceName
|
||||
// 获取当前登录用户信息
|
||||
this.userProfile = await getUserProfile()
|
||||
this.loadPersonList()
|
||||
},
|
||||
// 加载人员列表
|
||||
@ -290,22 +301,53 @@ export default {
|
||||
},
|
||||
// 新增:发送医生通知方法
|
||||
async sendDoctorNotification() {
|
||||
if (!this.doctorMessage.trim()) {
|
||||
this.$message.warning('请输入通知内容')
|
||||
if (!this.selectedPerson) {
|
||||
this.message.warning('请先选择人员')
|
||||
return
|
||||
}
|
||||
|
||||
if (!this.doctorMessage.trim()) {
|
||||
this.message.warning('请输入通知内容')
|
||||
return
|
||||
}
|
||||
|
||||
try {
|
||||
// TODO: 这里需要调用后端API发送通知
|
||||
// await NotificationApi.sendDoctorNotification({
|
||||
// userId: this.selectedPerson.userid,
|
||||
// message: this.doctorMessage,
|
||||
// deviceId: this.currentDeviceId
|
||||
// })
|
||||
this.$message.success('通知发送成功')
|
||||
// 检查用户是否为会员
|
||||
const userResponse = await PersonApi.getPerson(this.selectedPerson.userid)
|
||||
if (!userResponse || userResponse.isvip === 0) {
|
||||
this.message.warning('该用户不是会员,无法发送通知')
|
||||
return
|
||||
}
|
||||
|
||||
// 构建通知数据
|
||||
const noticeData = {
|
||||
id: 0, // 新增时后端会自动生成
|
||||
deviceid: this.currentDeviceId,
|
||||
userid: this.selectedPerson.userid,
|
||||
username: this.selectedPerson.username,
|
||||
orgid: this.userProfile.dept.id,
|
||||
doctorid: this.userProfile.id,
|
||||
datatime: new Date().getTime(),
|
||||
noticetype: 2, // 建议提醒
|
||||
noticetitle: '医生通知',
|
||||
noticecontent: this.doctorMessage,
|
||||
noticelevel: 1, // 普通级别
|
||||
readstatus: 0, // 未读
|
||||
readtime: null,
|
||||
createtime: new Date().getTime(),
|
||||
updatetime: new Date().getTime(),
|
||||
createby: this.userProfile.nickname,
|
||||
updateby: this.userProfile.nickname,
|
||||
isdeleted: 0
|
||||
}
|
||||
|
||||
// 调用创建通知接口
|
||||
await DoctornoticeApi.createDoctornotice(noticeData)
|
||||
this.message.success('通知发送成功')
|
||||
this.doctorMessage = '' // 清空输入框
|
||||
} catch (error) {
|
||||
console.error('发送通知失败:', error)
|
||||
this.$message.error('发送通知失败')
|
||||
this.message.error('发送通知失败')
|
||||
}
|
||||
},
|
||||
}
|
||||
|
||||
@ -1,167 +1,38 @@
|
||||
<template>
|
||||
<ContentWrap>
|
||||
<!-- 搜索工作栏 -->
|
||||
<el-form
|
||||
class="-mb-15px"
|
||||
:model="queryParams"
|
||||
ref="queryFormRef"
|
||||
:inline="true"
|
||||
label-width="68px"
|
||||
>
|
||||
<el-form-item label="设备ID" prop="deviceid">
|
||||
<el-input
|
||||
v-model="queryParams.deviceid"
|
||||
placeholder="请输入设备ID"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
class="!w-240px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="接收通知的用户ID" prop="userid">
|
||||
<el-input
|
||||
v-model="queryParams.userid"
|
||||
placeholder="请输入接收通知的用户ID"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
class="!w-240px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="发送通知的医生ID" prop="doctorid">
|
||||
<el-input
|
||||
v-model="queryParams.doctorid"
|
||||
placeholder="请输入发送通知的医生ID"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
class="!w-240px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form class="-mb-15px" :model="queryParams" ref="queryFormRef" :inline="true" label-width="68px">
|
||||
<el-form-item label="发送时间" prop="datatime">
|
||||
<el-date-picker
|
||||
v-model="queryParams.datatime"
|
||||
value-format="YYYY-MM-DD HH:mm:ss"
|
||||
type="daterange"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期"
|
||||
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
|
||||
class="!w-220px"
|
||||
/>
|
||||
v-model="queryParams.datatime" value-format="YYYY-MM-DD HH:mm:ss" type="daterange"
|
||||
start-placeholder="开始日期" end-placeholder="结束日期"
|
||||
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]" class="!w-220px" />
|
||||
</el-form-item>
|
||||
<el-form-item label="通知类型(1:异常提醒,2:建议提醒,3:复查提醒)" prop="noticetype">
|
||||
<el-select
|
||||
v-model="queryParams.noticetype"
|
||||
placeholder="请选择通知类型(1:异常提醒,2:建议提醒,3:复查提醒)"
|
||||
clearable
|
||||
class="!w-240px"
|
||||
>
|
||||
<el-form-item label="通知类型" prop="noticetype">
|
||||
<el-select v-model="queryParams.noticetype" placeholder="请选择通知类型" clearable class="!w-240px">
|
||||
<el-option label="请选择字典生成" value="" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="通知标题" prop="noticetitle">
|
||||
<el-input
|
||||
v-model="queryParams.noticetitle"
|
||||
placeholder="请输入通知标题"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
class="!w-240px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="通知级别(1:普通,2:重要,3:紧急)" prop="noticelevel">
|
||||
<el-input
|
||||
v-model="queryParams.noticelevel"
|
||||
placeholder="请输入通知级别(1:普通,2:重要,3:紧急)"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
class="!w-240px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="读取状态(0:未读,1:已读)" prop="readstatus">
|
||||
<el-select
|
||||
v-model="queryParams.readstatus"
|
||||
placeholder="请选择读取状态(0:未读,1:已读)"
|
||||
clearable
|
||||
class="!w-240px"
|
||||
>
|
||||
<el-form-item label="通知级别" prop="noticelevel">
|
||||
<el-select v-model="queryParams.noticelevel" placeholder="请选择通知级别" clearable class="!w-240px">
|
||||
<el-option label="请选择字典生成" value="" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="读取时间" prop="readtime">
|
||||
<el-date-picker
|
||||
v-model="queryParams.readtime"
|
||||
value-format="YYYY-MM-DD HH:mm:ss"
|
||||
type="daterange"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期"
|
||||
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
|
||||
class="!w-220px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="创建时间" prop="createtime">
|
||||
<el-date-picker
|
||||
v-model="queryParams.createtime"
|
||||
value-format="YYYY-MM-DD HH:mm:ss"
|
||||
type="daterange"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期"
|
||||
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
|
||||
class="!w-220px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="更新时间" prop="updatetime">
|
||||
<el-date-picker
|
||||
v-model="queryParams.updatetime"
|
||||
value-format="YYYY-MM-DD HH:mm:ss"
|
||||
type="daterange"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期"
|
||||
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
|
||||
class="!w-220px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="创建人" prop="createby">
|
||||
<el-input
|
||||
v-model="queryParams.createby"
|
||||
placeholder="请输入创建人"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
class="!w-240px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="更新人" prop="updateby">
|
||||
<el-input
|
||||
v-model="queryParams.updateby"
|
||||
placeholder="请输入更新人"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
class="!w-240px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="是否删除(0:未删除,1:已删除)" prop="isdeleted">
|
||||
<el-input
|
||||
v-model="queryParams.isdeleted"
|
||||
placeholder="请输入是否删除(0:未删除,1:已删除)"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
class="!w-240px"
|
||||
/>
|
||||
<el-form-item label="读取状态" prop="readstatus">
|
||||
<el-select v-model="queryParams.readstatus" placeholder="请选择读取状态" clearable class="!w-240px">
|
||||
<el-option label="请选择字典生成" value="" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button>
|
||||
<el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
plain
|
||||
@click="openForm('create')"
|
||||
v-hasPermi="['system:doctornotice:create']"
|
||||
>
|
||||
<Icon icon="ep:plus" class="mr-5px" /> 新增
|
||||
<el-button @click="handleQuery">
|
||||
<Icon icon="ep:search" class="mr-5px" /> 搜索
|
||||
</el-button>
|
||||
<el-button @click="resetQuery">
|
||||
<Icon icon="ep:refresh" class="mr-5px" /> 重置
|
||||
</el-button>
|
||||
<el-button
|
||||
type="success"
|
||||
plain
|
||||
@click="handleExport"
|
||||
:loading="exportLoading"
|
||||
v-hasPermi="['system:doctornotice:export']"
|
||||
>
|
||||
type="success" plain @click="handleExport" :loading="exportLoading"
|
||||
v-hasPermi="['system:doctornotice:export']">
|
||||
<Icon icon="ep:download" class="mr-5px" /> 导出
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
@ -171,62 +42,24 @@
|
||||
<!-- 列表 -->
|
||||
<ContentWrap>
|
||||
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
|
||||
<el-table-column label="主键ID" align="center" prop="id" />
|
||||
<el-table-column label="设备ID" align="center" prop="deviceid" />
|
||||
<el-table-column label="接收通知的用户ID" align="center" prop="userid" />
|
||||
<el-table-column label="发送通知的医生ID" align="center" prop="doctorid" />
|
||||
<el-table-column
|
||||
label="发送时间"
|
||||
align="center"
|
||||
prop="datatime"
|
||||
:formatter="dateFormatter"
|
||||
width="180px"
|
||||
/>
|
||||
<el-table-column label="通知类型(1:异常提醒,2:建议提醒,3:复查提醒)" align="center" prop="noticetype" />
|
||||
<el-table-column label="用户ID" align="center" prop="userid" />
|
||||
<el-table-column label="用户姓名" align="center" prop="username" />
|
||||
<el-table-column label="发送时间" align="center" prop="datatime" :formatter="dateFormatter" width="180px" />
|
||||
<el-table-column label="通知类型" align="center" prop="noticetype" />
|
||||
<el-table-column label="通知标题" align="center" prop="noticetitle" />
|
||||
<el-table-column label="通知内容" align="center" prop="noticecontent" />
|
||||
<el-table-column label="通知级别(1:普通,2:重要,3:紧急)" align="center" prop="noticelevel" />
|
||||
<el-table-column label="读取状态(0:未读,1:已读)" align="center" prop="readstatus" />
|
||||
<el-table-column
|
||||
label="读取时间"
|
||||
align="center"
|
||||
prop="readtime"
|
||||
:formatter="dateFormatter"
|
||||
width="180px"
|
||||
/>
|
||||
<el-table-column
|
||||
label="创建时间"
|
||||
align="center"
|
||||
prop="createtime"
|
||||
:formatter="dateFormatter"
|
||||
width="180px"
|
||||
/>
|
||||
<el-table-column
|
||||
label="更新时间"
|
||||
align="center"
|
||||
prop="updatetime"
|
||||
:formatter="dateFormatter"
|
||||
width="180px"
|
||||
/>
|
||||
<el-table-column label="创建人" align="center" prop="createby" />
|
||||
<el-table-column label="更新人" align="center" prop="updateby" />
|
||||
<el-table-column label="是否删除(0:未删除,1:已删除)" align="center" prop="isdeleted" />
|
||||
<el-table-column label="通知级别" align="center" prop="noticelevel" />
|
||||
<el-table-column label="读取状态" align="center" prop="readstatus" />
|
||||
<el-table-column label="创建时间" align="center" prop="createtime" :formatter="dateFormatter" width="180px" />
|
||||
<el-table-column label="操作" align="center" min-width="120px">
|
||||
<template #default="scope">
|
||||
<el-button
|
||||
link
|
||||
type="primary"
|
||||
@click="openForm('update', scope.row.id)"
|
||||
v-hasPermi="['system:doctornotice:update']"
|
||||
>
|
||||
link type="primary" @click="openForm('update', scope.row.id)"
|
||||
v-hasPermi="['system:doctornotice:update']">
|
||||
编辑
|
||||
</el-button>
|
||||
<el-button
|
||||
link
|
||||
type="danger"
|
||||
@click="handleDelete(scope.row.id)"
|
||||
v-hasPermi="['system:doctornotice:delete']"
|
||||
>
|
||||
<el-button link type="danger" @click="handleDelete(scope.row.id)" v-hasPermi="['system:doctornotice:delete']">
|
||||
删除
|
||||
</el-button>
|
||||
</template>
|
||||
@ -234,11 +67,8 @@
|
||||
</el-table>
|
||||
<!-- 分页 -->
|
||||
<Pagination
|
||||
:total="total"
|
||||
v-model:page="queryParams.pageNo"
|
||||
v-model:limit="queryParams.pageSize"
|
||||
@pagination="getList"
|
||||
/>
|
||||
:total="total" v-model:page="queryParams.pageNo" v-model:limit="queryParams.pageSize"
|
||||
@pagination="getList" />
|
||||
</ContentWrap>
|
||||
|
||||
<!-- 表单弹窗:添加/修改 -->
|
||||
@ -250,6 +80,7 @@ import { dateFormatter } from '@/utils/formatTime'
|
||||
import download from '@/utils/download'
|
||||
import { DoctornoticeApi, DoctornoticeVO } from '@/api/doctornotice'
|
||||
import DoctornoticeForm from './DoctornoticeForm.vue'
|
||||
import { getUserProfile } from '@/api/system/user/profile'
|
||||
|
||||
/** 医生通知 列表 */
|
||||
defineOptions({ name: 'Doctornotice' })
|
||||
@ -265,6 +96,7 @@ const queryParams = reactive({
|
||||
pageSize: 10,
|
||||
deviceid: undefined,
|
||||
userid: undefined,
|
||||
username: undefined,
|
||||
doctorid: undefined,
|
||||
datatime: [],
|
||||
noticetype: undefined,
|
||||
@ -278,14 +110,18 @@ const queryParams = reactive({
|
||||
createby: undefined,
|
||||
updateby: undefined,
|
||||
isdeleted: undefined,
|
||||
orgid: undefined,
|
||||
})
|
||||
const queryFormRef = ref() // 搜索的表单
|
||||
const exportLoading = ref(false) // 导出的加载中
|
||||
|
||||
const userProfile = ref()
|
||||
/** 查询列表 */
|
||||
const getList = async () => {
|
||||
loading.value = true
|
||||
try {
|
||||
//首先获取用户信息
|
||||
userProfile.value = await getUserProfile()
|
||||
queryParams.orgid = userProfile.value.dept.id
|
||||
const data = await DoctornoticeApi.getDoctornoticePage(queryParams)
|
||||
list.value = data.list
|
||||
total.value = data.total
|
||||
@ -322,7 +158,7 @@ const handleDelete = async (id: number) => {
|
||||
message.success(t('common.delSuccess'))
|
||||
// 刷新列表
|
||||
await getList()
|
||||
} catch {}
|
||||
} catch { }
|
||||
}
|
||||
|
||||
/** 导出按钮操作 */
|
||||
|
||||
Loading…
Reference in New Issue
Block a user