diff --git a/src/api/system/user/index.ts b/src/api/system/user/index.ts index 7f0fc3f4..bd022305 100644 --- a/src/api/system/user/index.ts +++ b/src/api/system/user/index.ts @@ -16,6 +16,7 @@ export interface UserVO { loginDate: Date createTime: Date orgId:string + isexamine:string } // 查询用户管理列表 diff --git a/src/api/system/user/profile.ts b/src/api/system/user/profile.ts index 1e80e854..b1eff295 100644 --- a/src/api/system/user/profile.ts +++ b/src/api/system/user/profile.ts @@ -29,6 +29,8 @@ export interface ProfileVO { loginIp: string loginDate: Date createTime: Date + isexamine:string + orgId:string } export interface UserProfileUpdateReqVO { diff --git a/src/api/tblist/patientexamlist/index.ts b/src/api/tblist/patientexamlist/index.ts index 01fd5e9a..a80a4d82 100644 --- a/src/api/tblist/patientexamlist/index.ts +++ b/src/api/tblist/patientexamlist/index.ts @@ -70,8 +70,13 @@ export const PatientexamlistApi = { return await request.get({ url: `/tblist/patientexamlist/UPDATEHigOrg?id=${id}&&orgId=${orgId}` }) }, - // 超声审核修改 + // 超声保存修改 examineupdatelist: async (data: PatientexamlistVO) => { return await request.put({ url: `/tblist/patientexamlist/examineupdate`, data }) }, + + // 超声审核 + examine: async (id: String) => { + return await request.get({ url: `/tblist/patientexamlist/examine?id=` + id }) + }, } diff --git a/src/assets/imgs/FLY.png b/src/assets/imgs/FLY.png new file mode 100644 index 00000000..17513c38 Binary files /dev/null and b/src/assets/imgs/FLY.png differ diff --git a/src/assets/imgs/客服.png b/src/assets/imgs/客服.png new file mode 100644 index 00000000..6664bb04 Binary files /dev/null and b/src/assets/imgs/客服.png differ diff --git a/src/assets/imgs/登录背景.png b/src/assets/imgs/登录背景.png new file mode 100644 index 00000000..c714e4db Binary files /dev/null and b/src/assets/imgs/登录背景.png differ diff --git a/src/assets/imgs/登陆底部.png b/src/assets/imgs/登陆底部.png new file mode 100644 index 00000000..59894e41 Binary files /dev/null and b/src/assets/imgs/登陆底部.png differ diff --git a/src/assets/imgs/登陆背景.png b/src/assets/imgs/登陆背景.png new file mode 100644 index 00000000..f0fbe34d Binary files /dev/null and b/src/assets/imgs/登陆背景.png differ diff --git a/src/assets/svgs/login-fly.svg b/src/assets/svgs/login-fly.svg new file mode 100644 index 00000000..c3f26d7b --- /dev/null +++ b/src/assets/svgs/login-fly.svg @@ -0,0 +1,13 @@ +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="279" height="93" viewBox="0 0 279 93" fill="none"> + <rect x="0" y="0" width="279" height="93" fill="url(#pattern_fill_13_642)" > + </rect> + <defs> + <pattern id="pattern_fill_13_642" patternContentUnits="objectBoundingBox" width="1" height="1"> + <use transform="matrix(0.004166666666666667, 0, 0, 0.0125, 0, 0)" xlink:href="#image0" /> + </pattern> + + <image id="image0" width="1440" height="80" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABaAAAABQCAYAAADvCtJ2AAAAAXNSR0IArs4c6QAAIABJREFUeF7tnQeYFdXd/78zt20DFpayLE2KSAdRBARExYKCBAuWWDAhGoOixiRv1JiXJPq3RONr1wR7RUywG6yIFEVFivQmvS/LsuVuuffO//nN3XOZvTtzy+69gO53ntcX2Dtz5pzPObN5ns/87vdohmEY4EECJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACKSagUUCnmCibIwESIAESIAESIAESIAESIAESIAESIAESIAESIAESMAlQQHMhkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJpIUABXRasLJREiABEiABEiABEiABEiABEiABEiABEiABEiABEiABCmiuARIgARIgARIgARIgARIgARIgARIgARIgARIgARIggbQQoIBOC1Y2SgIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAHNNUACJEACJEACJEACJEACJEACJEACJEACJEACJEACJJAWAhTQacHKRkmABEiABEiABEiABEiABEiABEiABEiABEiABEiABCiguQZIgARIgARIgARIgARIgARIgARIgARIgARIgARIgATSQoACOi1Y2SgJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAFNNcACZAACZAACZAACZAACZAACZAACZAACZAACZAACZBAWghQQKcFKxslARIgARIgARIgARIgARIgARIgARIgARIgARIgARKggOYaIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESSAsBCui0YGWjJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACFNBcAyRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAmkhQAGdFqxslARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgAKaa4AESIAESIAESIAESIAESIAESIAESIAESIAESIAESCAtBCig04KVjZIACZBAmMAPP/xgi6Jt27bIyMhwxLRr1y74/f46nzdv3hy5ubnESwIJEzhw4ACKiorint+5c+e45yRzQn3XvtN1cm+u/2RmgOeSAAmQAAmQAAmQAAmQAAmQwNFBoNEI6GDIwCuL9mL+lnK4NUDT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fLG3JEACJBCXgKqKtsY2xL0oxSfYVf2m+BZs7igkcDSsvaMQC7tEAiRAAiRAAiRAAiRAAiRAAo2aAAV0o55+Dp4ESIAESIAESIAESIAESIAESIAESIAESIAESIAE0keAAjp9bNkyCZAACZAACZAACZAACZAACZAACZAACZAACZAACTRqAhTQjXr6OXgSIAESIAESIAESIAESIAESIAESIAESIAESIAESSB8BCuj0sWXLJEACJEACJEACJEACJEACJEACJEACJEACJEACJNCoCVBAN+rp5+BJgARIgARIgARIgARIgARIgARIgARIgARIgARIIH0EKKDTx5YtkwAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkECjJkAB3ainn4MnARIgARIgARIgARIgARIgARIgARIgARIgARIggfQRoIBOH1u2TAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAKNmgAFdKOefg6eBEiABEiABEiABEiABEiABEiABEiABEiABEiABNJHgAI6fWzZMgmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAk0agIU0I16+jl4EiABEiABEiABEiABEiABEiABEiABEiABEiABEkgfAQro9LFlyyRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiTQqAlQQDfq6efgSYAESIAESIAESIAESIAESIAESIAESIAESIAESCB9BP4/ej1Ah7pvmkIAAAAASUVORK5CYII=" /> + + </defs> + </svg> + \ No newline at end of file diff --git a/src/locales/zh-CN.ts b/src/locales/zh-CN.ts index 0721651d..5f289e35 100644 --- a/src/locales/zh-CN.ts +++ b/src/locales/zh-CN.ts @@ -362,7 +362,7 @@ export default { }, login: { backSignIn: '返回', - signInFormTitle: '登录', + signInFormTitle: '账号登录', ssoFormTitle: '三方授权', mobileSignInFormTitle: '手机登录', qrSignInFormTitle: '二维码登录', diff --git a/src/views/Login/Login.vue b/src/views/Login/Login.vue index 5d349ce3..2f1491fc 100644 --- a/src/views/Login/Login.vue +++ b/src/views/Login/Login.vue @@ -4,47 +4,49 @@ 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 + <!-- <div :class="`${prefixCls}__left flex-1 bg-gray-500 bg-opacity-20 relative p-30px lt-xl:hidden`" - > - <!-- 左上角的 logo + 系统标题 --> - <div class="relative flex items-center text-white"> + > --> + <!-- 左上角的 logo + 系统标题 --> + <!-- <div class="relative flex items-center text-white"> <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="h-[calc(100%-60px)] flex items-center justify-center"> - <TransitionGroup + </div> --> + <!-- 左边的背景图 + 欢迎语 --> + <!-- <div class="h-[calc(100%-60px)] flex items-center justify-center"> --> + <!-- <TransitionGroup appear enter-active-class="animate__animated animate__bounceInLeft" 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="3" class="mt-5 text-14px font-normal text-white"> {{ t('login.message') }} - </div> - </TransitionGroup> - </div> - </div> - <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> --> + <!-- </TransitionGroup> --> + <!-- </div> --> + <!-- </div> --> + + <div class="my-container"> + <div class="my-top"> + <img class="top-image" src="@/assets/imgs/FLY.png" /> + <div class="text-container"> + <span style="font-size: 50px">医共体医学影像系统</span> + <span style="font-size: 18px">The Medical Community Medical Imaging Systems</span> </div> </div> - <!-- 右边的登录界面 --> - <Transition appear enter-active-class="animate__animated animate__bounceInRight"> + <div class="my-middle"> <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)" /> @@ -57,7 +59,29 @@ <!-- 三方登录 --> <SSOLoginVue class="m-auto h-auto p-20px lt-xl:(rounded-3xl light:bg-white)" /> </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> @@ -102,3 +126,62 @@ $prefix-cls: #{$namespace}-login; } } </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> diff --git a/src/views/Login/components/LoginForm.vue b/src/views/Login/components/LoginForm.vue index 3dbaff3f..6e3279e4 100644 --- a/src/views/Login/components/LoginForm.vue +++ b/src/views/Login/components/LoginForm.vue @@ -12,7 +12,7 @@ <el-row style="margin-right: -10px; margin-left: -10px"> <el-col :span="24" style="padding-right: 10px; padding-left: 10px"> <el-form-item> - <LoginFormTitle style="width: 100%" /> + <LoginFormTitle style="width: 100%;color: rgb(4, 41, 129);" /> </el-form-item> </el-col> <el-col :span="24" style="padding-right: 10px; padding-left: 10px"> @@ -59,7 +59,7 @@ </el-checkbox> </el-col> <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-row> </el-form-item> @@ -71,6 +71,7 @@ :title="t('login.login')" class="w-[100%]" type="primary" + style="background: linear-gradient(141.88deg, rgb(0, 102, 235) 0%, rgb(3, 129, 255) 100%), rgb(36, 93, 209);" @click="getCode()" /> </el-form-item> @@ -82,7 +83,8 @@ mode="pop" @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-row :gutter="5" justify="space-between" style="width: 100%"> <el-col :span="8"> @@ -108,8 +110,8 @@ </el-col> </el-row> </el-form-item> - </el-col> - <el-divider content-position="center">{{ t('login.otherLogin') }}</el-divider> + </el-col> --> +<!-- <el-divider content-position="center">{{ t('login.otherLogin') }}</el-divider> <el-col :span="24" style="padding-right: 10px; padding-left: 10px"> <el-form-item> <div class="w-[100%] flex justify-between"> @@ -124,8 +126,8 @@ /> </div> </el-form-item> - </el-col> - <el-divider content-position="center">萌新必读</el-divider> + </el-col> --> + <!-- <el-divider content-position="center">萌新必读</el-divider> <el-col :span="24" style="padding-right: 10px; padding-left: 10px"> <el-form-item> <div class="w-[100%] flex justify-between"> @@ -139,7 +141,7 @@ </el-link> </div> </el-form-item> - </el-col> + </el-col> --> </el-row> </el-form> </template> diff --git a/src/views/system/user/UserForm.vue b/src/views/system/user/UserForm.vue index bfde30a5..207b953f 100644 --- a/src/views/system/user/UserForm.vue +++ b/src/views/system/user/UserForm.vue @@ -82,7 +82,7 @@ </el-col> </el-row> <el-row> - <el-col :span="24"> + <el-col :span="12"> <el-form-item label="机构名称" prop="orgId" > <el-select v-model="formData.orgId" placeholder="请选择机构" clearable> <el-option @@ -92,6 +92,14 @@ :value="item.orgID" /> </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-col> </el-row> @@ -142,7 +150,8 @@ const formData = ref({ remark: '', status: CommonStatusEnum.ENABLE, roleIds: [], - orgId:'' + orgId:'', + isexamine:'' }) const formRules = reactive<FormRules>({ username: [{ required: true, message: '用户名称不能为空', trigger: 'blur' }], diff --git a/src/views/tblist/patientexamlist/index.vue b/src/views/tblist/patientexamlist/index.vue index a959ed73..aa56c5f7 100644 --- a/src/views/tblist/patientexamlist/index.vue +++ b/src/views/tblist/patientexamlist/index.vue @@ -1,6 +1,6 @@ <template> <ContentWrap> - <!-- 搜索工作栏 --> + <!-- 搜索工作栏 影像工作站--> <el-form class="-mb-15px" :model="queryParams" @@ -26,7 +26,7 @@ class="!w-160px" /> </el-form-item> - <!-- <el-form-item label="性别" prop="gender"> + <!-- <el-form-item label="性别" prop="gender"> <el-input v-model="queryParams.gender" placeholder="请输入性别" @@ -35,7 +35,7 @@ class="!w-240px" /> </el-form-item> --> - <!-- <el-form-item label="出生日期" prop="birthday"> + <!-- <el-form-item label="出生日期" prop="birthday"> <el-input v-model="queryParams.birthday" placeholder="请输入出生日期" @@ -45,25 +45,30 @@ /> </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> + <!-- 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"> @@ -76,8 +81,8 @@ <el-option label="请选择字典生成" value="" /> </el-select> </el-form-item> --> - - <!-- <el-form-item label="seri_dicomCount:序列数量/dicom数量" prop="seDc"> + + <!-- <el-form-item label="seri_dicomCount:序列数量/dicom数量" prop="seDc"> <el-input v-model="queryParams.seDc" placeholder="请输入seri_dicomCount:序列数量/dicom数量" @@ -87,7 +92,6 @@ /> </el-form-item> --> - <el-form-item label="检查项目" prop="examItemName"> <el-input v-model="queryParams.examItemName" @@ -97,20 +101,20 @@ class="!w-220px" /> </el-form-item> - <el-form-item label="报告状态" prop="reportstatus"> + <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-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-form-item label="申请日期:年月日时分秒" prop="applicationDate"> <el-date-picker v-model="queryParams.applicationDate" value-format="YYYY-MM-DD HH:mm:ss" @@ -121,7 +125,7 @@ class="!w-240px" /> </el-form-item> --> - <!-- <el-form-item label="dicom文件上传时间" prop="uploadDate"> + <!-- <el-form-item label="dicom文件上传时间" prop="uploadDate"> <el-date-picker v-model="queryParams.uploadDate" value-format="YYYY-MM-DD HH:mm:ss" @@ -132,7 +136,7 @@ class="!w-240px" /> </el-form-item> --> - <!-- <el-form-item label="机构名称" prop="orgName"> + <!-- <el-form-item label="机构名称" prop="orgName"> <el-input v-model="queryParams.orgName" placeholder="请输入机构名称" @@ -141,7 +145,7 @@ class="!w-240px" /> </el-form-item> --> - <!-- <el-form-item label="机构ID" prop="orgId"> + <!-- <el-form-item label="机构ID" prop="orgId"> <el-input v-model="queryParams.orgId" placeholder="请输入机构ID" @@ -150,7 +154,7 @@ class="!w-240px" /> </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 v-model="queryParams.highLevelOrgId" placeholder="请输入上级判读机构id列表:orgid1,orgid2,orgid3" @@ -159,7 +163,7 @@ class="!w-240px" /> </el-form-item> --> - <!-- <el-form-item label="创建时间:年月日时分秒" prop="createDate"> + <!-- <el-form-item label="创建时间:年月日时分秒" prop="createDate"> <el-date-picker v-model="queryParams.createDate" value-format="YYYY-MM-DD HH:mm:ss" @@ -170,7 +174,7 @@ class="!w-240px" /> </el-form-item> --> - <!-- <el-form-item label="诊断结论" prop="diagResults"> + <!-- <el-form-item label="诊断结论" prop="diagResults"> <el-input v-model="queryParams.diagResults" placeholder="请输入诊断结论" @@ -179,7 +183,7 @@ class="!w-240px" /> </el-form-item> --> - <!-- <el-form-item label="下诊断结论的时间:年月日时分秒" prop="diagDate"> + <!-- <el-form-item label="下诊断结论的时间:年月日时分秒" prop="diagDate"> <el-date-picker v-model="queryParams.diagDate" value-format="YYYY-MM-DD HH:mm:ss" @@ -190,7 +194,7 @@ class="!w-240px" /> </el-form-item> --> - <!-- <el-form-item label="诊断医生" prop="diagDoctor"> + <!-- <el-form-item label="诊断医生" prop="diagDoctor"> <el-input v-model="queryParams.diagDoctor" placeholder="请输入诊断医生" @@ -208,7 +212,7 @@ class="!w-240px" /> </el-form-item> --> - <!-- <el-form-item label="审核日期:年月日时分秒" prop="reviewDate"> + <!-- <el-form-item label="审核日期:年月日时分秒" prop="reviewDate"> <el-date-picker v-model="queryParams.reviewDate" value-format="YYYY-MM-DD HH:mm:ss" @@ -266,14 +270,20 @@ <!-- 列表 --> <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 + 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> + <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="主键" 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" /> @@ -289,14 +299,14 @@ <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="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" @@ -312,8 +322,13 @@ 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="机构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" @@ -322,8 +337,8 @@ 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="examDescription" v-if="false" /> + <el-table-column label="诊断结论" align="center" prop="diagResults" v-if="false" /> <el-table-column label="下诊断结论的时间:年月日时分秒" align="center" @@ -353,15 +368,14 @@ <el-table-column label="操作" align="center"> <template #default="scope"> <el-button - size="small" - + size="small" 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']" > 申请 </el-button> - <!-- <el-button + <!-- <el-button link type="danger" @click="handleDelete(scope.row.id)" @@ -383,8 +397,8 @@ <!-- 表单弹窗:添加/修改 --> <PatientexamlistForm ref="formRef" @success="getList" /> -<!-- 表单弹窗:超声组件 --> -<Ultrasonic ref="ultrasonic" /> + <!-- 表单弹窗:超声组件 --> + <Ultrasonic ref="ultrasonic" @success="getList" /> </template> <script setup lang="ts"> @@ -392,8 +406,7 @@ 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' - +import Ultrasonic from '/src/views/ultrasoniccom/ultrasonicForm.vue' /** PACS检查列表 列表 */ defineOptions({ name: 'Patientexamlist' }) @@ -412,15 +425,15 @@ const queryParams = reactive({ gender: undefined, birthday: undefined, examDate: [], - deviceType: undefined, + deviceType: '', seDc: undefined, examItemName: undefined, reportstatus: undefined, applicationDate: [], uploadDate: [], orgName: undefined, - orgId: "", - highLevelOrgId: "", + orgId: '', + highLevelOrgId: '', createDate: [], examDescription: undefined, diagResults: undefined, @@ -429,88 +442,79 @@ const queryParams = reactive({ reviewDoctor: undefined, reviewDate: [], thumbnailImgUrl: undefined, - createTime: [], + 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 ultrasonic = ref() +const openultrForm = (id: number, orgid: string, regid: string) => { + ultrasonic.value.open(id, orgid, regid) } /** 表格行点击 */ -const clickNumber = ref(0); +const clickNumber = ref(0) function handleEdit(row) { console.log(111111121212) - openultrForm(row.id,row.orgId,row.regId) - /* clickNumber.value++; + 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_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)) - { +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) - { + 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) - { + 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) - { + queryParams.examDate = [nowDate(timesta), nowDate(timeend)] + } else if (examDate_radio_value.value === 4) { timesta.setDate(timesta.getDate() - 7) - queryParams.examDate=[nowDate(timesta),nowDate(timeend)]; + queryParams.examDate = [nowDate(timesta), nowDate(timeend)] } - - handleQuery(); - }else if(5===examDate_radio_value.value) - { - queryParams.examDate=[]; + + 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 - ) - } - - + 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 = 'CT' const data = await PatientexamlistApi.getPatientexamlistPage(queryParams) list.value = data.list total.value = data.total @@ -522,22 +526,23 @@ const getList = async () => { /** 搜索按钮操作 */ const handleQuery = () => { queryParams.pageNo = 1 - //获取到当前登陆用户的机构时 要进行赋值 - queryParams.orgId="" - queryParams.highLevelOrgId="" + queryParams.deviceType = 'CT' + //获取到当前登陆用户的机构时 要进行赋值 + queryParams.orgId = '' + queryParams.highLevelOrgId = '' getList() } /** 重置按钮操作 */ const resetQuery = () => { - queryFormRef.value.resetFields(); + queryFormRef.value.resetFields() /** aaaaa **/ //新写法 - examDate_radio_value.value=1; - examDate_radio_change(); - if(5===examDate_radio_value.value) handleQuery(); - + examDate_radio_value.value = 1 + examDate_radio_change() + if (5 === examDate_radio_value.value) 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 { - if(reportstatus=="未申请") - { - await message.confirm("是否要进行申请?","确认提示") - await PatientexamlistApi.getuporghiid(id,orgId) - message.success(t('common.delSuccess')) - // 刷新列表 - await getList() - } - else - { - await message. info("只有未申请才可以进行操作") - } - + 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 { @@ -610,12 +609,11 @@ const handleExport = async () => { /** 初始化 **/ onMounted(() => { - //在初始化的时候查询到当前登陆用户的机构 和上级机构 /** aaaaa **/ //新代码 - examDate_radio_change(); - if(5===examDate_radio_value.value) handleQuery(); + examDate_radio_change() + if (5 === examDate_radio_value.value) handleQuery() //老代码 //getList(); @@ -627,4 +625,4 @@ onMounted(() => { .el-form-item__label { white-space: nowrap; } -</style> \ No newline at end of file +</style> diff --git a/src/views/tblist/patientexamlistultrasonic/PatientexamlistForm.vue b/src/views/tblist/patientexamlistultrasonic/PatientexamlistForm.vue new file mode 100644 index 00000000..c0546439 --- /dev/null +++ b/src/views/tblist/patientexamlistultrasonic/PatientexamlistForm.vue @@ -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) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用 +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> \ No newline at end of file diff --git a/src/views/tblist/patientexamlistultrasonic/index.vue b/src/views/tblist/patientexamlistultrasonic/index.vue new file mode 100644 index 00000000..9667027d --- /dev/null +++ b/src/views/tblist/patientexamlistultrasonic/index.vue @@ -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> \ No newline at end of file diff --git a/src/views/ultrasoniccom/ultrasonicForm.vue b/src/views/ultrasoniccom/ultrasonicForm.vue index a579c26f..f7793225 100644 --- a/src/views/ultrasoniccom/ultrasonicForm.vue +++ b/src/views/ultrasoniccom/ultrasonicForm.vue @@ -31,7 +31,7 @@ <el-tab-pane label="通用模版"> <!-- 树 --> <el-tree - style="min-width: 195px;" + style="min-width: 195px" v-loading="formLoading" class="treeStyle" :check-on-click-node="true" @@ -87,7 +87,7 @@ :inline="true" > <el-row> - <el-col :span="8"> + <el-col :span="7"> <el-form-item label="检查号" style="font-weight: bold"> <el-input v-model="applyFormVO.examId" @@ -101,7 +101,7 @@ <el-input v-model="applyFormVO.pname" style="width: 190px" :disabled="true" /> </el-form-item> </el-col> - <el-col :span="8"> + <el-col :span="9"> <el-form-item label="性别" style="font-weight: bold"> <el-input v-model="applyFormVO.gender" @@ -110,7 +110,7 @@ /> </el-form-item> </el-col> - <el-col :span="8"> + <el-col :span="7"> <el-form-item label="出生日期" style="font-weight: bold"> <el-date-picker v-model="applyFormVO.birthday" @@ -144,7 +144,7 @@ </el-form-item> </el-col> - <el-col :span="8"> + <el-col :span="7"> <el-form-item label="申请时间" style="font-weight: bold"> <el-date-picker v-model="applyFormVO.applicationDate" @@ -254,12 +254,21 @@ /> </el-form-item> </div> + + <el-button + type="success" + plain + style="width: 80px; float: right; margin-right: 15px" + @click="save" + :disabled="savedisabled" + >保存</el-button + > <el-button type="primary" plain - style="width: 180px; float: right" + v-show="examinedisabled" + style="width: 80px; float: right; margin-right: 15px" @click="examine" - :disabled="applyFormVO.reportstatus === '已审核' ? true : false" >审核</el-button > </el-tab-pane> @@ -333,7 +342,7 @@ plain style="width: 100%" @click="upimagedeleteor()" - :disabled="applyFormVO.reportstatus === '已审核' ? true : false" + :disabled="savedisabled" >图像删除</el-button > </div> @@ -343,7 +352,7 @@ plain style="width: 100%" @click="getimages" - :disabled="applyFormVO.reportstatus === '已审核' ? true : false" + :disabled="savedisabled" >图像刷新</el-button > </div> @@ -362,11 +371,17 @@ </el-dialog> <!-- </Dialog> --> <!-- 弹窗--> - <el-dialog v-model="dialogTableVisible" title="选择结论添加方式" width="320" align-center> + <el-dialog v-model="dialogTableVisible" title="选择结论添加方式" width="320" align-center> <div> - <el-button @click="handleButtonClick('覆盖')" type="primary" 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> + <el-button @click="handleButtonClick('覆盖')" type="primary" 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> </el-dialog> </template> @@ -393,7 +408,8 @@ const dialogVisible = ref(false) // 弹窗的是否展示 const dialogTitle = ref('') // 弹窗的标题 const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用 const examineFormVO = ref<PatientexamlistVO>({} as PatientexamlistVO) - +const savedisabled = ref(true) //保存按钮是否可用 +const examinedisabled = ref(false) //审核按钮是否可见 //点击节点更新使用时间 const clickuptime = async (pid: string) => { await ultrasoniccomApi.upreporttemplatetime(pid) @@ -424,8 +440,8 @@ const updateexamineimage = ref<updateexamineimageVO[]>([]) //备注 const notes = ref() -//审核 -const examine = async () => { +//保存 +const save = async () => { try { if (selecteimagedoneid === 0 || selecteimagedtwoid === 0 || selecteimagedthreeid === 0) { message.warning('请选择影像图') @@ -433,7 +449,7 @@ const examine = async () => { } // 二次确认 - await message.delConfirm('是否进行审核', '确认') + await message.delConfirm('是否进行保存', '确认') let timesta = new Date() var localDateTime = new Date(timesta.getTime()).toISOString() // 转换为ISO格式的字符串 localDateTime = localDateTime.slice(0, localDateTime.length - 1) @@ -444,8 +460,8 @@ const examine = async () => { examineFormVO.value.notes = notes.value examineFormVO.value.diagFlag = radio1.value examineFormVO.value.diagDoctor = Profilevo.value.username - examineFormVO.value.reviewDoctor = Profilevo.value.username - examineFormVO.value.reportstatus = '已审核' + // examineFormVO.value.reviewDoctor = Profilevo.value.username + examineFormVO.value.reportstatus = '已分析' // examineFormVO.value.diagDate=localDateTime // examineFormVO.value.reviewDate=dateTime @@ -454,12 +470,13 @@ const examine = async () => { if (response) { //更新图片选中标识 await upimageselect() - message.alertSuccess('审核成功') + message.alertSuccess('保存成功') // 接口调用成功,可以根据需要处理返回的data数据 console.log('接口调用成功') console.log('data:', response.data) //查询患者信息 根据ID getPatientexamlist(ID) + emit('success') } else { // 接口调用失败,根据具体情况处理错误 console.error('接口调用失败:', response.msg) @@ -469,6 +486,25 @@ const examine = async () => { 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) { @@ -581,15 +617,35 @@ const upimagedeleteor = async () => { deleteimageid.value = '' updateexamineimage.value = [] } +//菜单切换 const handleTabChange = async () => { if (activeName.value == 'report') { - if (reportimages.value.length === 0) { - const imageslist = await ultrasoniccomApi.getimageslist(orgId.value, regId.value, '1') - console.log(imageslist) - reportimages.value = imageslist + if (applyFormVO.value.reportstatus == '已分析' || applyFormVO.value.reportstatus == '已审核') { + showDiv() + if (reportimages.value.length === 0) { + 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 calculateAge = (birthdate) => { @@ -740,6 +796,12 @@ const getPatientexamlist = async (id: number) => { sj.value = applyFormVO.value.examDescription notes.value = applyFormVO.value.notes calculateAge(applyFormVO.value.birthday) + + if (applyFormVO.value.reportstatus == '已分检' || applyFormVO.value.reportstatus == '待分析') { + savedisabled.value = false + } else { + savedisabled.value = true + } } defineExpose({ open }) // 提供 open 方法,用于打开弹窗 @@ -755,6 +817,10 @@ const PrintForm = () => { //获取当前登录人信息 const getlogininfo = async () => { 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; justify-content: center; align-items: center; - } .demo-image { @@ -911,7 +976,7 @@ const chooseImage = (event, id: number) => { .form-item { flex: 1; /* 均分宽度,使两个输入框平分容器的宽度 */ margin-right: 20px; - font-weight:bold + font-weight: bold; } /* 报告样式 */