修改登陆界面 以及超声相关

This commit is contained in:
lxd 2024-07-31 19:35:52 +08:00
parent d5ef397743
commit dec5cad5bd
17 changed files with 1259 additions and 213 deletions

View File

@ -16,6 +16,7 @@ export interface UserVO {
loginDate: Date loginDate: Date
createTime: Date createTime: Date
orgId:string orgId:string
isexamine:string
} }
// 查询用户管理列表 // 查询用户管理列表

View File

@ -29,6 +29,8 @@ export interface ProfileVO {
loginIp: string loginIp: string
loginDate: Date loginDate: Date
createTime: Date createTime: Date
isexamine:string
orgId:string
} }
export interface UserProfileUpdateReqVO { export interface UserProfileUpdateReqVO {

View File

@ -70,8 +70,13 @@ export const PatientexamlistApi = {
return await request.get({ url: `/tblist/patientexamlist/UPDATEHigOrg?id=${id}&&orgId=${orgId}` }) return await request.get({ url: `/tblist/patientexamlist/UPDATEHigOrg?id=${id}&&orgId=${orgId}` })
}, },
// 超声审核修改 // 超声保存修改
examineupdatelist: async (data: PatientexamlistVO) => { examineupdatelist: async (data: PatientexamlistVO) => {
return await request.put({ url: `/tblist/patientexamlist/examineupdate`, data }) return await request.put({ url: `/tblist/patientexamlist/examineupdate`, data })
}, },
// 超声审核
examine: async (id: String) => {
return await request.get({ url: `/tblist/patientexamlist/examine?id=` + id })
},
} }

BIN
src/assets/imgs/FLY.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

BIN
src/assets/imgs/客服.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 506 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 289 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 26 KiB

View File

@ -362,7 +362,7 @@ export default {
}, },
login: { login: {
backSignIn: '返回', backSignIn: '返回',
signInFormTitle: '登录', signInFormTitle: '账号登录',
ssoFormTitle: '三方授权', ssoFormTitle: '三方授权',
mobileSignInFormTitle: '手机登录', mobileSignInFormTitle: '手机登录',
qrSignInFormTitle: '二维码登录', qrSignInFormTitle: '二维码登录',

View File

@ -4,47 +4,49 @@
class="relative h-[100%] lt-md:px-10px lt-sm:px-10px lt-xl:px-10px lt-xl:px-10px" class="relative h-[100%] lt-md:px-10px lt-sm:px-10px lt-xl:px-10px lt-xl:px-10px"
> >
<div class="relative mx-auto h-full flex"> <div class="relative mx-auto h-full flex">
<div <!-- <div
:class="`${prefixCls}__left flex-1 bg-gray-500 bg-opacity-20 relative p-30px lt-xl:hidden`" :class="`${prefixCls}__left flex-1 bg-gray-500 bg-opacity-20 relative p-30px lt-xl:hidden`"
> > -->
<!-- 左上角的 logo + 系统标题 --> <!-- 左上角的 logo + 系统标题 -->
<div class="relative flex items-center text-white"> <!-- <div class="relative flex items-center text-white">
<img alt="" class="mr-10px h-48px w-48px" src="@/assets/imgs/logo.png" /> <img alt="" class="mr-10px h-48px w-48px" src="@/assets/imgs/logo.png" />
<span class="text-20px font-bold">{{ underlineToHump(appStore.getTitle) }}</span> <span class="text-20px font-bold">{{ underlineToHump(appStore.getTitle) }}</span>
</div> </div> -->
<!-- 左边的背景图 + 欢迎语 --> <!-- 左边的背景图 + 欢迎语 -->
<div class="h-[calc(100%-60px)] flex items-center justify-center"> <!-- <div class="h-[calc(100%-60px)] flex items-center justify-center"> -->
<TransitionGroup <!-- <TransitionGroup
appear appear
enter-active-class="animate__animated animate__bounceInLeft" enter-active-class="animate__animated animate__bounceInLeft"
tag="div" tag="div"
> > -->
<img key="1" alt="" class="w-350px" src="@/assets/svgs/login-box-bg.svg" /> <!-- <img key="1" alt="" class="w-350px" src="@/assets/svgs/login-fly.svg" />
<div key="2" class="text-3xl text-white">{{ t('login.welcome') }}</div> <div key="2" class="text-3xl text-white">{{ t('login.welcome') }}</div>
<div key="3" class="mt-5 text-14px font-normal text-white"> <div key="3" class="mt-5 text-14px font-normal text-white">
{{ t('login.message') }} {{ t('login.message') }}
</div> </div> -->
</TransitionGroup> <!-- </TransitionGroup> -->
</div> <!-- </div> -->
</div> <!-- </div> -->
<div class="relative flex-1 p-30px dark:bg-[var(--login-bg-color)] lt-sm:p-10px">
<!-- 右上角的主题语言选择 --> <div class="my-container">
<div <div class="my-top">
class="flex items-center justify-between text-white at-2xl:justify-end at-xl:justify-end" <img class="top-image" src="@/assets/imgs/FLY.png" />
> <div class="text-container">
<div class="flex items-center at-2xl:hidden at-xl:hidden"> <span style="font-size: 50px">医共体医学影像系统</span>
<img alt="" class="mr-10px h-48px w-48px" src="@/assets/imgs/logo.png" /> <span style="font-size: 18px">The Medical Community Medical Imaging Systems</span>
<span class="text-20px font-bold">{{ underlineToHump(appStore.getTitle) }}</span>
</div>
<div class="flex items-center justify-end space-x-10px">
<ThemeSwitch />
<LocaleDropdown class="dark:text-white lt-xl:text-white" />
</div> </div>
</div> </div>
<!-- 右边的登录界面 --> <div class="my-middle">
<Transition appear enter-active-class="animate__animated animate__bounceInRight">
<div <div
class="m-auto h-full w-[100%] flex items-center at-2xl:max-w-500px at-lg:max-w-500px at-md:max-w-500px at-xl:max-w-500px" style="
width:400px;
height: 500px;
background-color: rgb(255, 255, 255);
margin:auto;
margin-right: 150px;
margin-top: 200px;
padding: 20px;
"
> >
<!-- 账号登录 --> <!-- 账号登录 -->
<LoginForm class="m-auto h-auto p-20px lt-xl:(rounded-3xl light:bg-white)" /> <LoginForm class="m-auto h-auto p-20px lt-xl:(rounded-3xl light:bg-white)" />
@ -57,7 +59,29 @@
<!-- 三方登录 --> <!-- 三方登录 -->
<SSOLoginVue class="m-auto h-auto p-20px lt-xl:(rounded-3xl light:bg-white)" /> <SSOLoginVue class="m-auto h-auto p-20px lt-xl:(rounded-3xl light:bg-white)" />
</div> </div>
</Transition> <!-- <div class="relative flex-1 p-30px dark:bg-[var(--login-bg-color)] lt-sm:p-10px"> -->
<!-- 右上角的主题语言选择 -->
<!-- <div
class="flex items-center justify-between text-white at-2xl:justify-end at-xl:justify-end"
>
<div class="flex items-center at-2xl:hidden at-xl:hidden">
<img alt="" class="mr-10px h-48px w-48px" src="@/assets/imgs/logo.png" />
<span class="text-20px font-bold">{{ underlineToHump(appStore.getTitle) }}</span>
</div>
<div class="flex items-center justify-end space-x-10px">
<ThemeSwitch />
<LocaleDropdown class="dark:text-white lt-xl:text-white" />
</div>
</div> -->
<!-- 右边的登录界面 -->
<!-- <Transition appear enter-active-class="animate__animated animate__bounceInRight"> -->
<!-- </Transition> -->
<!-- </div> -->
</div>
<div class="my-bottom">
<img class="bottom-image" src="@/assets/imgs/客服.png" />
</div>
</div> </div>
</div> </div>
</div> </div>
@ -102,3 +126,62 @@ $prefix-cls: #{$namespace}-login;
} }
} }
</style> </style>
<style>
.my-container {
display: flex;
flex-direction: column;
height: 100%; /* 确保容器占满可用高度 */
width: 100%;
}
/* 最上面 */
.my-top {
display: flex; /* 使用Flexbox布局 */
align-items: flex-start; /* 垂直方向上,子元素靠左对齐 */
height: 10%;
background-color: rgb(255, 255, 255); /* 背景颜色,可以自定义 */
width: 100%;
}
.top-image {
margin-left: 215px;
margin-right: 10px;
margin-top: 10px;
width: 279px;
height: 93px;
}
.text-container {
display: flex;
flex-direction: column; /* 垂直排列span元素 */
margin-left: 3px; /* 给文本容器添加一些左边距,使其靠左一些 */
margin-top: 10px;
}
.text-container span {
margin: 0; /* 移除span元素的默认外边距 */
}
/* // 底部样式 */
.my-bottom {
background-image: url('@/assets/imgs/登陆底部.png'); /* 替换为你的图片路径 */
background-size: cover; /* 使图片覆盖整个div同时保持图片的宽高比 */
background-repeat: no-repeat; /* 防止图片重复 */
height: 15%;
width: 100%;
opacity: 1;
background: rgba(84, 80, 81, 1);
}
.bottom-image
{
margin-left: 75%;
margin-top: 30px;
}
/* 中间 */
.my-middle {
height: 75%;
background-image: url('@/assets/imgs/登陆背景.png'); /* 替换为你的图片路径 */
background-repeat: no-repeat; /* 防止图片重复 */
background-size: cover; /* 使图片覆盖整个div同时保持图片的宽高比 */
width: 100%;
}
/* //底部的客服相关 */
</style>

View File

@ -12,7 +12,7 @@
<el-row style="margin-right: -10px; margin-left: -10px"> <el-row style="margin-right: -10px; margin-left: -10px">
<el-col :span="24" style="padding-right: 10px; padding-left: 10px"> <el-col :span="24" style="padding-right: 10px; padding-left: 10px">
<el-form-item> <el-form-item>
<LoginFormTitle style="width: 100%" /> <LoginFormTitle style="width: 100%;color: rgb(4, 41, 129);" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="24" style="padding-right: 10px; padding-left: 10px"> <el-col :span="24" style="padding-right: 10px; padding-left: 10px">
@ -59,7 +59,7 @@
</el-checkbox> </el-checkbox>
</el-col> </el-col>
<el-col :offset="6" :span="12"> <el-col :offset="6" :span="12">
<el-link style="float: right" type="primary">{{ t('login.forgetPassword') }}</el-link> <el-link style="float: right; " type="primary">{{ t('login.forgetPassword') }}</el-link>
</el-col> </el-col>
</el-row> </el-row>
</el-form-item> </el-form-item>
@ -71,6 +71,7 @@
:title="t('login.login')" :title="t('login.login')"
class="w-[100%]" class="w-[100%]"
type="primary" type="primary"
style="background: linear-gradient(141.88deg, rgb(0, 102, 235) 0%, rgb(3, 129, 255) 100%), rgb(36, 93, 209);"
@click="getCode()" @click="getCode()"
/> />
</el-form-item> </el-form-item>
@ -82,7 +83,8 @@
mode="pop" mode="pop"
@success="handleLogin" @success="handleLogin"
/> />
<el-col :span="24" style="padding-right: 10px; padding-left: 10px"> <!-- 这部分是其他登陆方式 以及注册 -->
<!-- <el-col :span="24" style="padding-right: 10px; padding-left: 10px">
<el-form-item> <el-form-item>
<el-row :gutter="5" justify="space-between" style="width: 100%"> <el-row :gutter="5" justify="space-between" style="width: 100%">
<el-col :span="8"> <el-col :span="8">
@ -108,8 +110,8 @@
</el-col> </el-col>
</el-row> </el-row>
</el-form-item> </el-form-item>
</el-col> </el-col> -->
<el-divider content-position="center">{{ t('login.otherLogin') }}</el-divider> <!-- <el-divider content-position="center">{{ t('login.otherLogin') }}</el-divider>
<el-col :span="24" style="padding-right: 10px; padding-left: 10px"> <el-col :span="24" style="padding-right: 10px; padding-left: 10px">
<el-form-item> <el-form-item>
<div class="w-[100%] flex justify-between"> <div class="w-[100%] flex justify-between">
@ -124,8 +126,8 @@
/> />
</div> </div>
</el-form-item> </el-form-item>
</el-col> </el-col> -->
<el-divider content-position="center">萌新必读</el-divider> <!-- <el-divider content-position="center">萌新必读</el-divider>
<el-col :span="24" style="padding-right: 10px; padding-left: 10px"> <el-col :span="24" style="padding-right: 10px; padding-left: 10px">
<el-form-item> <el-form-item>
<div class="w-[100%] flex justify-between"> <div class="w-[100%] flex justify-between">
@ -139,7 +141,7 @@
</el-link> </el-link>
</div> </div>
</el-form-item> </el-form-item>
</el-col> </el-col> -->
</el-row> </el-row>
</el-form> </el-form>
</template> </template>

View File

@ -82,7 +82,7 @@
</el-col> </el-col>
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="24"> <el-col :span="12">
<el-form-item label="机构名称" prop="orgId" > <el-form-item label="机构名称" prop="orgId" >
<el-select v-model="formData.orgId" placeholder="请选择机构" clearable> <el-select v-model="formData.orgId" placeholder="请选择机构" clearable>
<el-option <el-option
@ -92,6 +92,14 @@
:value="item.orgID" :value="item.orgID"
/> />
</el-select> </el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="是否审核" prop="isexamine" >
<el-select v-model="formData.isexamine" clearable>
<el-option label="是" value="1" />
<el-option label="否" value="0" />
</el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
@ -142,7 +150,8 @@ const formData = ref({
remark: '', remark: '',
status: CommonStatusEnum.ENABLE, status: CommonStatusEnum.ENABLE,
roleIds: [], roleIds: [],
orgId:'' orgId:'',
isexamine:''
}) })
const formRules = reactive<FormRules>({ const formRules = reactive<FormRules>({
username: [{ required: true, message: '用户名称不能为空', trigger: 'blur' }], username: [{ required: true, message: '用户名称不能为空', trigger: 'blur' }],

View File

@ -1,6 +1,6 @@
<template> <template>
<ContentWrap> <ContentWrap>
<!-- 搜索工作栏 --> <!-- 搜索工作栏 影像工作站-->
<el-form <el-form
class="-mb-15px" class="-mb-15px"
:model="queryParams" :model="queryParams"
@ -26,7 +26,7 @@
class="!w-160px" class="!w-160px"
/> />
</el-form-item> </el-form-item>
<!-- <el-form-item label="性别" prop="gender"> <!-- <el-form-item label="性别" prop="gender">
<el-input <el-input
v-model="queryParams.gender" v-model="queryParams.gender"
placeholder="请输入性别" placeholder="请输入性别"
@ -35,7 +35,7 @@
class="!w-240px" class="!w-240px"
/> />
</el-form-item> --> </el-form-item> -->
<!-- <el-form-item label="出生日期" prop="birthday"> <!-- <el-form-item label="出生日期" prop="birthday">
<el-input <el-input
v-model="queryParams.birthday" v-model="queryParams.birthday"
placeholder="请输入出生日期" placeholder="请输入出生日期"
@ -45,25 +45,30 @@
/> />
</el-form-item> --> </el-form-item> -->
<el-form-item label="检查日期" prop="examDate" size="mini"> <el-form-item label="检查日期" prop="examDate" size="mini">
<!-- aaaaa --> <!-- aaaaa -->
<el-radio-group ref="examDate_radio" v-model="examDate_radio_value" @change="examDate_radio_change"> <el-radio-group
<el-radio style="margin-right: 15px;" :value="1">今天</el-radio> ref="examDate_radio"
<el-radio style="margin-right: 15px;" :value="2">昨天</el-radio> v-model="examDate_radio_value"
<el-radio style="margin-right: 15px;" :value="3">三天内</el-radio> @change="examDate_radio_change"
<el-radio style="margin-right: 15px;" :value="4">一周</el-radio> >
<el-radio style="margin-right: 25px;" :value="5"> <el-radio style="margin-right: 15px" :value="1">今天</el-radio>
<el-date-picker <el-radio style="margin-right: 15px" :value="2">昨天</el-radio>
ref="examDate_picker" <el-radio style="margin-right: 15px" :value="3">三天内</el-radio>
:disabled="examDate_radio_value===5 ? false:true" <el-radio style="margin-right: 15px" :value="4">一周</el-radio>
v-model="queryParams.examDate" <el-radio style="margin-right: 25px" :value="5">
value-format="YYYY-MM-DD HH:mm:ss" <el-date-picker
type="daterange" ref="examDate_picker"
start-placeholder="开始日期" :disabled="examDate_radio_value === 5 ? false : true"
end-placeholder="结束日期" v-model="queryParams.examDate"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]" value-format="YYYY-MM-DD HH:mm:ss"
class="!w-240px"/> type="daterange"
</el-radio> start-placeholder="开始日期"
</el-radio-group> end-placeholder="结束日期"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
class="!w-240px"
/>
</el-radio>
</el-radio-group>
</el-form-item> </el-form-item>
<!-- <el-form-item label="设备类型" prop="deviceType"> <!-- <el-form-item label="设备类型" prop="deviceType">
@ -76,8 +81,8 @@
<el-option label="请选择字典生成" value="" /> <el-option label="请选择字典生成" value="" />
</el-select> </el-select>
</el-form-item> --> </el-form-item> -->
<!-- <el-form-item label="seri_dicomCount:序列数量/dicom数量" prop="seDc"> <!-- <el-form-item label="seri_dicomCount:序列数量/dicom数量" prop="seDc">
<el-input <el-input
v-model="queryParams.seDc" v-model="queryParams.seDc"
placeholder="请输入seri_dicomCount:序列数量/dicom数量" placeholder="请输入seri_dicomCount:序列数量/dicom数量"
@ -87,7 +92,6 @@
/> />
</el-form-item> --> </el-form-item> -->
<el-form-item label="检查项目" prop="examItemName"> <el-form-item label="检查项目" prop="examItemName">
<el-input <el-input
v-model="queryParams.examItemName" v-model="queryParams.examItemName"
@ -97,20 +101,20 @@
class="!w-220px" class="!w-220px"
/> />
</el-form-item> </el-form-item>
<el-form-item label="报告状态" prop="reportstatus"> <el-form-item label="报告状态" prop="reportstatus">
<el-select <el-select
v-model="queryParams.reportstatus" v-model="queryParams.reportstatus"
placeholder="请选择报告状态" placeholder="请选择报告状态"
clearable clearable
class="!w-150px" class="!w-150px"
> >
<el-option label="未申请" value="未申请" /> <el-option label="待分检" value="待分检" />
<el-option label="已申请" value="已申请" /> <el-option label="已分检" value="已分检" />
<el-option label="已分析" value="已分析" /> <el-option label="已分析" value="已分析" />
<el-option label="已审核" value="已审核" /> <el-option label="已审核" value="已审核" />
</el-select> </el-select>
</el-form-item> </el-form-item>
<!-- <el-form-item label="申请日期:年月日时分秒" prop="applicationDate"> <!-- <el-form-item label="申请日期:年月日时分秒" prop="applicationDate">
<el-date-picker <el-date-picker
v-model="queryParams.applicationDate" v-model="queryParams.applicationDate"
value-format="YYYY-MM-DD HH:mm:ss" value-format="YYYY-MM-DD HH:mm:ss"
@ -121,7 +125,7 @@
class="!w-240px" class="!w-240px"
/> />
</el-form-item> --> </el-form-item> -->
<!-- <el-form-item label="dicom文件上传时间" prop="uploadDate"> <!-- <el-form-item label="dicom文件上传时间" prop="uploadDate">
<el-date-picker <el-date-picker
v-model="queryParams.uploadDate" v-model="queryParams.uploadDate"
value-format="YYYY-MM-DD HH:mm:ss" value-format="YYYY-MM-DD HH:mm:ss"
@ -132,7 +136,7 @@
class="!w-240px" class="!w-240px"
/> />
</el-form-item> --> </el-form-item> -->
<!-- <el-form-item label="机构名称" prop="orgName"> <!-- <el-form-item label="机构名称" prop="orgName">
<el-input <el-input
v-model="queryParams.orgName" v-model="queryParams.orgName"
placeholder="请输入机构名称" placeholder="请输入机构名称"
@ -141,7 +145,7 @@
class="!w-240px" class="!w-240px"
/> />
</el-form-item> --> </el-form-item> -->
<!-- <el-form-item label="机构ID" prop="orgId"> <!-- <el-form-item label="机构ID" prop="orgId">
<el-input <el-input
v-model="queryParams.orgId" v-model="queryParams.orgId"
placeholder="请输入机构ID" placeholder="请输入机构ID"
@ -150,7 +154,7 @@
class="!w-240px" class="!w-240px"
/> />
</el-form-item> --> </el-form-item> -->
<!-- <el-form-item label="上级判读机构id列表orgid1,orgid2,orgid3" prop="highLevelOrgId"> <!-- <el-form-item label="上级判读机构id列表orgid1,orgid2,orgid3" prop="highLevelOrgId">
<el-input <el-input
v-model="queryParams.highLevelOrgId" v-model="queryParams.highLevelOrgId"
placeholder="请输入上级判读机构id列表orgid1,orgid2,orgid3" placeholder="请输入上级判读机构id列表orgid1,orgid2,orgid3"
@ -159,7 +163,7 @@
class="!w-240px" class="!w-240px"
/> />
</el-form-item> --> </el-form-item> -->
<!-- <el-form-item label="创建时间:年月日时分秒" prop="createDate"> <!-- <el-form-item label="创建时间:年月日时分秒" prop="createDate">
<el-date-picker <el-date-picker
v-model="queryParams.createDate" v-model="queryParams.createDate"
value-format="YYYY-MM-DD HH:mm:ss" value-format="YYYY-MM-DD HH:mm:ss"
@ -170,7 +174,7 @@
class="!w-240px" class="!w-240px"
/> />
</el-form-item> --> </el-form-item> -->
<!-- <el-form-item label="诊断结论" prop="diagResults"> <!-- <el-form-item label="诊断结论" prop="diagResults">
<el-input <el-input
v-model="queryParams.diagResults" v-model="queryParams.diagResults"
placeholder="请输入诊断结论" placeholder="请输入诊断结论"
@ -179,7 +183,7 @@
class="!w-240px" class="!w-240px"
/> />
</el-form-item> --> </el-form-item> -->
<!-- <el-form-item label="下诊断结论的时间:年月日时分秒" prop="diagDate"> <!-- <el-form-item label="下诊断结论的时间:年月日时分秒" prop="diagDate">
<el-date-picker <el-date-picker
v-model="queryParams.diagDate" v-model="queryParams.diagDate"
value-format="YYYY-MM-DD HH:mm:ss" value-format="YYYY-MM-DD HH:mm:ss"
@ -190,7 +194,7 @@
class="!w-240px" class="!w-240px"
/> />
</el-form-item> --> </el-form-item> -->
<!-- <el-form-item label="诊断医生" prop="diagDoctor"> <!-- <el-form-item label="诊断医生" prop="diagDoctor">
<el-input <el-input
v-model="queryParams.diagDoctor" v-model="queryParams.diagDoctor"
placeholder="请输入诊断医生" placeholder="请输入诊断医生"
@ -208,7 +212,7 @@
class="!w-240px" class="!w-240px"
/> />
</el-form-item> --> </el-form-item> -->
<!-- <el-form-item label="审核日期:年月日时分秒" prop="reviewDate"> <!-- <el-form-item label="审核日期:年月日时分秒" prop="reviewDate">
<el-date-picker <el-date-picker
v-model="queryParams.reviewDate" v-model="queryParams.reviewDate"
value-format="YYYY-MM-DD HH:mm:ss" value-format="YYYY-MM-DD HH:mm:ss"
@ -266,14 +270,20 @@
<!-- 列表 --> <!-- 列表 -->
<ContentWrap> <ContentWrap>
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true" @row-dblclick="handleEdit"> <el-table
<el-table-column type="index" width="50px"/> v-loading="loading"
:data="list"
:stripe="true"
:show-overflow-tooltip="true"
@row-dblclick="handleEdit"
>
<el-table-column type="index" width="50px" />
<el-table-column label="" width="150px"> <el-table-column label="" width="150px">
<template #default="scope"> <template #default="scope">
<el-image :src="scope.row.thumbnailImgUrl"/> <el-image :src="scope.row.thumbnailImgUrl" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="主键" align="center" prop="id" v-if="false"/> <el-table-column label="主键" align="center" prop="id" v-if="false" />
<el-table-column label="检查ID" align="center" prop="examId" /> <el-table-column label="检查ID" align="center" prop="examId" />
<el-table-column label="患者姓名" align="center" prop="pname" /> <el-table-column label="患者姓名" align="center" prop="pname" />
<el-table-column label="性别" align="center" prop="gender" /> <el-table-column label="性别" align="center" prop="gender" />
@ -289,14 +299,14 @@
<el-table-column label="Se/Im" align="center" prop="seDc" /> <el-table-column label="Se/Im" align="center" prop="seDc" />
<el-table-column label="检查项目名称" align="center" prop="examItemName" /> <el-table-column label="检查项目名称" align="center" prop="examItemName" />
<el-table-column label="报告状态" align="center" prop="reportstatus" > <el-table-column label="报告状态" align="center" prop="reportstatus">
<template #default="scope"> <template #default="scope">
<el-tag :type="scope.row.reportstatus === '已审核' ? 'danger':'success'"> <el-tag :type="scope.row.reportstatus === '已审核' ? 'danger' : 'success'">
<span style="">{{ scope.row.reportstatus }}</span> <span style="">{{ scope.row.reportstatus }}</span>
</el-tag> </el-tag>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
label="申请日期" label="申请日期"
align="center" align="center"
@ -312,8 +322,13 @@
width="180px" width="180px"
/> />
<el-table-column label="机构名称" align="center" prop="orgName" /> <el-table-column label="机构名称" align="center" prop="orgName" />
<el-table-column label="机构ID" align="center" prop="orgId" v-if="false"/> <el-table-column label="机构ID" align="center" prop="orgId" v-if="false" />
<el-table-column label="上级判读机构id列表orgid1,orgid2,orgid3" align="center" prop="highLevelOrgId" v-if="false" /> <el-table-column
label="上级判读机构id列表orgid1,orgid2,orgid3"
align="center"
prop="highLevelOrgId"
v-if="false"
/>
<el-table-column <el-table-column
label="创建时间:年月日时分秒" label="创建时间:年月日时分秒"
align="center" align="center"
@ -322,8 +337,8 @@
width="180px" width="180px"
v-if="false" v-if="false"
/> />
<el-table-column label="检查所见" align="center" prop="examDescription" v-if="false"/> <el-table-column label="检查所见" align="center" prop="examDescription" v-if="false" />
<el-table-column label="诊断结论" align="center" prop="diagResults" v-if="false"/> <el-table-column label="诊断结论" align="center" prop="diagResults" v-if="false" />
<el-table-column <el-table-column
label="下诊断结论的时间:年月日时分秒" label="下诊断结论的时间:年月日时分秒"
align="center" align="center"
@ -353,15 +368,14 @@
<el-table-column label="操作" align="center"> <el-table-column label="操作" align="center">
<template #default="scope"> <template #default="scope">
<el-button <el-button
size="small" size="small"
type="primary" type="primary"
@click="getuporghiorgid(scope.row.id, scope.row.orgId,scope.row.reportstatus)" @click="getuporghiorgid(scope.row.id, scope.row.orgId, scope.row.reportstatus)"
v-hasPermi="['tblist:patientexamlist:query']" v-hasPermi="['tblist:patientexamlist:query']"
> >
申请 申请
</el-button> </el-button>
<!-- <el-button <!-- <el-button
link link
type="danger" type="danger"
@click="handleDelete(scope.row.id)" @click="handleDelete(scope.row.id)"
@ -383,8 +397,8 @@
<!-- 表单弹窗添加/修改 --> <!-- 表单弹窗添加/修改 -->
<PatientexamlistForm ref="formRef" @success="getList" /> <PatientexamlistForm ref="formRef" @success="getList" />
<!-- 表单弹窗超声组件 --> <!-- 表单弹窗超声组件 -->
<Ultrasonic ref="ultrasonic" /> <Ultrasonic ref="ultrasonic" @success="getList" />
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
@ -392,8 +406,7 @@ import { dateFormatter } from '@/utils/formatTime'
import download from '@/utils/download' import download from '@/utils/download'
import { PatientexamlistApi, PatientexamlistVO } from '@/api/tblist/patientexamlist' import { PatientexamlistApi, PatientexamlistVO } from '@/api/tblist/patientexamlist'
import PatientexamlistForm from './PatientexamlistForm.vue' import PatientexamlistForm from './PatientexamlistForm.vue'
import Ultrasonic from '/src/views/ultrasoniccom/ultrasonicForm.vue' import Ultrasonic from '/src/views/ultrasoniccom/ultrasonicForm.vue'
/** PACS检查列表 列表 */ /** PACS检查列表 列表 */
defineOptions({ name: 'Patientexamlist' }) defineOptions({ name: 'Patientexamlist' })
@ -412,15 +425,15 @@ const queryParams = reactive({
gender: undefined, gender: undefined,
birthday: undefined, birthday: undefined,
examDate: [], examDate: [],
deviceType: undefined, deviceType: '',
seDc: undefined, seDc: undefined,
examItemName: undefined, examItemName: undefined,
reportstatus: undefined, reportstatus: undefined,
applicationDate: [], applicationDate: [],
uploadDate: [], uploadDate: [],
orgName: undefined, orgName: undefined,
orgId: "", orgId: '',
highLevelOrgId: "", highLevelOrgId: '',
createDate: [], createDate: [],
examDescription: undefined, examDescription: undefined,
diagResults: undefined, diagResults: undefined,
@ -429,88 +442,79 @@ const queryParams = reactive({
reviewDoctor: undefined, reviewDoctor: undefined,
reviewDate: [], reviewDate: [],
thumbnailImgUrl: undefined, thumbnailImgUrl: undefined,
createTime: [], createTime: []
}) })
const queryFormRef = ref() // const queryFormRef = ref() //
const exportLoading = ref(false) // const exportLoading = ref(false) //
/** 超声组件 */ /** 超声组件 */
const ultrasonic = ref(); const ultrasonic = ref()
const openultrForm = (id:number,orgid:string,regid:string) => { const openultrForm = (id: number, orgid: string, regid: string) => {
ultrasonic.value.open(id, orgid, regid)
ultrasonic.value.open(id,orgid,regid)
} }
/** 表格行点击 */ /** 表格行点击 */
const clickNumber = ref(0); const clickNumber = ref(0)
function handleEdit(row) { function handleEdit(row) {
console.log(111111121212) console.log(111111121212)
openultrForm(row.id,row.orgId,row.regId) openultrForm(row.id, row.orgId, row.regId)
/* clickNumber.value++; if(row.deviceType!="US")//US
{
openultrForm(row.id,row.orgId,row.regId)
}
/* clickNumber.value++;
if (clickNumber.value == 2) { if (clickNumber.value == 2) {
} }
clickNumber.value = 0; */ clickNumber.value = 0; */
} }
/** aaaaa **/ /** aaaaa **/
const examDate_picker = ref(null); const examDate_picker = ref(null)
const examDate_radio = ref(null); const examDate_radio = ref(null)
const examDate_radio_value = ref(1); const examDate_radio_value = ref(1)
const examDate_radio_change = () => {
const examDate_radio_change = ()=>{ if ([1, 2, 3, 4].includes(examDate_radio_value.value)) {
if([1,2,3,4].includes(examDate_radio_value.value))
{
let timesta = new Date() let timesta = new Date()
let timeend = new Date() let timeend = new Date()
// //
if (examDate_radio_value.value===1) { if (examDate_radio_value.value === 1) {
queryParams.examDate = [nowDate(timesta), nowDate(timeend)]
queryParams.examDate=[nowDate(timesta),nowDate(timeend)]; } else if (examDate_radio_value.value === 2) {
} else if (examDate_radio_value.value===2)
{
timesta.setDate(timesta.getDate() - 1) timesta.setDate(timesta.getDate() - 1)
queryParams.examDate=[nowDate(timesta),nowDate(timeend)]; queryParams.examDate = [nowDate(timesta), nowDate(timeend)]
} } else if (examDate_radio_value.value === 3) {
else if(examDate_radio_value.value===3)
{
timesta.setDate(timesta.getDate() - 3) timesta.setDate(timesta.getDate() - 3)
queryParams.examDate=[nowDate(timesta),nowDate(timeend)]; queryParams.examDate = [nowDate(timesta), nowDate(timeend)]
} } else if (examDate_radio_value.value === 4) {
else if(examDate_radio_value.value===4)
{
timesta.setDate(timesta.getDate() - 7) timesta.setDate(timesta.getDate() - 7)
queryParams.examDate=[nowDate(timesta),nowDate(timeend)]; queryParams.examDate = [nowDate(timesta), nowDate(timeend)]
} }
handleQuery(); handleQuery()
}else if(5===examDate_radio_value.value) } else if (5 === examDate_radio_value.value) {
{ queryParams.examDate = []
queryParams.examDate=[];
} }
} }
/// ///
function nowDate(time) { function nowDate(time) {
var year = time.getFullYear(); // var year = time.getFullYear() //
var month = (time.getMonth() + 1).toString().padStart(2, '0'); // var month = (time.getMonth() + 1).toString().padStart(2, '0') //
var date = time.getDate().toString().padStart(2, '0'); // var date = time.getDate().toString().padStart(2, '0') //
var hour = time.getHours().toString().padStart(2, '0'); // var hour = time.getHours().toString().padStart(2, '0') //
var minute = time.getMinutes().toString().padStart(2, '0'); // var minute = time.getMinutes().toString().padStart(2, '0') //
var second = time.getSeconds().toString().padStart(2, '0'); // var second = time.getSeconds().toString().padStart(2, '0') //
return ( return year + '-' + month + '-' + date + ' ' + hour + ':' + minute + ':' + second
year + "-" + month + "-" + date + " " + hour + ":" + minute + ":" + second }
)
}
/** 查询列表 */ /** 查询列表 */
const getList = async () => { const getList = async () => {
loading.value = true loading.value = true
try { try {
queryParams.deviceType = 'CT'
const data = await PatientexamlistApi.getPatientexamlistPage(queryParams) const data = await PatientexamlistApi.getPatientexamlistPage(queryParams)
list.value = data.list list.value = data.list
total.value = data.total total.value = data.total
@ -522,22 +526,23 @@ const getList = async () => {
/** 搜索按钮操作 */ /** 搜索按钮操作 */
const handleQuery = () => { const handleQuery = () => {
queryParams.pageNo = 1 queryParams.pageNo = 1
// queryParams.deviceType = 'CT'
queryParams.orgId="" //
queryParams.highLevelOrgId="" queryParams.orgId = ''
queryParams.highLevelOrgId = ''
getList() getList()
} }
/** 重置按钮操作 */ /** 重置按钮操作 */
const resetQuery = () => { const resetQuery = () => {
queryFormRef.value.resetFields(); queryFormRef.value.resetFields()
/** aaaaa **/ /** aaaaa **/
// //
examDate_radio_value.value=1; examDate_radio_value.value = 1
examDate_radio_change(); examDate_radio_change()
if(5===examDate_radio_value.value) handleQuery(); if (5 === examDate_radio_value.value) handleQuery()
// //
//handleQuery(); //handleQuery();
} }
@ -549,26 +554,20 @@ const openForm = (type: string, id?: number) => {
} }
/** 申请后更新上级机构字段*/ /** 申请后更新上级机构字段*/
const getuporghiorgid=async (id: number,orgId:string,reportstatus:string) => { const getuporghiorgid = async (id: number, orgId: string, reportstatus: string) => {
try { try {
if(reportstatus=="未申请") if (reportstatus == '未申请') {
{ await message.confirm('是否要进行申请?', '确认提示')
await message.confirm("是否要进行申请?","确认提示") await PatientexamlistApi.getuporghiid(id, orgId)
await PatientexamlistApi.getuporghiid(id,orgId) message.success(t('common.delSuccess'))
message.success(t('common.delSuccess')) //
// await getList()
await getList() } else {
} await message.info('只有未申请才可以进行操作')
else }
{
await message. info("只有未申请才可以进行操作")
}
} catch {} } catch {}
} }
/** 删除按钮操作 */ /** 删除按钮操作 */
const handleDelete = async (id: number) => { const handleDelete = async (id: number) => {
try { try {
@ -610,12 +609,11 @@ const handleExport = async () => {
/** 初始化 **/ /** 初始化 **/
onMounted(() => { onMounted(() => {
// //
/** aaaaa **/ /** aaaaa **/
// //
examDate_radio_change(); examDate_radio_change()
if(5===examDate_radio_value.value) handleQuery(); if (5 === examDate_radio_value.value) handleQuery()
// //
//getList(); //getList();
@ -627,4 +625,4 @@ onMounted(() => {
.el-form-item__label { .el-form-item__label {
white-space: nowrap; white-space: nowrap;
} }
</style> </style>

View File

@ -0,0 +1,230 @@
<template>
<Dialog :title="dialogTitle" v-model="dialogVisible">
<el-form
ref="formRef"
:model="formData"
:rules="formRules"
label-width="100px"
v-loading="formLoading"
>
<el-form-item label="检查ID体检编号、住院号、门诊号等" prop="examId">
<el-input v-model="formData.examId" placeholder="请输入检查ID体检编号、住院号、门诊号等" />
</el-form-item>
<el-form-item label="患者姓名" prop="pname">
<el-input v-model="formData.pname" placeholder="请输入患者姓名" />
</el-form-item>
<el-form-item label="性别" prop="gender">
<el-input v-model="formData.gender" placeholder="请输入性别" />
</el-form-item>
<el-form-item label="出生日期" prop="birthday">
<el-input v-model="formData.birthday" placeholder="请输入出生日期" />
</el-form-item>
<el-form-item label="检查日期:年月日时分秒" prop="examDate">
<el-date-picker
v-model="formData.examDate"
type="date"
value-format="x"
placeholder="选择检查日期:年月日时分秒"
/>
</el-form-item>
<el-form-item label="设备类型CT DR MR B超 彩超等" prop="deviceType">
<el-select v-model="formData.deviceType" placeholder="请选择设备类型CT DR MR B超 彩超等">
<el-option label="请选择字典生成" value="" />
</el-select>
</el-form-item>
<el-form-item label="seri_dicomCount:序列数量/dicom数量" prop="seDc">
<el-input v-model="formData.seDc" placeholder="请输入seri_dicomCount:序列数量/dicom数量" />
</el-form-item>
<el-form-item label="检查项目名称" prop="examItemName">
<el-input v-model="formData.examItemName" placeholder="请输入检查项目名称" />
</el-form-item>
<el-form-item label="报告状态" prop="reportstatus">
<el-radio-group v-model="formData.reportstatus">
<el-radio label="1">请选择字典生成</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="申请日期:年月日时分秒" prop="applicationDate">
<el-date-picker
v-model="formData.applicationDate"
type="date"
value-format="x"
placeholder="选择申请日期:年月日时分秒"
/>
</el-form-item>
<el-form-item label="dicom文件上传时间" prop="uploadDate">
<el-date-picker
v-model="formData.uploadDate"
type="date"
value-format="x"
placeholder="选择dicom文件上传时间"
/>
</el-form-item>
<el-form-item label="机构名称" prop="orgName">
<el-input v-model="formData.orgName" placeholder="请输入机构名称" />
</el-form-item>
<el-form-item label="机构ID" prop="orgId">
<el-input v-model="formData.orgId" placeholder="请输入机构ID" />
</el-form-item>
<el-form-item label="上级判读机构id列表orgid1,orgid2,orgid3" prop="highLevelOrgId">
<el-input v-model="formData.highLevelOrgId" placeholder="请输入上级判读机构id列表orgid1,orgid2,orgid3" />
</el-form-item>
<el-form-item label="创建时间:年月日时分秒" prop="createDate">
<el-date-picker
v-model="formData.createDate"
type="date"
value-format="x"
placeholder="选择创建时间:年月日时分秒"
/>
</el-form-item>
<el-form-item label="检查所见" prop="examDescription">
<Editor v-model="formData.examDescription" height="150px" />
</el-form-item>
<el-form-item label="诊断结论" prop="diagResults">
<el-input v-model="formData.diagResults" placeholder="请输入诊断结论" />
</el-form-item>
<el-form-item label="下诊断结论的时间:年月日时分秒" prop="diagDate">
<el-date-picker
v-model="formData.diagDate"
type="date"
value-format="x"
placeholder="选择下诊断结论的时间:年月日时分秒"
/>
</el-form-item>
<el-form-item label="诊断医生" prop="diagDoctor">
<el-input v-model="formData.diagDoctor" placeholder="请输入诊断医生" />
</el-form-item>
<el-form-item label="审核医生" prop="reviewDoctor">
<el-input v-model="formData.reviewDoctor" placeholder="请输入审核医生" />
</el-form-item>
<el-form-item label="审核日期:年月日时分秒" prop="reviewDate">
<el-date-picker
v-model="formData.reviewDate"
type="date"
value-format="x"
placeholder="选择审核日期:年月日时分秒"
/>
</el-form-item>
<el-form-item label="缩略图oss url, httP:oss url" prop="thumbnailImgUrl">
<el-input v-model="formData.thumbnailImgUrl" placeholder="请输入缩略图oss url, httP:oss url" />
</el-form-item>
</el-form>
<template #footer>
<el-button @click="submitForm" type="primary" :disabled="formLoading"> </el-button>
<el-button @click="dialogVisible = false"> </el-button>
</template>
</Dialog>
</template>
<script setup lang="ts">
import { PatientexamlistApi, PatientexamlistVO } from '@/api/tblist/patientexamlist'
/** PACS检查列表 表单 */
defineOptions({ name: 'PatientexamlistForm' })
const { t } = useI18n() //
const message = useMessage() //
const dialogVisible = ref(false) //
const dialogTitle = ref('') //
const formLoading = ref(false) // 12
const formType = ref('') // create - update -
const formData = ref({
id: undefined,
examId: undefined,
pname: undefined,
gender: undefined,
birthday: undefined,
examDate: undefined,
deviceType: undefined,
seDc: undefined,
examItemName: undefined,
reportstatus: undefined,
applicationDate: undefined,
uploadDate: undefined,
orgName: undefined,
orgId: undefined,
highLevelOrgId: undefined,
createDate: undefined,
examDescription: undefined,
diagResults: undefined,
diagDate: undefined,
diagDoctor: undefined,
reviewDoctor: undefined,
reviewDate: undefined,
thumbnailImgUrl: undefined,
})
const formRules = reactive({
})
const formRef = ref() // Ref
/** 打开弹窗 */
const open = async (type: string, id?: number) => {
dialogVisible.value = true
dialogTitle.value = t('action.' + type)
formType.value = type
resetForm()
//
if (id) {
formLoading.value = true
try {
formData.value = await PatientexamlistApi.getPatientexamlist(id)
} finally {
formLoading.value = false
}
}
}
defineExpose({ open }) // open
/** 提交表单 */
const emit = defineEmits(['success']) // success
const submitForm = async () => {
//
await formRef.value.validate()
//
formLoading.value = true
try {
const data = formData.value as unknown as PatientexamlistVO
if (formType.value === 'create') {
await PatientexamlistApi.createPatientexamlist(data)
message.success(t('common.createSuccess'))
} else {
await PatientexamlistApi.updatePatientexamlist(data)
message.success(t('common.updateSuccess'))
}
dialogVisible.value = false
//
emit('success')
} finally {
formLoading.value = false
}
}
/** 重置表单 */
const resetForm = () => {
formData.value = {
id: undefined,
examId: undefined,
pname: undefined,
gender: undefined,
birthday: undefined,
examDate: undefined,
deviceType: undefined,
seDc: undefined,
examItemName: undefined,
reportstatus: undefined,
applicationDate: undefined,
uploadDate: undefined,
orgName: undefined,
orgId: undefined,
highLevelOrgId: undefined,
createDate: undefined,
examDescription: undefined,
diagResults: undefined,
diagDate: undefined,
diagDoctor: undefined,
reviewDoctor: undefined,
reviewDate: undefined,
thumbnailImgUrl: undefined,
}
formRef.value?.resetFields()
}
</script>

View File

@ -0,0 +1,638 @@
<template>
<ContentWrap>
<!-- 搜索工作栏 超声工作站-->
<el-form
class="-mb-15px"
:model="queryParams"
ref="queryFormRef"
:inline="true"
label-width="68px"
>
<el-form-item label="检查ID" prop="examId">
<el-input
v-model="queryParams.examId"
placeholder="检查ID\体检编号\住院号\门诊号等"
clearable
@keyup.enter="handleQuery"
class="!w-215px"
/>
</el-form-item>
<el-form-item label="患者姓名" prop="pName">
<el-input
v-model="queryParams.pname"
placeholder="请输入患者姓名"
clearable
@keyup.enter="handleQuery"
class="!w-160px"
/>
</el-form-item>
<!-- <el-form-item label="性别" prop="gender">
<el-input
v-model="queryParams.gender"
placeholder="请输入性别"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item> -->
<!-- <el-form-item label="出生日期" prop="birthday">
<el-input
v-model="queryParams.birthday"
placeholder="请输入出生日期"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item> -->
<el-form-item label="检查日期" prop="examDate" size="mini">
<!-- aaaaa -->
<el-radio-group ref="examDate_radio" v-model="examDate_radio_value" @change="examDate_radio_change">
<el-radio style="margin-right: 15px;" :value="1">今天</el-radio>
<el-radio style="margin-right: 15px;" :value="2">昨天</el-radio>
<el-radio style="margin-right: 15px;" :value="3">三天内</el-radio>
<el-radio style="margin-right: 15px;" :value="4">一周</el-radio>
<el-radio style="margin-right: 25px;" :value="5">
<el-date-picker
ref="examDate_picker"
:disabled="examDate_radio_value===5 ? false:true"
v-model="queryParams.examDate"
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-240px"/>
</el-radio>
</el-radio-group>
</el-form-item>
<!-- <el-form-item label="设备类型" prop="deviceType">
<el-select
v-model="queryParams.deviceType"
placeholder="请选择设备类型"
clearable
class="!w-240px"
>
<el-option label="请选择字典生成" value="" />
</el-select>
</el-form-item> -->
<!-- <el-form-item label="seri_dicomCount:序列数量/dicom数量" prop="seDc">
<el-input
v-model="queryParams.seDc"
placeholder="请输入seri_dicomCount:序列数量/dicom数量"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item> -->
<el-form-item label="检查项目" prop="examItemName">
<el-input
v-model="queryParams.examItemName"
placeholder="请输入检查项"
clearable
@keyup.enter="handleQuery"
class="!w-220px"
/>
</el-form-item>
<el-form-item label="报告状态" prop="reportstatus">
<el-select
v-model="queryParams.reportstatus"
placeholder="请选择报告状态"
clearable
class="!w-150px"
>
<el-option label="待分检" value="待分检" />
<el-option label="已分检" value="已分检" />
<el-option label="已分析" value="已分析" />
<el-option label="已审核" value="已审核" />
</el-select>
</el-form-item>
<!-- <el-form-item label="申请日期:年月日时分秒" prop="applicationDate">
<el-date-picker
v-model="queryParams.applicationDate"
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-240px"
/>
</el-form-item> -->
<!-- <el-form-item label="dicom文件上传时间" prop="uploadDate">
<el-date-picker
v-model="queryParams.uploadDate"
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-240px"
/>
</el-form-item> -->
<!-- <el-form-item label="机构名称" prop="orgName">
<el-input
v-model="queryParams.orgName"
placeholder="请输入机构名称"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item> -->
<!-- <el-form-item label="机构ID" prop="orgId">
<el-input
v-model="queryParams.orgId"
placeholder="请输入机构ID"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item> -->
<!-- <el-form-item label="上级判读机构id列表orgid1,orgid2,orgid3" prop="highLevelOrgId">
<el-input
v-model="queryParams.highLevelOrgId"
placeholder="请输入上级判读机构id列表orgid1,orgid2,orgid3"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item> -->
<!-- <el-form-item label="创建时间:年月日时分秒" prop="createDate">
<el-date-picker
v-model="queryParams.createDate"
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-240px"
/>
</el-form-item> -->
<!-- <el-form-item label="诊断结论" prop="diagResults">
<el-input
v-model="queryParams.diagResults"
placeholder="请输入诊断结论"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item> -->
<!-- <el-form-item label="下诊断结论的时间:年月日时分秒" prop="diagDate">
<el-date-picker
v-model="queryParams.diagDate"
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-240px"
/>
</el-form-item> -->
<!-- <el-form-item label="诊断医生" prop="diagDoctor">
<el-input
v-model="queryParams.diagDoctor"
placeholder="请输入诊断医生"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="审核医生" prop="reviewDoctor">
<el-input
v-model="queryParams.reviewDoctor"
placeholder="请输入审核医生"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item> -->
<!-- <el-form-item label="审核日期:年月日时分秒" prop="reviewDate">
<el-date-picker
v-model="queryParams.reviewDate"
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-240px"
/>
</el-form-item>
<el-form-item label="缩略图oss url, httP:oss url" prop="thumbnailImgUrl">
<el-input
v-model="queryParams.thumbnailImgUrl"
placeholder="请输入缩略图oss url, httP:oss url"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</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-240px"
/>
</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="['tblist:patientexamlist:create']"
v-if="false"
>
<Icon icon="ep:plus" class="mr-5px" /> 新增
</el-button>
<el-button
type="success"
plain
@click="handleExport"
:loading="exportLoading"
v-hasPermi="['tblist:patientexamlist:export']"
>
<Icon icon="ep:download" class="mr-5px" /> 导出
</el-button>
</el-form-item>
</el-form>
</ContentWrap>
<!-- 列表 -->
<ContentWrap>
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true" @row-dblclick="handleEdit">
<el-table-column type="index" width="50px"/>
<el-table-column label="" width="150px">
<template #default="scope">
<el-image :src="scope.row.thumbnailImgUrl"/>
</template>
</el-table-column>
<el-table-column label="主键" align="center" prop="id" v-if="false"/>
<el-table-column label="检查ID" align="center" prop="examId" />
<el-table-column label="患者姓名" align="center" prop="pname" />
<el-table-column label="性别" align="center" prop="gender" />
<el-table-column label="出生日期" align="center" prop="birthday" />
<el-table-column
label="检查日期"
align="center"
prop="examDate"
:formatter="dateFormatter"
width="180px"
/>
<el-table-column label="设备类型" align="center" prop="deviceType" />
<el-table-column label="Se/Im" align="center" prop="seDc" />
<el-table-column label="检查项目名称" align="center" prop="examItemName" />
<el-table-column label="报告状态" align="center" prop="reportstatus" >
<template #default="scope">
<el-tag :type="scope.row.reportstatus === '已审核' ? 'danger':'success'">
<span style="">{{ scope.row.reportstatus }}</span>
</el-tag>
</template>
</el-table-column>
<el-table-column
label="申请日期"
align="center"
prop="applicationDate"
:formatter="dateFormatter"
width="180px"
/>
<el-table-column
label="上传时间"
align="center"
prop="uploadDate"
:formatter="dateFormatter"
width="180px"
/>
<el-table-column label="机构名称" align="center" prop="orgName" />
<el-table-column label="机构ID" align="center" prop="orgId" v-if="false"/>
<el-table-column label="上级判读机构id列表orgid1,orgid2,orgid3" align="center" prop="highLevelOrgId" v-if="false" />
<el-table-column
label="创建时间:年月日时分秒"
align="center"
prop="createDate"
:formatter="dateFormatter"
width="180px"
v-if="false"
/>
<el-table-column label="检查所见" align="center" prop="examDescription" v-if="false"/>
<el-table-column label="诊断结论" align="center" prop="diagResults" v-if="false"/>
<el-table-column
label="下诊断结论的时间:年月日时分秒"
align="center"
prop="diagDate"
:formatter="dateFormatter"
width="180px"
v-if="false"
/>
<el-table-column label="诊断医生" align="center" prop="diagDoctor" v-if="false" />
<el-table-column label="审核医生" align="center" prop="reviewDoctor" v-if="false" />
<el-table-column
label="审核日期:年月日时分秒"
align="center"
prop="reviewDate"
:formatter="dateFormatter"
width="180px"
v-if="false"
/>
<el-table-column
label="框架需要:创建时间"
align="center"
prop="createTime"
:formatter="dateFormatter"
width="180px"
v-if="false"
/>
<el-table-column label="操作" align="center">
<template #default="scope">
<el-button
size="small"
type="primary"
@click="getuporghiorgid(scope.row.id, scope.row.orgId,scope.row.reportstatus)"
v-hasPermi="['tblist:patientexamlist:query']"
>
申请
</el-button>
<!-- <el-button
link
type="danger"
@click="handleDelete(scope.row.id)"
v-hasPermi="['tblist:patientexamlist:delete']"
>
删除
</el-button> -->
</template>
</el-table-column>
</el-table>
<!-- 分页 -->
<Pagination
:total="total"
v-model:page="queryParams.pageNo"
v-model:limit="queryParams.pageSize"
@pagination="getList"
/>
</ContentWrap>
<!-- 表单弹窗添加/修改 -->
<PatientexamlistForm ref="formRef" @success="getList" />
<!-- 表单弹窗超声组件 -->
<Ultrasonic ref="ultrasonic" @success="getList" />
</template>
<script setup lang="ts">
import { dateFormatter } from '@/utils/formatTime'
import download from '@/utils/download'
import { PatientexamlistApi, PatientexamlistVO } from '@/api/tblist/patientexamlist'
import PatientexamlistForm from './PatientexamlistForm.vue'
import Ultrasonic from '/src/views/ultrasoniccom/ultrasonicForm.vue'
/** PACS检查列表 列表 */
defineOptions({ name: 'Patientexamlist' })
const message = useMessage() //
const { t } = useI18n() //
const loading = ref(true) //
const list = ref<PatientexamlistVO[]>([]) //
const total = ref(0) //
const queryParams = reactive({
pageNo: 1,
pageSize: 10,
examId: undefined,
pname: undefined,
gender: undefined,
birthday: undefined,
examDate: [],
deviceType: "",
seDc: undefined,
examItemName: undefined,
reportstatus: undefined,
applicationDate: [],
uploadDate: [],
orgName: undefined,
orgId: "",
highLevelOrgId: "",
createDate: [],
examDescription: undefined,
diagResults: undefined,
diagDate: [],
diagDoctor: undefined,
reviewDoctor: undefined,
reviewDate: [],
thumbnailImgUrl: undefined,
createTime: [],
})
const queryFormRef = ref() //
const exportLoading = ref(false) //
/** 超声组件 */
const ultrasonic = ref();
const openultrForm = (id:number,orgid:string,regid:string) => {
ultrasonic.value.open(id,orgid,regid)
}
/** 表格行点击 */
const clickNumber = ref(0);
function handleEdit(row) {
console.log(111111121212)
openultrForm(row.id,row.orgId,row.regId)
if(row.deviceType=="US")//US
{
openultrForm(row.id,row.orgId,row.regId)
}
/* clickNumber.value++;
if (clickNumber.value == 2) {
}
clickNumber.value = 0; */
}
/** aaaaa **/
const examDate_picker = ref(null);
const examDate_radio = ref(null);
const examDate_radio_value = ref(1);
const examDate_radio_change = ()=>{
if([1,2,3,4].includes(examDate_radio_value.value))
{
let timesta = new Date()
let timeend = new Date()
//
if (examDate_radio_value.value===1) {
queryParams.examDate=[nowDate(timesta),nowDate(timeend)];
} else if (examDate_radio_value.value===2)
{
timesta.setDate(timesta.getDate() - 1)
queryParams.examDate=[nowDate(timesta),nowDate(timeend)];
}
else if(examDate_radio_value.value===3)
{
timesta.setDate(timesta.getDate() - 3)
queryParams.examDate=[nowDate(timesta),nowDate(timeend)];
}
else if(examDate_radio_value.value===4)
{
timesta.setDate(timesta.getDate() - 7)
queryParams.examDate=[nowDate(timesta),nowDate(timeend)];
}
handleQuery();
}else if(5===examDate_radio_value.value)
{
queryParams.examDate=[];
}
}
///
function nowDate(time) {
var year = time.getFullYear(); //
var month = (time.getMonth() + 1).toString().padStart(2, '0'); //
var date = time.getDate().toString().padStart(2, '0'); //
var hour = time.getHours().toString().padStart(2, '0'); //
var minute = time.getMinutes().toString().padStart(2, '0'); //
var second = time.getSeconds().toString().padStart(2, '0'); //
return (
year + "-" + month + "-" + date + " " + hour + ":" + minute + ":" + second
)
}
/** 查询列表 */
const getList = async () => {
loading.value = true
try {
queryParams.deviceType="US"
const data = await PatientexamlistApi.getPatientexamlistPage(queryParams)
list.value = data.list
total.value = data.total
} finally {
loading.value = false
}
}
/** 搜索按钮操作 */
const handleQuery = () => {
queryParams.pageNo = 1
//
queryParams.orgId=""
queryParams.highLevelOrgId=""
queryParams.deviceType="US"
getList()
}
/** 重置按钮操作 */
const resetQuery = () => {
queryFormRef.value.resetFields();
/** aaaaa **/
//
examDate_radio_value.value=1;
examDate_radio_change();
if(5===examDate_radio_value.value) handleQuery();
//
//handleQuery();
}
/** 添加/修改操作 */
const formRef = ref()
const openForm = (type: string, id?: number) => {
formRef.value.open(type, id)
}
/** 申请后更新上级机构字段*/
const getuporghiorgid=async (id: number,orgId:string,reportstatus:string) => {
try {
if(reportstatus=="未申请")
{
await message.confirm("是否要进行申请?","确认提示")
await PatientexamlistApi.getuporghiid(id,orgId)
message.success(t('common.delSuccess'))
//
await getList()
}
else
{
await message. info("只有未申请才可以进行操作")
}
} catch {}
}
/** 删除按钮操作 */
const handleDelete = async (id: number) => {
try {
//
await message.delConfirm()
//
await PatientexamlistApi.deletePatientexamlist(id)
message.success(t('common.delSuccess'))
//
await getList()
} catch {}
}
/** 申请按钮操作 */
const handleSub = async (id: number) => {
try {
//
await message.delConfirm()
//
await PatientexamlistApi.deletePatientexamlist(id)
message.success(t('common.delSuccess'))
//
await getList()
} catch {}
}
/** 导出按钮操作 */
const handleExport = async () => {
try {
//
await message.exportConfirm()
//
exportLoading.value = true
const data = await PatientexamlistApi.exportPatientexamlist(queryParams)
download.excel(data, 'PACS检查列表.xls')
} catch {
} finally {
exportLoading.value = false
}
}
/** 初始化 **/
onMounted(() => {
//
/** aaaaa **/
//
examDate_radio_change();
if(5===examDate_radio_value.value) handleQuery();
//
//getList();
})
</script>
<style>
/* 为了防止 el-form-item 的标签文本换行可以添加以下CSS样式 */
.el-form-item__label {
white-space: nowrap;
}
</style>

View File

@ -31,7 +31,7 @@
<el-tab-pane label="通用模版"> <el-tab-pane label="通用模版">
<!-- --> <!-- -->
<el-tree <el-tree
style="min-width: 195px;" style="min-width: 195px"
v-loading="formLoading" v-loading="formLoading"
class="treeStyle" class="treeStyle"
:check-on-click-node="true" :check-on-click-node="true"
@ -87,7 +87,7 @@
:inline="true" :inline="true"
> >
<el-row> <el-row>
<el-col :span="8"> <el-col :span="7">
<el-form-item label="检查号" style="font-weight: bold"> <el-form-item label="检查号" style="font-weight: bold">
<el-input <el-input
v-model="applyFormVO.examId" v-model="applyFormVO.examId"
@ -101,7 +101,7 @@
<el-input v-model="applyFormVO.pname" style="width: 190px" :disabled="true" /> <el-input v-model="applyFormVO.pname" style="width: 190px" :disabled="true" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="9">
<el-form-item label="性别" style="font-weight: bold"> <el-form-item label="性别" style="font-weight: bold">
<el-input <el-input
v-model="applyFormVO.gender" v-model="applyFormVO.gender"
@ -110,7 +110,7 @@
/> />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="7">
<el-form-item label="出生日期" style="font-weight: bold"> <el-form-item label="出生日期" style="font-weight: bold">
<el-date-picker <el-date-picker
v-model="applyFormVO.birthday" v-model="applyFormVO.birthday"
@ -144,7 +144,7 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="7">
<el-form-item label="申请时间" style="font-weight: bold"> <el-form-item label="申请时间" style="font-weight: bold">
<el-date-picker <el-date-picker
v-model="applyFormVO.applicationDate" v-model="applyFormVO.applicationDate"
@ -254,12 +254,21 @@
/> />
</el-form-item> </el-form-item>
</div> </div>
<el-button
type="success"
plain
style="width: 80px; float: right; margin-right: 15px"
@click="save"
:disabled="savedisabled"
>保存</el-button
>
<el-button <el-button
type="primary" type="primary"
plain plain
style="width: 180px; float: right" v-show="examinedisabled"
style="width: 80px; float: right; margin-right: 15px"
@click="examine" @click="examine"
:disabled="applyFormVO.reportstatus === '已审核' ? true : false"
>审核</el-button >审核</el-button
> >
</el-tab-pane> </el-tab-pane>
@ -333,7 +342,7 @@
plain plain
style="width: 100%" style="width: 100%"
@click="upimagedeleteor()" @click="upimagedeleteor()"
:disabled="applyFormVO.reportstatus === '已审核' ? true : false" :disabled="savedisabled"
>图像删除</el-button >图像删除</el-button
> >
</div> </div>
@ -343,7 +352,7 @@
plain plain
style="width: 100%" style="width: 100%"
@click="getimages" @click="getimages"
:disabled="applyFormVO.reportstatus === '已审核' ? true : false" :disabled="savedisabled"
>图像刷新</el-button >图像刷新</el-button
> >
</div> </div>
@ -362,11 +371,17 @@
</el-dialog> </el-dialog>
<!-- </Dialog> --> <!-- </Dialog> -->
<!-- 弹窗--> <!-- 弹窗-->
<el-dialog v-model="dialogTableVisible" title="选择结论添加方式" width="320" align-center> <el-dialog v-model="dialogTableVisible" title="选择结论添加方式" width="320" align-center>
<div> <div>
<el-button @click="handleButtonClick('覆盖')" type="primary" style="font-size: 20px;">覆盖</el-button> <el-button @click="handleButtonClick('覆盖')" type="primary" style="font-size: 20px"
<el-button @click="handleButtonClick('追加')" type="success" style="font-size: 20px;">追加</el-button> >覆盖</el-button
<el-button @click="dialogTableVisible = false" type="info" style="font-size: 20px;">关闭</el-button> >
<el-button @click="handleButtonClick('追加')" type="success" style="font-size: 20px"
>追加</el-button
>
<el-button @click="dialogTableVisible = false" type="info" style="font-size: 20px"
>关闭</el-button
>
</div> </div>
</el-dialog> </el-dialog>
</template> </template>
@ -393,7 +408,8 @@ const dialogVisible = ref(false) // 弹窗的是否展示
const dialogTitle = ref('') // const dialogTitle = ref('') //
const formLoading = ref(false) // 12 const formLoading = ref(false) // 12
const examineFormVO = ref<PatientexamlistVO>({} as PatientexamlistVO) const examineFormVO = ref<PatientexamlistVO>({} as PatientexamlistVO)
const savedisabled = ref(true) //
const examinedisabled = ref(false) //
//使 //使
const clickuptime = async (pid: string) => { const clickuptime = async (pid: string) => {
await ultrasoniccomApi.upreporttemplatetime(pid) await ultrasoniccomApi.upreporttemplatetime(pid)
@ -424,8 +440,8 @@ const updateexamineimage = ref<updateexamineimageVO[]>([])
// //
const notes = ref() const notes = ref()
// //
const examine = async () => { const save = async () => {
try { try {
if (selecteimagedoneid === 0 || selecteimagedtwoid === 0 || selecteimagedthreeid === 0) { if (selecteimagedoneid === 0 || selecteimagedtwoid === 0 || selecteimagedthreeid === 0) {
message.warning('请选择影像图') message.warning('请选择影像图')
@ -433,7 +449,7 @@ const examine = async () => {
} }
// //
await message.delConfirm('是否进行审核', '确认') await message.delConfirm('是否进行保存', '确认')
let timesta = new Date() let timesta = new Date()
var localDateTime = new Date(timesta.getTime()).toISOString() // ISO var localDateTime = new Date(timesta.getTime()).toISOString() // ISO
localDateTime = localDateTime.slice(0, localDateTime.length - 1) localDateTime = localDateTime.slice(0, localDateTime.length - 1)
@ -444,8 +460,8 @@ const examine = async () => {
examineFormVO.value.notes = notes.value examineFormVO.value.notes = notes.value
examineFormVO.value.diagFlag = radio1.value examineFormVO.value.diagFlag = radio1.value
examineFormVO.value.diagDoctor = Profilevo.value.username examineFormVO.value.diagDoctor = Profilevo.value.username
examineFormVO.value.reviewDoctor = Profilevo.value.username // examineFormVO.value.reviewDoctor = Profilevo.value.username
examineFormVO.value.reportstatus = '已审核' examineFormVO.value.reportstatus = '已分析'
// examineFormVO.value.diagDate=localDateTime // examineFormVO.value.diagDate=localDateTime
// examineFormVO.value.reviewDate=dateTime // examineFormVO.value.reviewDate=dateTime
@ -454,12 +470,13 @@ const examine = async () => {
if (response) { if (response) {
// //
await upimageselect() await upimageselect()
message.alertSuccess('审核成功') message.alertSuccess('保存成功')
// data // data
console.log('接口调用成功') console.log('接口调用成功')
console.log('data:', response.data) console.log('data:', response.data)
// ID // ID
getPatientexamlist(ID) getPatientexamlist(ID)
emit('success')
} else { } else {
// //
console.error('接口调用失败:', response.msg) console.error('接口调用失败:', response.msg)
@ -469,6 +486,25 @@ const examine = async () => {
console.error('接口调用失败:', error) console.error('接口调用失败:', error)
} }
} }
//
const examine = async () => {
if (applyFormVO.value.reportstatus === '已分析') {
const response = await PatientexamlistApi.examine(ID.toString())
if (response) {
message.alertSuccess('审核成功')
// ID
getPatientexamlist(ID)
emit('success')
}
} else if (applyFormVO.value.reportstatus === '已审核') {
message.warning('已经审核,无需再次审核')
return
} else {
message.warning('请先进行保存')
return
}
}
/// ///
function nowDate(time) { function nowDate(time) {
@ -581,15 +617,35 @@ const upimagedeleteor = async () => {
deleteimageid.value = '' deleteimageid.value = ''
updateexamineimage.value = [] updateexamineimage.value = []
} }
//
const handleTabChange = async () => { const handleTabChange = async () => {
if (activeName.value == 'report') { if (activeName.value == 'report') {
if (reportimages.value.length === 0) { if (applyFormVO.value.reportstatus == '已分析' || applyFormVO.value.reportstatus == '已审核') {
const imageslist = await ultrasoniccomApi.getimageslist(orgId.value, regId.value, '1') showDiv()
console.log(imageslist) if (reportimages.value.length === 0) {
reportimages.value = imageslist const imageslist = await ultrasoniccomApi.getimageslist(orgId.value, regId.value, '1')
console.log(imageslist)
reportimages.value = imageslist
}
} else {
hideDiv()
} }
} }
} }
//
function hideDiv() {
var div = document.getElementById('printMe')
if (div) {
div.style.display = 'none'
}
}
//
function showDiv() {
var div = document.getElementById('printMe')
if (div) {
div.style.display = 'block'
}
}
// //
const age = ref() const age = ref()
const calculateAge = (birthdate) => { const calculateAge = (birthdate) => {
@ -740,6 +796,12 @@ const getPatientexamlist = async (id: number) => {
sj.value = applyFormVO.value.examDescription sj.value = applyFormVO.value.examDescription
notes.value = applyFormVO.value.notes notes.value = applyFormVO.value.notes
calculateAge(applyFormVO.value.birthday) calculateAge(applyFormVO.value.birthday)
if (applyFormVO.value.reportstatus == '已分检' || applyFormVO.value.reportstatus == '待分析') {
savedisabled.value = false
} else {
savedisabled.value = true
}
} }
defineExpose({ open }) // open defineExpose({ open }) // open
@ -755,6 +817,10 @@ const PrintForm = () => {
// //
const getlogininfo = async () => { const getlogininfo = async () => {
Profilevo.value = await getUserProfile() Profilevo.value = await getUserProfile()
console.log("审核是否可见"+Profilevo.value.isexamine)
if (Profilevo.value.isexamine === '1') {
examinedisabled.value = true
}
} }
/** 重置表单 */ /** 重置表单 */
@ -845,7 +911,6 @@ const chooseImage = (event, id: number) => {
display: flex; display: flex;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
} }
.demo-image { .demo-image {
@ -911,7 +976,7 @@ const chooseImage = (event, id: number) => {
.form-item { .form-item {
flex: 1; /* 均分宽度,使两个输入框平分容器的宽度 */ flex: 1; /* 均分宽度,使两个输入框平分容器的宽度 */
margin-right: 20px; margin-right: 20px;
font-weight:bold font-weight: bold;
} }
/* 报告样式 */ /* 报告样式 */