医生通知修改

This commit is contained in:
Flow 2025-06-17 16:24:43 +08:00
parent 2aeae9c511
commit 9c05974a6a
3 changed files with 148 additions and 268 deletions

View File

@ -5,6 +5,8 @@ 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:复查提醒)

View File

@ -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('发送通知失败')
}
},
}

View File

@ -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 { }
}
/** 导出按钮操作 */