输血评估
This commit is contained in:
parent
54cce95758
commit
83fab3a4d7
12
src/App.vue
12
src/App.vue
@ -5,11 +5,23 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import useSettingsStore from '@/store/modules/settings'
|
import useSettingsStore from '@/store/modules/settings'
|
||||||
import { handleThemeStyle } from '@/utils/theme'
|
import { handleThemeStyle } from '@/utils/theme'
|
||||||
|
import { useSysParam } from '@/hooks/useSysParam'
|
||||||
|
|
||||||
|
const { initAllParams } = useSysParam()
|
||||||
|
|
||||||
|
// ========== 在这里统一维护【所有需要全局获取的参数 key】 ==========
|
||||||
|
const GLOBAL_PARAM_KEYS = [
|
||||||
|
'YBZFXMTSXX', // YBZFXMTSXX
|
||||||
|
'HZBQGY', // 患者病情概要是否必填
|
||||||
|
]
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
nextTick(() => {
|
nextTick(() => {
|
||||||
// 初始化主题样式
|
// 初始化主题样式
|
||||||
handleThemeStyle(useSettingsStore().theme)
|
handleThemeStyle(useSettingsStore().theme)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
// 获取参数值
|
||||||
|
initAllParams(GLOBAL_PARAM_KEYS)
|
||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
26
src/api/common.ts
Normal file
26
src/api/common.ts
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
/**
|
||||||
|
* @file common.ts
|
||||||
|
* @description: 公共接口
|
||||||
|
* @author: w
|
||||||
|
* @since: 2026-06-16
|
||||||
|
*/
|
||||||
|
|
||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
// 获取参数的值
|
||||||
|
export function getParameterOne(query?: Object) {
|
||||||
|
return request({
|
||||||
|
url: '/bus/common/getParameterOne',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取输血前检验项目
|
||||||
|
export function queryLisProject(query?: Object) {
|
||||||
|
return request({
|
||||||
|
url: '/bus/common/queryLisProject',
|
||||||
|
method: 'post',
|
||||||
|
data: query
|
||||||
|
})
|
||||||
|
}
|
||||||
@ -3,7 +3,7 @@ import request from '@/utils/request'
|
|||||||
// 根据住院号获取病人信息
|
// 根据住院号获取病人信息
|
||||||
export function queryPatInfo(query?: Object) {
|
export function queryPatInfo(query?: Object) {
|
||||||
return request({
|
return request({
|
||||||
url: '/doctor/applyBefore/getPatInfo',
|
url: '/bus/doctor/applyBefore/getPatInfo',
|
||||||
method: 'get',
|
method: 'get',
|
||||||
params: query
|
params: query
|
||||||
})
|
})
|
||||||
@ -11,7 +11,15 @@ export function queryPatInfo(query?: Object) {
|
|||||||
// 查询单据信息
|
// 查询单据信息
|
||||||
export function queryPatList(query?: Object) {
|
export function queryPatList(query?: Object) {
|
||||||
return request({
|
return request({
|
||||||
url: '/doctor/applyBefore/queryList',
|
url: '/bus/doctor/applyBefore/queryList',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// 查询单个单据信息
|
||||||
|
export function queryPatOne(query?: Object) {
|
||||||
|
return request({
|
||||||
|
url: '/bus/doctor/applyBefore/queryOne',
|
||||||
method: 'get',
|
method: 'get',
|
||||||
params: query
|
params: query
|
||||||
})
|
})
|
||||||
@ -19,7 +27,7 @@ export function queryPatList(query?: Object) {
|
|||||||
// 打印单据信息
|
// 打印单据信息
|
||||||
export function printPat(query?: Object) {
|
export function printPat(query?: Object) {
|
||||||
return request({
|
return request({
|
||||||
url: '/doctor/applyBefore/print',
|
url: '/bus/doctor/applyBefore/print',
|
||||||
method: 'get',
|
method: 'get',
|
||||||
params: query
|
params: query
|
||||||
})
|
})
|
||||||
@ -27,7 +35,7 @@ export function printPat(query?: Object) {
|
|||||||
// 保存信息
|
// 保存信息
|
||||||
export function savePat(query?: Object) {
|
export function savePat(query?: Object) {
|
||||||
return request({
|
return request({
|
||||||
url: '/doctor/applyBefore/save',
|
url: '/bus/doctor/applyBefore/save',
|
||||||
method: 'post',
|
method: 'post',
|
||||||
data: query
|
data: query
|
||||||
})
|
})
|
||||||
@ -35,7 +43,7 @@ export function savePat(query?: Object) {
|
|||||||
// 修改信息
|
// 修改信息
|
||||||
export function updatePat(query?: Object) {
|
export function updatePat(query?: Object) {
|
||||||
return request({
|
return request({
|
||||||
url: '/doctor/applyBefore/update',
|
url: '/bus/doctor/applyBefore/update',
|
||||||
method: 'post',
|
method: 'post',
|
||||||
data: query
|
data: query
|
||||||
})
|
})
|
||||||
@ -43,8 +51,8 @@ export function updatePat(query?: Object) {
|
|||||||
// 删除信息
|
// 删除信息
|
||||||
export function delPat(query?: Object) {
|
export function delPat(query?: Object) {
|
||||||
return request({
|
return request({
|
||||||
url: '/doctor/applyBefore/delete',
|
url: '/bus/doctor/applyBefore/delete',
|
||||||
method: 'get',
|
method: 'get',
|
||||||
params: query
|
params: query
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@ -10,6 +10,16 @@ export function listUser(query: UserQueryParams): Promise<TableDataInfo<SysUser[
|
|||||||
params: query
|
params: query
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
//同步用户数据
|
||||||
|
export function syncUser(query?: Object) {
|
||||||
|
return request({
|
||||||
|
url: '/system/user/syncUser',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// 查询用户详细
|
// 查询用户详细
|
||||||
export function getUser(userId?: number): Promise<UserFormDataResult> {
|
export function getUser(userId?: number): Promise<UserFormDataResult> {
|
||||||
|
|||||||
@ -611,7 +611,7 @@ aside {
|
|||||||
|
|
||||||
.vxe-table {
|
.vxe-table {
|
||||||
border: 1px solid #96B8D9 !important;
|
border: 1px solid #96B8D9 !important;
|
||||||
border-top: none !important;
|
// border-top: none !important;
|
||||||
/* 蓝色外边框 */
|
/* 蓝色外边框 */
|
||||||
border-radius: .5rem;
|
border-radius: .5rem;
|
||||||
/* 可选:添加边框圆角 */
|
/* 可选:添加边框圆角 */
|
||||||
|
|||||||
@ -73,12 +73,10 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { TableColumnCtx } from 'element-plus';
|
import { useAutoSize } from "@/utils/classCom";
|
||||||
import { classCom } from "@/utils/classCom";
|
const aotuSize = useAutoSize();
|
||||||
const aotuSize = classCom.useAutoSize();
|
|
||||||
// @ts-ignore
|
|
||||||
import Sortable from 'sortablejs'; // 引入sortablejs
|
import Sortable from 'sortablejs'; // 引入sortablejs
|
||||||
import ts from 'typescript';
|
|
||||||
interface TableColumn {
|
interface TableColumn {
|
||||||
prop?: string;
|
prop?: string;
|
||||||
type?: string; // 'selection' | 'index' | undefined
|
type?: string; // 'selection' | 'index' | undefined
|
||||||
|
|||||||
76
src/hooks/useSysParam.ts
Normal file
76
src/hooks/useSysParam.ts
Normal file
@ -0,0 +1,76 @@
|
|||||||
|
import { getParameterOne } from '@/api/common'
|
||||||
|
import { useCommonStore } from '@/store/modules/commonStore'
|
||||||
|
|
||||||
|
// 全局请求加载状态
|
||||||
|
const loading = ref(false)
|
||||||
|
// 请求锁:防止短时间内多次触发初始化
|
||||||
|
let requestLock = false
|
||||||
|
|
||||||
|
|
||||||
|
export function useSysParam() {
|
||||||
|
// 在函数内部再实例化 store,保证 Pinia 已挂载
|
||||||
|
const sysParamStore = useCommonStore()
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 初始化:批量并行请求多个参数
|
||||||
|
* @param paramKeyList 需要请求的参数 key 数组
|
||||||
|
*/
|
||||||
|
const initAllParams = async (paramKeyList: string[]) => {
|
||||||
|
// 已加载 / 请求中,直接终止,避免重复请求
|
||||||
|
if (sysParamStore.isLoaded || requestLock) return
|
||||||
|
|
||||||
|
requestLock = true
|
||||||
|
loading.value = true
|
||||||
|
|
||||||
|
try {
|
||||||
|
// 1. 构建并行请求数组
|
||||||
|
const requestList = paramKeyList.map(key => getParameterOne({ parameterCode: key }))
|
||||||
|
// 2. 并行执行所有接口
|
||||||
|
const resList = await Promise.all(requestList)
|
||||||
|
|
||||||
|
// 3. 组装键值对
|
||||||
|
const resultMap: Record<string, string | number> = {}
|
||||||
|
paramKeyList.forEach((key, index) => {
|
||||||
|
const res = resList[index]
|
||||||
|
if (res.code == 0 && res.data !== null && res.data !== undefined) {
|
||||||
|
resultMap[key] = res.data
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
// 4. 存入全局 Pinia 缓存
|
||||||
|
sysParamStore.setParamMap(resultMap)
|
||||||
|
} catch (error) {
|
||||||
|
console.error('【系统参数】批量请求失败:', error)
|
||||||
|
} finally {
|
||||||
|
// 释放锁 & 加载状态
|
||||||
|
loading.value = false
|
||||||
|
requestLock = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据 key 获取单个参数
|
||||||
|
* @param key 参数键名
|
||||||
|
* @param defaultValue 取不到值时的默认值
|
||||||
|
*/
|
||||||
|
const getParam = (key: string, defaultValue: string | number = '') => {
|
||||||
|
return sysParamStore.paramMap[key] ?? defaultValue
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 手动刷新所有参数(特殊场景使用:如参数后台更新后)
|
||||||
|
* @param paramKeyList 需要刷新的参数 key 数组
|
||||||
|
*/
|
||||||
|
const refreshAllParams = async (paramKeyList: string[]) => {
|
||||||
|
sysParamStore.clearAllParam()
|
||||||
|
await initAllParams(paramKeyList)
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
loading,
|
||||||
|
initAllParams,
|
||||||
|
getParam,
|
||||||
|
refreshAllParams,
|
||||||
|
paramMap: sysParamStore.paramMap
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -8,18 +8,36 @@ interface DefaultConfig {
|
|||||||
}
|
}
|
||||||
export const useCommonStore = defineStore('commonStore', {
|
export const useCommonStore = defineStore('commonStore', {
|
||||||
state: () => ({
|
state: () => ({
|
||||||
|
isLoaded: false,// 是否已完成初始化请求(防重复请求)
|
||||||
|
paramMap: {} as Record<string, string | number>, // 全局参数键值对集合 (参数值)
|
||||||
defaultConfig: {} as DefaultConfig, // 存储默认配置
|
defaultConfig: {} as DefaultConfig, // 存储默认配置
|
||||||
}),
|
}),
|
||||||
actions: {
|
actions: {
|
||||||
setDefaultConfig(config: DefaultConfig) {
|
setDefaultConfig(config: DefaultConfig) {
|
||||||
this.defaultConfig = config
|
this.defaultConfig = config
|
||||||
},
|
},
|
||||||
|
|
||||||
|
// 批量写入参数
|
||||||
|
setParamMap(data: Record<string, string | number>) {
|
||||||
|
this.paramMap = { ...this.paramMap, ...data }
|
||||||
|
this.isLoaded = true
|
||||||
|
},
|
||||||
|
|
||||||
|
// 单个设置参数
|
||||||
|
setSingleParam(key: string, value: string | number) {
|
||||||
|
this.paramMap[key] = value
|
||||||
|
},
|
||||||
|
|
||||||
|
// 清空所有参数(登出/切换账号使用)
|
||||||
|
clearAllParam() {
|
||||||
|
this.paramMap = {}
|
||||||
|
this.isLoaded = false
|
||||||
|
}
|
||||||
},
|
},
|
||||||
// 持久化配置
|
// 持久化配置
|
||||||
persist: {
|
persist: {
|
||||||
// 指定要持久化的状态字段
|
// 指定要持久化的状态字段
|
||||||
pick: ['fingerprint', 'defaultConfig'],
|
pick: ['paramMap', 'defaultConfig'],
|
||||||
// 可选配置:自定义存储键名(默认是store的id)
|
// 可选配置:自定义存储键名(默认是store的id)
|
||||||
// key: 'common_store',
|
// key: 'common_store',
|
||||||
// 可选配置:指定存储位置(默认是localStorage 也可以用sessionStorage)
|
// 可选配置:指定存储位置(默认是localStorage 也可以用sessionStorage)
|
||||||
|
|||||||
@ -4,6 +4,8 @@ import { login, logout, getInfo, loginAnonymous } from '@/api/login'
|
|||||||
import { getToken, setToken, removeToken } from '@/utils/auth'
|
import { getToken, setToken, removeToken } from '@/utils/auth'
|
||||||
import { isHttp, isEmpty } from "@/utils/validate"
|
import { isHttp, isEmpty } from "@/utils/validate"
|
||||||
import defAva from '@/assets/images/profile.jpg'
|
import defAva from '@/assets/images/profile.jpg'
|
||||||
|
import { useCommonStore } from '@/store/modules/commonStore'
|
||||||
|
|
||||||
|
|
||||||
interface RoleInfo {
|
interface RoleInfo {
|
||||||
roleName: string
|
roleName: string
|
||||||
@ -122,6 +124,8 @@ const useUserStore = defineStore(
|
|||||||
this.token = ''
|
this.token = ''
|
||||||
this.roles = []
|
this.roles = []
|
||||||
this.permissions = []
|
this.permissions = []
|
||||||
|
const sysParamStore = useCommonStore()
|
||||||
|
sysParamStore.clearAllParam() //清除参数值缓存
|
||||||
removeToken()
|
removeToken()
|
||||||
resolve()
|
resolve()
|
||||||
}).catch((error: any) => {
|
}).catch((error: any) => {
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
* 提供十进制颜色值转十六进制颜色码(支持BGR转RGB)及文字对比度计算功能
|
* 提供十进制颜色值转十六进制颜色码(支持BGR转RGB)及文字对比度计算功能
|
||||||
*/
|
*/
|
||||||
|
|
||||||
function decimalToHexColor(decimal: number | string): string {
|
export function decimalToHexColor(decimal: number | string): string {
|
||||||
// 处理空值和非数字情况
|
// 处理空值和非数字情况
|
||||||
if (decimal === undefined || decimal === null || decimal === '') {
|
if (decimal === undefined || decimal === null || decimal === '') {
|
||||||
return '#FFFFFF';
|
return '#FFFFFF';
|
||||||
@ -33,20 +33,20 @@ function decimalToHexColor(decimal: number | string): string {
|
|||||||
return `#${rgbHex}`;
|
return `#${rgbHex}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// 处理颜色转换为十进制数字
|
// 处理颜色转换为十进制数字
|
||||||
const convertHexToNumber = (hex: string) => {
|
export const convertHexToNumber = (hex: string) => {
|
||||||
if (!hex) return
|
if (!hex) return;
|
||||||
hex = hex.replace('#', '');
|
hex = hex.replace('#', '');
|
||||||
const bgr = hex.slice(4, 6) + hex.slice(2, 4) + hex.slice(0, 2);
|
const bgr = hex.slice(4, 6) + hex.slice(2, 4) + hex.slice(0, 2);
|
||||||
return parseInt(bgr, 16);
|
return parseInt(bgr, 16);
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据背景色计算对比度文字颜色(黑/白)
|
* 根据背景色计算对比度文字颜色(黑/白)
|
||||||
* @param bgColor 十六进制背景色(如#FFFF80)
|
* @param bgColor 十六进制背景色(如#FFFF80)
|
||||||
* @returns 对比度文字颜色(#333333或#FFFFFF)
|
* @returns 对比度文字颜色(#333333或#FFFFFF)
|
||||||
*/
|
*/
|
||||||
function getContrastTextColor(bgColor: string): string {
|
export function getContrastTextColor(bgColor: string): string {
|
||||||
// 验证颜色格式
|
// 验证颜色格式
|
||||||
if (!/^#([0-9A-F]{6})$/i.test(bgColor)) {
|
if (!/^#([0-9A-F]{6})$/i.test(bgColor)) {
|
||||||
throw new Error('Invalid hex color format. Expected #RRGGBB');
|
throw new Error('Invalid hex color format. Expected #RRGGBB');
|
||||||
@ -65,7 +65,7 @@ function getContrastTextColor(bgColor: string): string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 打印https pdf
|
// 打印https pdf
|
||||||
function printPDF(pdfUrl: string) {
|
export function printPDF(pdfUrl: string) {
|
||||||
// 验证URL是否为HTTPS
|
// 验证URL是否为HTTPS
|
||||||
if (pdfUrl.startsWith('http')) {
|
if (pdfUrl.startsWith('http')) {
|
||||||
console.warn('PDF URL不是HTTPS协议,可能存在安全风险');
|
console.warn('PDF URL不是HTTPS协议,可能存在安全风险');
|
||||||
@ -82,7 +82,7 @@ function printPDF(pdfUrl: string) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 打印base64 pdf
|
// 打印base64 pdf
|
||||||
function printBase64PDF(base64: string) {
|
export function printBase64PDF(base64: string) {
|
||||||
const blob = base64ToBlob(base64);
|
const blob = base64ToBlob(base64);
|
||||||
const pdfUrl = URL.createObjectURL(blob);
|
const pdfUrl = URL.createObjectURL(blob);
|
||||||
const iframe = document.createElement('iframe');
|
const iframe = document.createElement('iframe');
|
||||||
@ -105,7 +105,7 @@ function base64ToBlob(base64: string) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 计算两个日期的天数差(支持带时分秒)
|
// 计算两个日期的天数差(支持带时分秒)
|
||||||
const getDayDiff = (start: string, end: string): number => {
|
export const getDayDiff = (start: string, end: string): number => {
|
||||||
const startTime = new Date(start).getTime();
|
const startTime = new Date(start).getTime();
|
||||||
const endTime = new Date(end).getTime();
|
const endTime = new Date(end).getTime();
|
||||||
|
|
||||||
@ -117,12 +117,11 @@ const getDayDiff = (start: string, end: string): number => {
|
|||||||
return dayDiff < 0 ? -1 : dayDiff; // -1 表示结束时间早于开始时间,>=0 为正常天数
|
return dayDiff < 0 ? -1 : dayDiff; // -1 表示结束时间早于开始时间,>=0 为正常天数
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 自动根据屏幕分辨率切换按钮尺寸(small/default)
|
* 自动根据屏幕分辨率切换按钮尺寸(small/default)
|
||||||
* @returns 按钮尺寸的响应式ref
|
* @returns 按钮尺寸的响应式ref
|
||||||
*/
|
*/
|
||||||
function useAutoSize() {
|
export function useAutoSize() {
|
||||||
const autoSize = ref<'small' | 'default'>('default');
|
const autoSize = ref<'small' | 'default'>('default');
|
||||||
// 防抖函数,避免频繁触发
|
// 防抖函数,避免频繁触发
|
||||||
const debounce = (fn: Function, delay: number) => {
|
const debounce = (fn: Function, delay: number) => {
|
||||||
@ -158,6 +157,4 @@ function useAutoSize() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
return autoSize;
|
return autoSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
export const classCom = { decimalToHexColor, convertHexToNumber, getContrastTextColor, printBase64PDF, printPDF, useAutoSize, getDayDiff }
|
|
||||||
@ -8,27 +8,46 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="app-container">
|
<div class="app-container">
|
||||||
<div class="section">
|
<div class="section">
|
||||||
<el-button type="primary" plain>检索</el-button>
|
<el-button type="primary" plain @click="openJsDialog">检索</el-button>
|
||||||
<el-button type="primary" plain>新增</el-button>
|
<el-button type="primary" plain @click="handleAdd">新增</el-button>
|
||||||
<el-button type="primary" plain>保存</el-button>
|
<el-button type="danger" plain :disabled="!evaluationInfo.billNo" @click="handleDel">删除</el-button>
|
||||||
<el-button type="primary" plain>输血申请</el-button>
|
<el-button type="success" plain @click="handleSubmit">保存</el-button>
|
||||||
<el-button type="warning" plain>打印</el-button>
|
<el-button type="primary" plain @click="goSxPath">输血申请</el-button>
|
||||||
<el-button type="warning" plain>打印输血知情同意书</el-button>
|
<el-button type="warning" plain :disabled="!evaluationInfo.billNo"
|
||||||
|
@click="printPg('ASSESS_BEFORE')">打印输血前评估单</el-button>
|
||||||
|
<el-button type="warning" plain :disabled="!evaluationInfo.billNo"
|
||||||
|
@click="printPg('INFORMED_CONSENT')">打印输血知情同意书</el-button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<el-form :model="form" label-width="auto">
|
|
||||||
|
<el-form label-width="auto">
|
||||||
|
<div class="section">
|
||||||
|
<el-row :gutter="20">
|
||||||
|
<el-col :span="4">
|
||||||
|
<el-form-item label="评估单号">
|
||||||
|
<el-input v-model="evaluationInfo.billNo" disabled />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="4">
|
||||||
|
<el-form-item label="评估日期">
|
||||||
|
<el-input v-model="evaluationInfo.assessmentDate" disabled />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="4">
|
||||||
|
<el-form-item label="评估医师">
|
||||||
|
<el-input v-model="evaluationInfo.assess_person" disabled />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
</div>
|
||||||
<!-- 基础信息 -->
|
<!-- 基础信息 -->
|
||||||
<div class="section">
|
<div class="section">
|
||||||
<div class="title">基础信息</div>
|
<div class="title">基础信息</div>
|
||||||
<el-row :gutter="20">
|
<el-row :gutter="20">
|
||||||
<el-col :span="4">
|
|
||||||
<el-form-item label="评估单号">
|
|
||||||
<el-input v-model="baseInfo.assessmentNo" disabled />
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="4">
|
<el-col :span="4">
|
||||||
<el-form-item label="住院号/ID号">
|
<el-form-item label="住院号/ID号">
|
||||||
<el-input v-model="baseInfo.beinhos_id" @change="handleChange" />
|
<el-input v-model="baseInfo.beinhos_id" @keyup.enter="handleChange"
|
||||||
|
:disabled="evaluationInfo.billNo !== ''" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="4">
|
<el-col :span="4">
|
||||||
@ -45,19 +64,18 @@
|
|||||||
|
|
||||||
<el-row :gutter="20">
|
<el-row :gutter="20">
|
||||||
<el-col :span="4">
|
<el-col :span="4">
|
||||||
<el-form-item label="评估日期">
|
<el-form-item label="床位号">
|
||||||
<el-input v-model="baseInfo.assessmentDate" readonly />
|
<el-input v-model="bloodInfo.patient_bed" />
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="4">
|
|
||||||
<el-form-item label="科 室">
|
|
||||||
<SelectTable v-model:data="baseInfo.dept_id" :tableData="dictData.ks" />
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
|
||||||
<el-col :span="4">
|
<el-col :span="4">
|
||||||
<el-form-item label="床位号">
|
<el-form-item label="性别">
|
||||||
<el-input v-model="baseInfo.patient_bed" />
|
<el-select v-model="baseInfo.patient_sex" placeholder="">
|
||||||
|
<el-option label="男" value="男" />
|
||||||
|
<el-option label="女" value="女" />
|
||||||
|
<el-option label="未知" value="未知" />
|
||||||
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
|
||||||
@ -70,59 +88,69 @@
|
|||||||
|
|
||||||
<el-row :gutter="20">
|
<el-row :gutter="20">
|
||||||
<el-col :span="4">
|
<el-col :span="4">
|
||||||
<el-form-item label="评估医师">
|
<el-form-item label="科 室">
|
||||||
<el-input v-model="baseInfo.doctorname" readonly />
|
<SelectTable v-model:data="bloodInfo.dept_id" :tableData="dictData.ks" placeholder="" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
|
||||||
|
<el-col :span="4">
|
||||||
|
<el-form-item label="年 龄">
|
||||||
|
<el-input v-model="baseInfo.age" style="width:60%" />
|
||||||
|
<div style="width: 40%">
|
||||||
|
<el-select v-model="baseInfo.nldw" placeholder="">
|
||||||
|
<el-option v-for="v in dictData.nldw" :label="v.label" :value="v.value" />
|
||||||
|
</el-select>
|
||||||
|
</div>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="4">
|
<el-col :span="4">
|
||||||
<el-form-item label="病 区">
|
<el-form-item label="病 区">
|
||||||
<el-input v-model="baseInfo.zone_id" />
|
<SelectTable v-model:data="bloodInfo.zone_id" dict-type="bq" placeholder="" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="4">
|
<el-col :span="4">
|
||||||
<el-form-item label="年 龄">
|
|
||||||
<el-input v-model="baseInfo.age" type="number" />
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="7">
|
|
||||||
<el-form-item label="临床诊断">
|
<el-form-item label="临床诊断">
|
||||||
<el-input v-model="baseInfo.diagnosis" />
|
<el-input v-model="bloodInfo.diagnoses" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
|
||||||
<el-row :gutter="20">
|
<el-row :gutter="20">
|
||||||
|
<el-col :span="8">
|
||||||
|
<el-form-item label="输血目的">
|
||||||
|
<SelectTable v-model:data="bloodInfo.intent" dict-type="sxmd" placeholder="" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
<el-col :span="4">
|
<el-col :span="4">
|
||||||
<el-form-item label="出血量">
|
<el-form-item label="出血量">
|
||||||
<el-input v-model="formData.bleedingVolume" />
|
<el-input v-model="bloodInfo.blood_loss" type="number" />
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="4">
|
|
||||||
<el-form-item label="输血目的">
|
|
||||||
<el-input v-model="formData.intent" />
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
|
||||||
<el-col :span="4">
|
<el-col :span="4">
|
||||||
<el-form-item label="贫血程度">
|
<el-form-item label="贫血程度">
|
||||||
<el-input v-model="formData.anemiaDegree" />
|
<el-select v-model="bloodInfo.anemia" placeholder="">
|
||||||
</el-form-item>
|
<el-option v-for="v in dictData.anemia" :label="v.label" :value="v.value" />
|
||||||
</el-col>
|
</el-select>
|
||||||
<el-col :span="4">
|
|
||||||
<el-form-item label="血液品种">
|
|
||||||
<el-input v-model="formData.abo" />
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="3">
|
|
||||||
<el-form-item label="血量">
|
|
||||||
<el-input v-model="formData.bloodVolume" />
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
|
||||||
</el-row>
|
</el-row>
|
||||||
|
|
||||||
<el-row :gutter="20">
|
<el-row :gutter="20">
|
||||||
<el-col :span="18">
|
<el-col :span="4">
|
||||||
|
<el-form-item label="血液品种">
|
||||||
|
<SelectTable v-model:data="bloodInfo.blood_breed" dict-type="xylx" placeholder="" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="4">
|
||||||
|
<el-form-item label="血量">
|
||||||
|
<el-input v-model="bloodInfo.blood_num" type="number" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="8">
|
||||||
<el-form-item label=" ">
|
<el-form-item label=" ">
|
||||||
<el-checkbox v-model="formData.hbLow" class="text-danger">
|
<el-checkbox v-model="bloodInfo.agreement_ink" class="text-danger" true-value="Y" false-value="N">
|
||||||
病人/病人家属是否签署输血同意书
|
病人/病人家属是否签署输血同意书
|
||||||
</el-checkbox>
|
</el-checkbox>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@ -135,7 +163,7 @@
|
|||||||
<span class="tips">
|
<span class="tips">
|
||||||
(病人基本情况、贫血程度、凝血障碍、有无创面弥漫性渗血、心肺代偿功能、有无代谢率增高、年龄因素、输血目的等。)
|
(病人基本情况、贫血程度、凝血障碍、有无创面弥漫性渗血、心肺代偿功能、有无代谢率增高、年龄因素、输血目的等。)
|
||||||
</span>
|
</span>
|
||||||
<el-input v-model="formData.otherReason" type="textarea" :rows="3" style="margin-top: 8px" />
|
<el-input v-model="bloodInfo.bqgy" type="textarea" :rows="3" style="margin-top: 8px" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
@ -144,246 +172,326 @@
|
|||||||
<div class="title">病人最近检查结果</div>
|
<div class="title">病人最近检查结果</div>
|
||||||
|
|
||||||
<el-row :gutter="20">
|
<el-row :gutter="20">
|
||||||
<el-col :span="4">
|
<el-col :span="18">
|
||||||
<el-form-item label="HGB">
|
<el-row :gutter="50">
|
||||||
<el-input v-model="formData.hgbValue" placeholder="">
|
<el-col :span="6" v-for="item in lisProject" class="col-project">
|
||||||
<template #suffix>
|
<el-form-item :label="item.item_name">
|
||||||
g/L
|
<el-select v-model="item.item_result" placeholder="">
|
||||||
</template>
|
<el-option v-for="v in dictData.sxqjcxmmrz" :label="v.label" :value="v.value" />
|
||||||
</el-input>
|
</el-select>
|
||||||
</el-form-item>
|
<span class="unit">{{ item.item_unit }}</span>
|
||||||
</el-col>
|
</el-form-item>
|
||||||
<el-col :span="4">
|
</el-col>
|
||||||
<el-form-item label="HCT">
|
</el-row>
|
||||||
<el-input v-model="formData.hgbExpect" placeholder="">
|
|
||||||
<template #suffix>
|
|
||||||
%
|
|
||||||
</template>
|
|
||||||
</el-input>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="4">
|
|
||||||
<el-form-item label="PLT">
|
|
||||||
<el-input v-model="formData.estimatedVolume" placeholder="">
|
|
||||||
<template #suffix>
|
|
||||||
X10^9/L
|
|
||||||
</template>
|
|
||||||
</el-input>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="4">
|
|
||||||
<el-form-item label="APTT">
|
|
||||||
<el-input v-model="formData.aptt" placeholder="">
|
|
||||||
<template #suffix>
|
|
||||||
秒
|
|
||||||
</template>
|
|
||||||
</el-input>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
</el-row>
|
|
||||||
|
|
||||||
<el-row :gutter="20">
|
|
||||||
<el-col :span="4">
|
|
||||||
<el-form-item label="ALT">
|
|
||||||
<el-input v-model="formData.altValue" placeholder="">
|
|
||||||
<template #suffix>
|
|
||||||
U/L
|
|
||||||
</template>
|
|
||||||
</el-input>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="4">
|
|
||||||
<el-form-item label="HBsAg">
|
|
||||||
<el-select v-model="formData.hbsAg" placeholder="请选择">
|
|
||||||
<el-option label="阴性" value="negative" />
|
|
||||||
<el-option label="阳性" value="positive" />
|
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="4">
|
|
||||||
<el-form-item label="TP">
|
|
||||||
<el-select v-model="formData.tp" placeholder="请选择">
|
|
||||||
<el-option label="阴性" value="negative" />
|
|
||||||
<el-option label="阳性" value="positive" />
|
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="4">
|
|
||||||
<el-form-item label="FIB">
|
|
||||||
<el-input v-model="formData.fib" placeholder="">
|
|
||||||
<template #suffix>
|
|
||||||
g/L
|
|
||||||
</template>
|
|
||||||
</el-input>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
</el-row>
|
|
||||||
|
|
||||||
<el-row :gutter="20">
|
|
||||||
<el-col :span="4">
|
|
||||||
<el-form-item label="Anti-HCV">
|
|
||||||
<el-select v-model="formData.antiHcv" placeholder="请选择">
|
|
||||||
<el-option label="阴性" value="negative" />
|
|
||||||
<el-option label="阳性" value="positive" />
|
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="4">
|
|
||||||
<el-form-item label="Anti-HIV">
|
|
||||||
<el-select v-model="formData.antiHiv" placeholder="请选择">
|
|
||||||
<el-option label="阴性" value="negative" />
|
|
||||||
<el-option label="阳性" value="positive" />
|
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="4">
|
|
||||||
<el-form-item label="PT">
|
|
||||||
<el-input v-model="formData.pt" placeholder="">
|
|
||||||
<template #suffix>
|
|
||||||
U
|
|
||||||
</template>
|
|
||||||
</el-input>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="4">
|
|
||||||
<el-form-item label="INR">
|
|
||||||
<el-input v-model="formData.inr" placeholder="" />
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
</div>
|
</div>
|
||||||
</el-form>
|
</el-form>
|
||||||
|
|
||||||
|
<el-dialog title="输血申请检索" v-model="visible" width="800px" :close-on-click-modal="false" @closed="handleClose">
|
||||||
|
<div class="mb10">
|
||||||
|
<el-button type="primary" @click="handleSearch">检索</el-button>
|
||||||
|
<el-button type="success" @click="handleConfirm">确认</el-button>
|
||||||
|
</div>
|
||||||
|
<!-- 检索条件区 -->
|
||||||
|
<el-form :model="searchForm" label-width="auto" class="search-form">
|
||||||
|
<el-row :gutter="30">
|
||||||
|
<el-col :span="14">
|
||||||
|
<el-form-item label="评估日期">
|
||||||
|
<div class="date-range">
|
||||||
|
<el-date-picker v-model="searchForm.stime" type="date" format="YYYY-MM-DD" value-format="YYYY-MM-DD"
|
||||||
|
style="width: 47%" />
|
||||||
|
<span class="separator" style="width: 6%;display: inline-block;text-align: center;">-</span>
|
||||||
|
<el-date-picker v-model="searchForm.etime" type="date" format="YYYY-MM-DD" value-format="YYYY-MM-DD"
|
||||||
|
style="width: 47%" />
|
||||||
|
</div>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="10">
|
||||||
|
<el-form-item label="患者姓名">
|
||||||
|
<el-input v-model="searchForm.patient_name" placeholder="" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-row :gutter="30">
|
||||||
|
<el-col :span="14">
|
||||||
|
<el-form-item label="评估单号">
|
||||||
|
<el-input v-model="searchForm.bill_no" placeholder="" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="10">
|
||||||
|
<el-form-item label="住院号/ID号">
|
||||||
|
<el-input v-model="searchForm.beinhos_id" placeholder="" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
</el-form>
|
||||||
|
|
||||||
|
<!-- 结果表格区 -->
|
||||||
|
<el-table :data="tableData" border style="width: 100%; margin-top: 10px" height="350" @row-click="handleRowClick"
|
||||||
|
highlight-current-row>
|
||||||
|
<el-table-column prop="bill_no" label="评估单号" align="center" width="180" />
|
||||||
|
<el-table-column prop="dept_id" label="科室" align="center">
|
||||||
|
<template #default="scope">
|
||||||
|
{{ formatDict(scope.row.dept_id, 'ks') }}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="beinhos_id" label="住院号" align="center" />
|
||||||
|
<el-table-column prop="patient_name" label="姓名" align="center" />
|
||||||
|
<el-table-column prop="assess_data" label="评估日期" width="180" align="center" />
|
||||||
|
<el-table-column prop="assess_person" label="评估人" align="center" />
|
||||||
|
</el-table>
|
||||||
|
</el-dialog>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import dayjs from 'dayjs'
|
import dayjs from 'dayjs'
|
||||||
import { queryPatInfo } from '@/api/doctor/assessment'
|
import { printPat, queryPatInfo, queryPatList, savePat, queryPatOne, updatePat, delPat } from '@/api/doctor/assessment'
|
||||||
|
import { queryLisProject, getParameterOne } from '@/api/common'
|
||||||
import { getDictData, formatDict, dictData } from '@/hooks'
|
import { getDictData, formatDict, dictData } from '@/hooks'
|
||||||
const type = ref<'operation' | 'nonOperation'>('operation')
|
import router from '@/router'
|
||||||
|
import { ElMessage, ElMessageBox } from 'element-plus'
|
||||||
|
import { printBase64PDF } from '@/utils/classCom'
|
||||||
|
import useUserStore from '@/store/modules/user'
|
||||||
|
import { useSysParam } from '@/hooks/useSysParam'
|
||||||
|
const { getParam } = useSysParam()
|
||||||
|
|
||||||
// 表单聚合(统一Form模型)
|
|
||||||
const form = reactive({})
|
const userInfo = useUserStore()
|
||||||
|
const visible = ref(false)
|
||||||
|
// 表单数据
|
||||||
|
const searchForm = ref({
|
||||||
|
stime: dayjs().format('YYYY-MM-DD'),
|
||||||
|
etime: dayjs().format('YYYY-MM-DD'),
|
||||||
|
patient_name: '',
|
||||||
|
bill_no: '',
|
||||||
|
beinhos_id: ''
|
||||||
|
})
|
||||||
|
|
||||||
|
const tableData = ref([])
|
||||||
|
|
||||||
|
const evaluationInfo = ref({
|
||||||
|
assessmentDate: dayjs().format('YYYY-MM-DD HH:mm:ss'),
|
||||||
|
billNo: '',
|
||||||
|
assess_person: userInfo.nickName,
|
||||||
|
})
|
||||||
|
|
||||||
// 基础信息数据
|
// 基础信息数据
|
||||||
const baseInfo = ref({
|
const baseInfo = ref({
|
||||||
assessmentNo: '',
|
|
||||||
patient_name: '',
|
|
||||||
dept_id: '',
|
|
||||||
assessmentDate: dayjs().format('YYYY-MM-DD HH:mm:ss'),
|
|
||||||
patient_bed: '',
|
|
||||||
zone_id: '',
|
|
||||||
doctorName: '',
|
|
||||||
age: '',
|
|
||||||
abo: '',
|
|
||||||
beinhos_id: '',
|
beinhos_id: '',
|
||||||
diagnosis: '',
|
nldw: '岁',
|
||||||
rh: ''
|
})
|
||||||
|
// 输血数据
|
||||||
|
const bloodInfo = ref({
|
||||||
|
agreement_ink: 'Y',
|
||||||
|
assess_person: userInfo.name,//申请人
|
||||||
})
|
})
|
||||||
|
|
||||||
// 表单数据
|
// 检查结果
|
||||||
const formData = reactive({
|
const lisProject = ref([])
|
||||||
bleedingVolume: '',
|
|
||||||
intent: '',
|
|
||||||
anemiaDegree: '',
|
|
||||||
abo: '', // 血液品种
|
|
||||||
bloodVolume: '', // 血量
|
|
||||||
hbLow: false,
|
|
||||||
otherReason: '',
|
|
||||||
height: '',
|
|
||||||
weight: '',
|
|
||||||
hgbValue: '',
|
|
||||||
hgbExpect: '',
|
|
||||||
estimatedVolume: '',
|
|
||||||
altValue: '', // ALT值
|
|
||||||
hbsAg: '', // HBsAg
|
|
||||||
tp: '', // TP
|
|
||||||
antiHcv: '', // Anti-HCV
|
|
||||||
antiHiv: '', // Anti-HIV
|
|
||||||
pt: '', // PT
|
|
||||||
aptt: '', // APTT
|
|
||||||
fib: '', // FIB
|
|
||||||
inr: '', // INR
|
|
||||||
intraHemorrhage: false,
|
|
||||||
nonTraumaBleeding: '',
|
|
||||||
traumaBleeding: '',
|
|
||||||
bloodLoss: '',
|
|
||||||
hemolysisCondition: '',
|
|
||||||
heartLungOxygen: false,
|
|
||||||
anemiaCondition: false,
|
|
||||||
crystalloidBefore: false,
|
|
||||||
colloidBefore: false
|
|
||||||
})
|
|
||||||
|
|
||||||
|
|
||||||
onMounted(() => {
|
// 检索
|
||||||
|
const openJsDialog = () => {
|
||||||
})
|
getList()
|
||||||
|
visible.value = true
|
||||||
// 关闭弹窗
|
}
|
||||||
const handleClose = () => {
|
const handleSearch = () => {
|
||||||
Object.assign(baseInfo.value, {
|
getList()
|
||||||
name: '',
|
}
|
||||||
dept_id: '',
|
const handleConfirm = () => {
|
||||||
assessmentDate: new Date().toLocaleString(),
|
if (!seelctRow.value.bill_no) return ElMessage.warning('请选择评估单')
|
||||||
patient_bed: '',
|
evaluationInfo.value.billNo = seelctRow.value.bill_no
|
||||||
zone_id: '',
|
getBillInfo()
|
||||||
age: '',
|
visible.value = false
|
||||||
abo: '',
|
seelctRow.value = {}
|
||||||
beinhos_id: '',
|
|
||||||
diagnosis: '',
|
|
||||||
rh: ''
|
|
||||||
})
|
|
||||||
// 重置表单
|
|
||||||
Object.assign(formData, {
|
|
||||||
bleedingVolume: '',
|
|
||||||
intent: '',
|
|
||||||
anemiaDegree: '',
|
|
||||||
abo: '',
|
|
||||||
bloodVolume: '',
|
|
||||||
hbLow: false,
|
|
||||||
otherReason: '',
|
|
||||||
height: '',
|
|
||||||
weight: '',
|
|
||||||
hgbValue: '',
|
|
||||||
hgbExpect: '',
|
|
||||||
estimatedVolume: '',
|
|
||||||
altValue: '',
|
|
||||||
hbsAg: '',
|
|
||||||
tp: '',
|
|
||||||
antiHcv: '',
|
|
||||||
antiHiv: '',
|
|
||||||
pt: '',
|
|
||||||
aptt: '',
|
|
||||||
fib: '',
|
|
||||||
inr: '',
|
|
||||||
intraHemorrhage: false,
|
|
||||||
nonTraumaBleeding: '',
|
|
||||||
traumaBleeding: '',
|
|
||||||
bloodLoss: '',
|
|
||||||
hemolysisCondition: '',
|
|
||||||
heartLungOxygen: false,
|
|
||||||
anemiaCondition: false,
|
|
||||||
crystalloidBefore: false,
|
|
||||||
colloidBefore: false
|
|
||||||
})
|
|
||||||
type.value = 'operation'
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const handleChange = (val) => {
|
const handleClose = () => {
|
||||||
queryPatInfo({ patNo: val }).then((res) => {
|
visible.value = false
|
||||||
|
searchForm.value = {
|
||||||
|
stime: dayjs().format('YYYY-MM-DD'),
|
||||||
|
etime: dayjs().format('YYYY-MM-DD'),
|
||||||
|
patient_name: '',
|
||||||
|
bill_no: '',
|
||||||
|
beinhos_id: ''
|
||||||
|
}
|
||||||
|
seelctRow.value = {}
|
||||||
|
}
|
||||||
|
|
||||||
|
//获取评估单信息
|
||||||
|
const getBillInfo = () => {
|
||||||
|
queryPatOne({ billNo: evaluationInfo.value.billNo }).then((res) => {
|
||||||
|
if (res.code == 0) {
|
||||||
|
evaluationInfo.value.assessmentDate = res.data.xkTransfuseApplyBeforeList[0].assess_data
|
||||||
|
baseInfo.value = res.data.xkPatientInfo
|
||||||
|
bloodInfo.value = res.data.xkTransfuseApplyBeforeList[0]
|
||||||
|
lisProject.value = res.data.xkTransfuseApplyTestitemList.map(item => {
|
||||||
|
return {
|
||||||
|
bill_no: item.bill_no,
|
||||||
|
item_name: item.pro_name,
|
||||||
|
item_result: item.item_result,
|
||||||
|
item_unit: item.item_unit,
|
||||||
|
test_date: item.test_date,
|
||||||
|
sid: item.sid
|
||||||
|
}
|
||||||
|
})
|
||||||
|
splitAge(baseInfo.value.age)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 回显时拆分 年龄 + 单位
|
||||||
|
const splitAge = (ageStr: string) => {
|
||||||
|
const unitList = dictData.value.nldw.map(item => item.value)
|
||||||
|
let age = ageStr
|
||||||
|
let unit = '岁'
|
||||||
|
for (const u of unitList) {
|
||||||
|
if (ageStr.includes(u)) {
|
||||||
|
age = ageStr.replace(u, '')
|
||||||
|
unit = u
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
baseInfo.value.age = age
|
||||||
|
baseInfo.value.nldw = unit
|
||||||
|
}
|
||||||
|
|
||||||
|
const seelctRow = ref({})
|
||||||
|
const handleRowClick = (row) => {
|
||||||
|
seelctRow.value = row
|
||||||
|
}
|
||||||
|
//查询单据信息
|
||||||
|
const getList = () => {
|
||||||
|
const data = {
|
||||||
|
...searchForm.value,
|
||||||
|
stime: dayjs(searchForm.value.stime).format('YYYY-MM-DD') + ' 00:00:00',
|
||||||
|
etime: dayjs(searchForm.value.etime).format('YYYY-MM-DD') + ' 23:59:59',
|
||||||
|
}
|
||||||
|
queryPatList(data).then((res) => {
|
||||||
|
tableData.value = res.data || []
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 关闭弹窗
|
||||||
|
const handleAdd = () => {
|
||||||
|
evaluationInfo.value.assessmentDate = dayjs().format('YYYY-MM-DD HH:mm:ss')
|
||||||
|
evaluationInfo.value.billNo = ''
|
||||||
|
baseInfo.value = { beinhos_id: '', nldw: '岁' }
|
||||||
|
bloodInfo.value = { agreement_ink: 'Y', assess_person: userInfo.name }
|
||||||
|
getProject()
|
||||||
|
}
|
||||||
|
|
||||||
|
//删除单据
|
||||||
|
const handleDel = () => {
|
||||||
|
ElMessageBox.confirm('确定删除当前评估单吗?', '提示', {
|
||||||
|
type: 'warning'
|
||||||
|
}).then(() => {
|
||||||
|
delPat({ billNo: evaluationInfo.value.billNo }).then(() => {
|
||||||
|
ElMessage.success('删除成功')
|
||||||
|
handleAdd()
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
//打印输血评估单
|
||||||
|
const printPg = (name: string) => {
|
||||||
|
printPat({ billNo: evaluationInfo.value.billNo, templateName: name }).then((res) => {
|
||||||
|
if (res.data) {
|
||||||
|
printBase64PDF(res.data)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
const handleChange = () => {
|
||||||
|
queryPatInfo({ patNo: baseInfo.value.beinhos_id }).then((res) => {
|
||||||
baseInfo.value = res.data.xkPatientInfo
|
baseInfo.value = res.data.xkPatientInfo
|
||||||
|
// bloodInfo.value = res.data.xkTransfuseApplyBeforeList[0] || {}
|
||||||
|
// lisProject.value = res.data.xkTransfuseApplyTestitemList || []
|
||||||
|
|
||||||
|
splitAge(baseInfo.value.age)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
// 提交
|
// 提交
|
||||||
const handleSubmit = () => {
|
const handleSubmit = () => {
|
||||||
console.log('基础信息', baseInfo)
|
if (bloodInfo.value.bill_status && bloodInfo.value.bill_status == '2') return ElMessage.warning('该评估单已审核,不允许修改!')
|
||||||
console.log('表单数据', formData)
|
//判断病情概要是否填写
|
||||||
|
if (getParam('HZBQGY') == 'Y' && !bloodInfo.value.bqgy) return ElMessage.warning('请务必填写病情概要,以便输血科评估用血合理性!')
|
||||||
|
const tempPatient = { ...baseInfo.value }
|
||||||
|
|
||||||
|
if (baseInfo.value.age) {
|
||||||
|
tempPatient.age = baseInfo.value.age + baseInfo.value.nldw
|
||||||
|
}
|
||||||
|
|
||||||
|
const data = {
|
||||||
|
xkPatientInfo: tempPatient,
|
||||||
|
xkTransfuseApplyBeforeList: [{
|
||||||
|
...bloodInfo.value,
|
||||||
|
beinhos_id: baseInfo.value.beinhos_id,
|
||||||
|
assess_data: evaluationInfo.value.assessmentDate
|
||||||
|
}],
|
||||||
|
xkTransfuseApplyTestitemList: lisProject.value
|
||||||
|
}
|
||||||
|
if (bloodInfo.value.bill_status && bloodInfo.value.bill_status == '1') {
|
||||||
|
updatePat(data).then((res) => {
|
||||||
|
if (res.code == 0) {
|
||||||
|
ElMessage.success('保存成功')
|
||||||
|
}
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
savePat(data).then((res) => {
|
||||||
|
if (res.code == 0) {
|
||||||
|
ElMessage.success('保存成功')
|
||||||
|
evaluationInfo.value.billNo = res.data
|
||||||
|
|
||||||
|
//获取到评估单号后请求最新评估单信息
|
||||||
|
getBillInfo()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
const goSxPath = () => {
|
||||||
|
router.push({ path: `/doctor/application` })
|
||||||
|
}
|
||||||
|
|
||||||
|
const getProject = () => {
|
||||||
|
queryLisProject({ need: 'Y' }).then((res) => {
|
||||||
|
lisProject.value = res.data.map(item => {
|
||||||
|
return {
|
||||||
|
bill_no: '',
|
||||||
|
item_name: item.pro_name,
|
||||||
|
item_result: '',
|
||||||
|
item_unit: item.unit,
|
||||||
|
test_date: dayjs().format('YYYY-MM-DD HH:mm:ss'),
|
||||||
|
sid: item.sid
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
getDictData('ks')
|
getDictData('ks', 'sxqjcxmmrz', 'nldw', 'anemia')
|
||||||
|
getProject()
|
||||||
|
|
||||||
|
|
||||||
|
const tipText = `<strong>输血报销适用限制范围如下:</strong><br />
|
||||||
|
诊疗少白细胞红细胞限特殊适应症与急救、抢救请根据限制范围,结合当前病人情况,判断是否适用医保如为自费患者。<br />
|
||||||
|
请到HIS-医保管理菜单-医保费用审核里`
|
||||||
|
//判断是否显示医保提示
|
||||||
|
if (getParam('YBZFXMTSXX') == 'Y') {
|
||||||
|
ElMessageBox.alert(
|
||||||
|
tipText,
|
||||||
|
'提示',
|
||||||
|
{
|
||||||
|
dangerouslyUseHTMLString: true,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
}
|
||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
@ -433,6 +541,19 @@ onMounted(() => {
|
|||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.col-project {
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.unit {
|
||||||
|
position: absolute;
|
||||||
|
left: 100%;
|
||||||
|
top: 0;
|
||||||
|
color: #aeb1b7;
|
||||||
|
margin-left: 5px;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -2,10 +2,18 @@
|
|||||||
* @file index.vue
|
* @file index.vue
|
||||||
* @description: 输血输注
|
* @description: 输血输注
|
||||||
* @author: w
|
* @author: w
|
||||||
* @since: 2026-06-04
|
* @since: 2026-06-15
|
||||||
*/
|
*/
|
||||||
<template>
|
<template>
|
||||||
<div class="app-container">
|
<div class="app-container">
|
||||||
|
<div class="form-card">
|
||||||
|
<el-button type="primary" plain>检索</el-button>
|
||||||
|
<el-button type="primary" plain>新增单据</el-button>
|
||||||
|
<el-button type="danger" plain>删除单据</el-button>
|
||||||
|
<el-button type="success" plain>保存</el-button>
|
||||||
|
<el-button type="warning" plain>打印护理记录</el-button>
|
||||||
|
</div>
|
||||||
|
|
||||||
<!-- 顶部搜索栏卡片 -->
|
<!-- 顶部搜索栏卡片 -->
|
||||||
<div class="search-card">
|
<div class="search-card">
|
||||||
<el-form inline :model="searchForm">
|
<el-form inline :model="searchForm">
|
||||||
@ -21,7 +29,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<!-- 上方表格卡片 -->
|
<!-- 上方表格卡片 -->
|
||||||
<div class="table-top-card">
|
<div class="table-top-card">
|
||||||
<el-table :data="topTableData" border @selection-change="handleSelect" highlight-current-row height="130px">
|
<el-table :data="topTableData" border @selection-change="handleSelect" highlight-current-row height="150px">
|
||||||
<el-table-column type="index" width="50" label="序号" align="center" />
|
<el-table-column type="index" width="50" label="序号" align="center" />
|
||||||
<el-table-column label="血液流水号" prop="bloodSn" align="center" />
|
<el-table-column label="血液流水号" prop="bloodSn" align="center" />
|
||||||
<el-table-column label="产品码" prop="productCode" align="center" />
|
<el-table-column label="产品码" prop="productCode" align="center" />
|
||||||
@ -38,131 +46,185 @@
|
|||||||
<div class="form-card">
|
<div class="form-card">
|
||||||
<el-tabs v-model="activeTab">
|
<el-tabs v-model="activeTab">
|
||||||
<el-tab-pane label="输血输注及护理登记" name="tab1">
|
<el-tab-pane label="输血输注及护理登记" name="tab1">
|
||||||
<el-form :model="formData" label-width="auto" class="form-top-label" label-position="top">
|
<el-form :model="formData" label-width="auto" class="form-top-label">
|
||||||
<!-- 第一行 -->
|
<!-- 第一行 -->
|
||||||
<div class="form-row four-col">
|
<el-row :gutter="20">
|
||||||
<el-form-item label="血液流水号:">
|
<el-col :span="6">
|
||||||
<el-input v-model="formData.bloodSn" style="width:100%" />
|
<el-form-item label="血液流水号:">
|
||||||
</el-form-item>
|
<el-input v-model="formData.bloodSn" style="width:100%" />
|
||||||
<el-form-item label="发血日期:">
|
</el-form-item>
|
||||||
<el-date-picker v-model="formData.fhDate" type="datetime" format="YYYY-MM-DD HH:mm:ss"
|
</el-col>
|
||||||
value-format="YYYY-MM-DD HH:mm:ss" style="width:100%" />
|
<el-col :span="6">
|
||||||
</el-form-item>
|
<el-form-item label="发血日期:">
|
||||||
<el-form-item label="科 室:">
|
<el-date-picker v-model="formData.fhDate" type="datetime" format="YYYY-MM-DD HH:mm:ss"
|
||||||
<el-select v-model="formData.department" placeholder="">
|
value-format="YYYY-MM-DD HH:mm:ss" style="width:100%" />
|
||||||
<el-option label="科室1" value="科室1"></el-option>
|
</el-form-item>
|
||||||
</el-select>
|
</el-col>
|
||||||
</el-form-item>
|
<el-col :span="6">
|
||||||
<el-form-item label="血型:">
|
<el-form-item label="科 室:">
|
||||||
<el-input v-model="formData.aboBlood" style="width:100%" />
|
<el-select v-model="formData.department" placeholder="">
|
||||||
</el-form-item>
|
<el-option label="科室1" value="科室1"></el-option>
|
||||||
<el-form-item label="申请单号:">
|
</el-select>
|
||||||
<el-input v-model="formData.applyNo" style="width:100%" />
|
</el-form-item>
|
||||||
</el-form-item>
|
</el-col>
|
||||||
<el-form-item label="申请日期:">
|
<el-col :span="6">
|
||||||
<el-date-picker v-model="formData.applyDate" type="datetime" format="YYYY-MM-DD HH:mm:ss"
|
<el-form-item label="血型:">
|
||||||
value-format="YYYY-MM-DD HH:mm:ss" style="width:100%" />
|
<el-input v-model="formData.aboBlood" style="width:100%" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</div>
|
</el-col>
|
||||||
<!-- 第二行 -->
|
</el-row>
|
||||||
<div class="form-row four-col">
|
<el-row :gutter="20">
|
||||||
<el-form-item label="发血品种:">
|
<el-col :span='6'>
|
||||||
<el-input v-model="formData.bloodType" style="width:100%" />
|
<el-form-item label="申请单号:">
|
||||||
</el-form-item>
|
<el-input v-model="formData.applyNo" style="width:100%" />
|
||||||
<el-form-item label="患者姓名:">
|
</el-form-item>
|
||||||
<el-input v-model="formData.patientName" style="width:100%" />
|
</el-col>
|
||||||
</el-form-item>
|
<el-col :span='6'>
|
||||||
<el-form-item label="住院号/ID号:">
|
<el-form-item label="申请日期:">
|
||||||
<el-input v-model="formData.inId" style="width:100%" />
|
<el-date-picker v-model="formData.applyDate" type="datetime" format="YYYY-MM-DD HH:mm:ss"
|
||||||
</el-form-item>
|
value-format="YYYY-MM-DD HH:mm:ss" style="width:100%" />
|
||||||
<el-form-item label="Rh(D):">
|
</el-form-item>
|
||||||
<el-input v-model="formData.rhD" style="width:100%" />
|
</el-col>
|
||||||
</el-form-item>
|
<el-col :span='6'>
|
||||||
<el-form-item label="血量:">
|
<el-form-item label="发血品种:">
|
||||||
<div class="two-input-wrap">
|
<el-input v-model="formData.bloodType" style="width:100%" />
|
||||||
<el-input v-model="formData.vol1" style="flex:1" />
|
</el-form-item>
|
||||||
<el-input v-model="formData.vol2" style="flex:1" />
|
</el-col>
|
||||||
</div>
|
<el-col :span='6'>
|
||||||
</el-form-item>
|
<el-form-item label="Rh(D):">
|
||||||
</div>
|
<el-input v-model="formData.rhD" style="width:100%" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-row :gutter="20">
|
||||||
|
<el-col :span='6'>
|
||||||
|
<el-form-item label="患者姓名:">
|
||||||
|
<el-input v-model="formData.patientName" style="width:100%" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span='6'>
|
||||||
|
<el-form-item label="住院号/ID号:">
|
||||||
|
<el-input v-model="formData.inId" style="width:100%" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span='6'>
|
||||||
|
<el-form-item label="血量:">
|
||||||
|
<div class="two-input-wrap">
|
||||||
|
<el-input v-model="formData.vol1" style="width:65%" />
|
||||||
|
<el-input v-model="formData.vol2" style="width:35%" />
|
||||||
|
</div>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
|
||||||
|
|
||||||
<div class="split-line">输血输注及护理信息</div>
|
<div class="split-line">输血输注及护理信息</div>
|
||||||
<!-- 第四行 -->
|
<!-- 第四行 -->
|
||||||
<div class="form-row four-col">
|
<el-row :gutter="20">
|
||||||
<el-form-item label="登记日期:">
|
<el-col :span="6">
|
||||||
<el-date-picker v-model="formData.regDate" type="datetime" format="YYYY-MM-DD HH:mm:ss"
|
<el-form-item label="登记日期:">
|
||||||
value-format="YYYY-MM-DD HH:mm:ss" style="width:100%" />
|
<el-date-picker v-model="formData.regDate" type="datetime" format="YYYY-MM-DD HH:mm:ss"
|
||||||
</el-form-item>
|
value-format="YYYY-MM-DD HH:mm:ss" style="width:100%" />
|
||||||
<el-form-item label="输血医师:">
|
</el-form-item>
|
||||||
<el-input v-model="formData.docName" style="width:100%" />
|
</el-col>
|
||||||
</el-form-item>
|
<el-col :span="6">
|
||||||
<el-form-item label="责任护士:">
|
<el-form-item label="输血医师:">
|
||||||
<el-select v-model="formData.nurse" placeholder="">
|
<el-input v-model="formData.docName" style="width:100%" />
|
||||||
<el-option label="张三" value="张三"></el-option>
|
</el-form-item>
|
||||||
</el-select>
|
</el-col>
|
||||||
</el-form-item>
|
<el-col :span="6">
|
||||||
<el-form-item label="滴速:">
|
<el-form-item label="责任护士:">
|
||||||
<el-input v-model="formData.speed">
|
<el-select v-model="formData.nurse" placeholder="">
|
||||||
<template #suffix> 滴/分 </template>
|
<el-option label="张三" value="张三"></el-option>
|
||||||
</el-input>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</div>
|
</el-col>
|
||||||
<!-- 复选+右侧表单 -->
|
<el-col :span="6">
|
||||||
<div class="form-row-check">
|
<el-form-item label="滴速:">
|
||||||
<div class="check-col">
|
<el-input v-model="formData.speed">
|
||||||
<el-checkbox v-model="formData.check1">患者信息是否核对</el-checkbox>
|
<template #suffix> 滴/分 </template>
|
||||||
<el-checkbox v-model="formData.check2">交叉配血结果是否相符</el-checkbox>
|
</el-input>
|
||||||
<el-checkbox v-model="formData.check3">血液是否未过期</el-checkbox>
|
</el-form-item>
|
||||||
<el-checkbox v-model="formData.check4">血袋外观是否合格</el-checkbox>
|
</el-col>
|
||||||
<el-checkbox v-model="formData.check5">血液流水号是否相符</el-checkbox>
|
</el-row>
|
||||||
</div>
|
|
||||||
<div class="field-col">
|
|
||||||
<div class="form-row four-col">
|
|
||||||
<el-form-item label="输血开始时间:">
|
|
||||||
<el-date-picker v-model="formData.startTime" type="datetime" format="YYYY-MM-DD HH:mm:ss"
|
|
||||||
style="width:100%" />
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="输血结束时间:">
|
|
||||||
<el-date-picker v-model="formData.endTime" type="datetime" format="YYYY-MM-DD HH:mm:ss"
|
|
||||||
style="width:100%" />
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="一刻钟观察时间:">
|
|
||||||
<el-date-picker v-model="formData.q1Time" type="datetime" format="YYYY-MM-DD HH:mm:ss"
|
|
||||||
style="width:100%" />
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="一刻钟观察护士:">
|
|
||||||
<el-select v-model="formData.q1Nurse" placeholder="">
|
|
||||||
<el-option label="张三" value="张三"></el-option>
|
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
|
||||||
</div>
|
|
||||||
<div class="form-row four-col">
|
|
||||||
<el-form-item label="一小时观察时间:">
|
|
||||||
<el-date-picker v-model="formData.qhTime" type="datetime" format="YYYY-MM-DD HH:mm:ss"
|
|
||||||
style="width:100%" />
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="一小时观察护士:">
|
|
||||||
<el-select v-model="formData.qhNurse" placeholder="">
|
|
||||||
<el-option label="张三" value="张三"></el-option>
|
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="输血后血袋处理:">
|
|
||||||
<el-input v-model="formData.bagDeal" style="width:100%" />
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="审阅者:" class="red-label">
|
|
||||||
<el-select v-model="formData.checkUser" placeholder="">
|
|
||||||
<el-option label="张三" value="张三"></el-option>
|
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="form-row">
|
<!-- 复选+右侧表单 -->
|
||||||
<el-form-item label="输血情况记录:">
|
<el-row :gutter="20">
|
||||||
<el-input v-model="formData.record" style="width:500px" />
|
<el-col :span="6">
|
||||||
</el-form-item>
|
<div class="form-row-check">
|
||||||
|
<el-checkbox v-model="formData.check1">患者信息是否核对</el-checkbox>
|
||||||
|
<el-checkbox v-model="formData.check2">交叉配血结果是否相符</el-checkbox>
|
||||||
|
<el-checkbox v-model="formData.check3">血液是否未过期</el-checkbox>
|
||||||
|
<el-checkbox v-model="formData.check4">血袋外观是否合格</el-checkbox>
|
||||||
|
<el-checkbox v-model="formData.check5">血液流水号是否相符</el-checkbox>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</el-col>
|
||||||
</div>
|
<el-col :span="18">
|
||||||
|
<el-row :gutter="20">
|
||||||
|
<el-col :span="8">
|
||||||
|
<el-form-item label="输血开始时间:">
|
||||||
|
<el-date-picker v-model="formData.startTime" type="datetime" format="YYYY-MM-DD HH:mm:ss"
|
||||||
|
style="width:100%" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="8">
|
||||||
|
<el-form-item label="输血结束时间:">
|
||||||
|
<el-date-picker v-model="formData.endTime" type="datetime" format="YYYY-MM-DD HH:mm:ss"
|
||||||
|
style="width:100%" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="8"></el-col>
|
||||||
|
<el-col :span="8">
|
||||||
|
<el-form-item label="一刻钟观察时间:">
|
||||||
|
<el-date-picker v-model="formData.q1Time" type="datetime" format="YYYY-MM-DD HH:mm:ss"
|
||||||
|
style="width:100%" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="8">
|
||||||
|
<el-form-item label="一刻钟观察护士:">
|
||||||
|
<el-select v-model="formData.q1Nurse" placeholder="">
|
||||||
|
<el-option label="张三" value="张三"></el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="8"></el-col>
|
||||||
|
<el-col :span="8">
|
||||||
|
<el-form-item label="一小时观察时间:">
|
||||||
|
<el-date-picker v-model="formData.qhTime" type="datetime" format="YYYY-MM-DD HH:mm:ss"
|
||||||
|
style="width:100%" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="8">
|
||||||
|
<el-form-item label="一小时观察护士:">
|
||||||
|
<el-select v-model="formData.qhNurse" placeholder="">
|
||||||
|
<el-option label="张三" value="张三"></el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="8"></el-col>
|
||||||
|
<el-col :span="8">
|
||||||
|
<el-form-item label="输血后血袋处理:">
|
||||||
|
<el-input v-model="formData.bagDeal" style="width:100%" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="8">
|
||||||
|
<el-form-item label="审阅者:" class="red-label">
|
||||||
|
<el-select v-model="formData.checkUser" placeholder="">
|
||||||
|
<el-option label="张三" value="张三"></el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="8"></el-col>
|
||||||
|
<el-col :span="16">
|
||||||
|
<el-form-item label="输血情况记录:">
|
||||||
|
<el-input v-model="formData.record" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
|
||||||
|
</el-row>
|
||||||
|
</el-col>
|
||||||
|
|
||||||
|
</el-row>
|
||||||
</el-form>
|
</el-form>
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
<el-tab-pane label="临床监护记录" name="tab2">
|
<el-tab-pane label="临床监护记录" name="tab2">
|
||||||
@ -232,15 +294,15 @@ const queryByIn = () => { console.log('按住院号查找', searchForm.value.inN
|
|||||||
padding: 14px;
|
padding: 14px;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
gap: 16px;
|
gap: 10px;
|
||||||
overflow-y: auto;
|
overflow-y: auto;
|
||||||
|
|
||||||
// 搜索卡片
|
// 搜索卡片
|
||||||
.search-card {
|
.search-card {
|
||||||
background: #fff;
|
background: #fff;
|
||||||
padding: 16px 20px;
|
padding: 12px;
|
||||||
border-radius: 6px;
|
border-radius: 4px;
|
||||||
box-shadow: 0 1px 12px rgba(0, 0, 0, 0.065);
|
box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.08);
|
||||||
|
|
||||||
:deep(.el-form-item) {
|
:deep(.el-form-item) {
|
||||||
margin-bottom: 0;
|
margin-bottom: 0;
|
||||||
@ -254,9 +316,6 @@ const queryByIn = () => { console.log('按住院号查找', searchForm.value.inN
|
|||||||
border-radius: 6px;
|
border-radius: 6px;
|
||||||
box-shadow: 0 1px 12px rgba(0, 0, 0, 0.065);
|
box-shadow: 0 1px 12px rgba(0, 0, 0, 0.065);
|
||||||
|
|
||||||
&:hover {
|
|
||||||
box-shadow: 0 6px 12px rgba(0, 0, 0, 0.12); // 悬停加深阴影
|
|
||||||
}
|
|
||||||
|
|
||||||
:deep(.el-table__header th) {
|
:deep(.el-table__header th) {
|
||||||
background: #f5f7fa;
|
background: #f5f7fa;
|
||||||
@ -264,7 +323,7 @@ const queryByIn = () => { console.log('按住院号查找', searchForm.value.inN
|
|||||||
}
|
}
|
||||||
|
|
||||||
:deep(.el-tabs__header) {
|
:deep(.el-tabs__header) {
|
||||||
margin-bottom: 0;
|
margin-bottom: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 下方表单卡片
|
// 下方表单卡片
|
||||||
@ -274,21 +333,12 @@ const queryByIn = () => { console.log('按住院号查找', searchForm.value.inN
|
|||||||
border-radius: 6px;
|
border-radius: 6px;
|
||||||
box-shadow: 0 1px 12px rgba(0, 0, 0, 0.065);
|
box-shadow: 0 1px 12px rgba(0, 0, 0, 0.065);
|
||||||
|
|
||||||
&:hover {
|
|
||||||
box-shadow: 0 6px 12px rgba(0, 0, 0, 0.12); // 悬停加深阴影
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-top-label {
|
.form-top-label {
|
||||||
|
|
||||||
:deep(.el-form-item__label) {
|
|
||||||
padding: 0 0 5px 0;
|
|
||||||
margin: 8px 0 0 0;
|
|
||||||
font-size: 14px;
|
|
||||||
}
|
|
||||||
|
|
||||||
:deep(.el-form-item) {
|
:deep(.el-form-item) {
|
||||||
margin-bottom: 12px;
|
margin-bottom: 6px;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.split-line {
|
.split-line {
|
||||||
@ -310,40 +360,12 @@ const queryByIn = () => { console.log('按住院号查找', searchForm.value.inN
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.form-row {
|
|
||||||
display: flex;
|
|
||||||
gap: 10px;
|
|
||||||
margin-bottom: 0;
|
|
||||||
|
|
||||||
&.four-col {
|
|
||||||
>.el-form-item {
|
|
||||||
width: 250px;
|
|
||||||
margin-bottom: 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.two-input-wrap {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
gap: 6px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-row-check {
|
.form-row-check {
|
||||||
display: flex;
|
display: flex;
|
||||||
gap: 24px;
|
flex-direction: column;
|
||||||
margin-top: 10px;
|
padding-left: 30px;
|
||||||
|
|
||||||
.check-col {
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
gap: 12px;
|
|
||||||
width: 238px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.field-col {
|
|
||||||
flex: 1;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
:deep(.red-label) {
|
:deep(.red-label) {
|
||||||
|
|||||||
@ -65,6 +65,9 @@
|
|||||||
<el-button type="warning" plain icon="Download" @click="handleExport"
|
<el-button type="warning" plain icon="Download" @click="handleExport"
|
||||||
v-hasPermi="['system:user:export']">导出</el-button>
|
v-hasPermi="['system:user:export']">导出</el-button>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
<el-col :span="1.5">
|
||||||
|
<el-button type="primary" plain icon="Refresh" @click="handleSync">同步用户数据</el-button>
|
||||||
|
</el-col>
|
||||||
<right-toolbar v-model:showSearch="showSearch" @queryTable="getList" :columns="columns"></right-toolbar>
|
<right-toolbar v-model:showSearch="showSearch" @queryTable="getList" :columns="columns"></right-toolbar>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
|
||||||
@ -245,7 +248,7 @@
|
|||||||
<script setup lang="ts" name="User">
|
<script setup lang="ts" name="User">
|
||||||
import { getToken } from "@/utils/auth"
|
import { getToken } from "@/utils/auth"
|
||||||
import useAppStore from '@/store/modules/app'
|
import useAppStore from '@/store/modules/app'
|
||||||
import { changeUserStatus, listUser, resetUserPwd, delUser, getUser, updateUser, addUser, deptTreeSelect } from "@/api/system/user"
|
import { changeUserStatus, listUser, resetUserPwd, delUser, getUser, updateUser, addUser, deptTreeSelect, syncUser } from "@/api/system/user"
|
||||||
import { Splitpanes, Pane } from "splitpanes"
|
import { Splitpanes, Pane } from "splitpanes"
|
||||||
import "splitpanes/dist/splitpanes.css"
|
import "splitpanes/dist/splitpanes.css"
|
||||||
import type { SysUser, UserQueryParams, UserFormDataResult } from '@/types/api/system/user'
|
import type { SysUser, UserQueryParams, UserFormDataResult } from '@/types/api/system/user'
|
||||||
@ -386,6 +389,12 @@ function resetQuery() {
|
|||||||
handleQuery()
|
handleQuery()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const handleSync = () => {
|
||||||
|
syncUser().then(() => {
|
||||||
|
handleQuery()
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
/** 删除按钮操作 */
|
/** 删除按钮操作 */
|
||||||
function handleDelete(row?: SysUser) {
|
function handleDelete(row?: SysUser) {
|
||||||
const userIds = row?.userId || ids.value
|
const userIds = row?.userId || ids.value
|
||||||
|
|||||||
@ -38,10 +38,6 @@
|
|||||||
<svg-icon icon-class="date" />创建日期
|
<svg-icon icon-class="date" />创建日期
|
||||||
<div class="pull-right">{{ state.user.createTime }}</div>
|
<div class="pull-right">{{ state.user.createTime }}</div>
|
||||||
</li>
|
</li>
|
||||||
<li class="list-group-item">
|
|
||||||
<svg-icon icon-class="system" />浏览器ID
|
|
||||||
<div class="pull-right">{{ mbStore.fingerprint }}</div>
|
|
||||||
</li>
|
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</el-card>
|
</el-card>
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user