页面布局、数据筛选
This commit is contained in:
parent
846442e93a
commit
83ed53901d
19
src/App.vue
19
src/App.vue
@ -10,24 +10,19 @@ import { useFingerprint } from '@/utils/useFingerprint';
|
|||||||
import { useCommonStore } from '@/store/modules/commonStore'
|
import { useCommonStore } from '@/store/modules/commonStore'
|
||||||
const mbStore = useCommonStore();
|
const mbStore = useCommonStore();
|
||||||
// 使用自定义hook获取指纹信息
|
// 使用自定义hook获取指纹信息
|
||||||
const {
|
const { fingerprint, getFingerprint } = useFingerprint();
|
||||||
fingerprint,
|
|
||||||
loading,
|
if (!mbStore.fingerprint) {
|
||||||
error,
|
// 重新获取指纹
|
||||||
getFingerprint
|
getFingerprint();
|
||||||
} = useFingerprint();
|
mbStore.setFingerprint(fingerprint)
|
||||||
|
}
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
nextTick(() => {
|
nextTick(() => {
|
||||||
// 初始化主题样式
|
// 初始化主题样式
|
||||||
handleThemeStyle(useSettingsStore().theme)
|
handleThemeStyle(useSettingsStore().theme)
|
||||||
})
|
})
|
||||||
|
|
||||||
if (!mbStore.fingerprint) {
|
|
||||||
// 重新获取指纹
|
|
||||||
getFingerprint();
|
|
||||||
mbStore.setFingerprint(fingerprint)
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -124,6 +124,7 @@ aside {
|
|||||||
//main-container全局样式
|
//main-container全局样式
|
||||||
.app-container {
|
.app-container {
|
||||||
padding: 10px 10px 0 10px;
|
padding: 10px 10px 0 10px;
|
||||||
|
min-height: calc(100vh - 84px);
|
||||||
}
|
}
|
||||||
|
|
||||||
.components-container {
|
.components-container {
|
||||||
@ -303,4 +304,8 @@ aside {
|
|||||||
color: #fff;
|
color: #fff;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.next_btn {
|
||||||
|
margin-right: 0.2rem;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@ -13,10 +13,10 @@
|
|||||||
|
|
||||||
<template>
|
<template>
|
||||||
<div class="common-table-container">
|
<div class="common-table-container">
|
||||||
<vxe-table :data="tableData" :loading="loading" border height="auto" :checkbox-config="config.checkboxConfig"
|
<vxe-table :data="tableData" :loading="loading" border :checkbox-config="config.checkboxConfig"
|
||||||
@checkbox-change="handleCheckboxChange" :row-config="rowConfig" :show-overflow="showOverflow"
|
:height="scrollYConfig.height" @checkbox-change="handleCheckboxChange" :row-config="rowConfig"
|
||||||
@current-change="handleRowClick" ref="tableRef" :size="size" :current-row="currentRow"
|
:show-overflow="showOverflow" @current-change="handleRowClick" ref="tableRef" :size="size"
|
||||||
:highlight-current-row="highlightCurrentRow" :scroll-y="scrollYConfig"
|
:current-row="currentRow" :highlight-current-row="highlightCurrentRow" :scroll-y="scrollYConfig"
|
||||||
:header-cell-class-name="enableColumnDrag ? 'el-table-header-cell' : ''" v-bind="$attrs">
|
:header-cell-class-name="enableColumnDrag ? 'el-table-header-cell' : ''" v-bind="$attrs">
|
||||||
<!-- 动态渲染列 -->
|
<!-- 动态渲染列 -->
|
||||||
<template v-for="(column, i) in columns" :key="`${column.field}-${i}`">
|
<template v-for="(column, i) in columns" :key="`${column.field}-${i}`">
|
||||||
@ -88,7 +88,11 @@ const props = defineProps({
|
|||||||
// 纵向滚动配置
|
// 纵向滚动配置
|
||||||
scrollYConfig: {
|
scrollYConfig: {
|
||||||
type: Object,
|
type: Object,
|
||||||
default: () => ({ enabled: true, rSize: 30, adaptive: true })
|
default: () => ({
|
||||||
|
enabled: true, // 强制启用虚拟滚动
|
||||||
|
rSize: 30, // 行高(需与实际行高一致)
|
||||||
|
height: 600, // 固定表格高度(关键,单位px)
|
||||||
|
})
|
||||||
},
|
},
|
||||||
// 表格尺寸
|
// 表格尺寸
|
||||||
size: {
|
size: {
|
||||||
|
|||||||
@ -3,7 +3,7 @@
|
|||||||
<router-view v-slot="{ Component, route }">
|
<router-view v-slot="{ Component, route }">
|
||||||
<transition name="fade-transform" mode="out-in">
|
<transition name="fade-transform" mode="out-in">
|
||||||
<keep-alive :include="tagsViewStore.cachedViews">
|
<keep-alive :include="tagsViewStore.cachedViews">
|
||||||
<component v-if="!route.meta.link" :is="Component" :key="route.path"/>
|
<component v-if="!route.meta.link" :is="Component" :key="route.path" />
|
||||||
</keep-alive>
|
</keep-alive>
|
||||||
</transition>
|
</transition>
|
||||||
</router-view>
|
</router-view>
|
||||||
@ -21,24 +21,24 @@ const tagsViewStore = useTagsViewStore()
|
|||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
.app-main {
|
.app-main {
|
||||||
/* 50= navbar 50 */
|
/* 50= navbar 50 */
|
||||||
min-height: calc(100vh - 50px);
|
min-height: calc(100vh - 3.125rem);
|
||||||
width: 100%;
|
width: 100%;
|
||||||
position: relative;
|
position: relative;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
}
|
}
|
||||||
|
|
||||||
.fixed-header + .app-main {
|
.fixed-header+.app-main {
|
||||||
padding-top: 50px;
|
padding-top: 3.125rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.hasTagsView {
|
.hasTagsView {
|
||||||
.app-main {
|
.app-main {
|
||||||
/* 84 = navbar + tags-view = 50 + 34 */
|
/* 84 = navbar + tags-view = 50 + 34 */
|
||||||
min-height: calc(100vh - 84px);
|
min-height: calc(100vh - 5.25rem);
|
||||||
}
|
}
|
||||||
|
|
||||||
.fixed-header + .app-main {
|
.fixed-header+.app-main {
|
||||||
padding-top: 84px;
|
padding-top: 5.25rem;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
@ -65,4 +65,3 @@ const tagsViewStore = useTagsViewStore()
|
|||||||
border-radius: 3px;
|
border-radius: 3px;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
|
|||||||
@ -1,12 +1,8 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="navbar">
|
<div class="navbar">
|
||||||
<!-- 侧边栏折叠按钮(保留原有功能) -->
|
<!-- 侧边栏折叠按钮(保留原有功能) -->
|
||||||
<hamburger
|
<hamburger id="hamburger-container" :is-active="appStore.sidebar.opened" class="hamburger-container"
|
||||||
id="hamburger-container"
|
@toggleClick="toggleSideBar" />
|
||||||
:is-active="appStore.sidebar.opened"
|
|
||||||
class="hamburger-container"
|
|
||||||
@toggleClick="toggleSideBar"
|
|
||||||
/>
|
|
||||||
|
|
||||||
<!-- 核心改造:替换面包屑/顶部导航,改为产品名称 + 登录信息布局 -->
|
<!-- 核心改造:替换面包屑/顶部导航,改为产品名称 + 登录信息布局 -->
|
||||||
<div class="custom-header-content">
|
<div class="custom-header-content">
|
||||||
@ -25,7 +21,7 @@
|
|||||||
<size-select id="size-select" class="right-menu-item hover-effect" />
|
<size-select id="size-select" class="right-menu-item hover-effect" />
|
||||||
</el-tooltip>
|
</el-tooltip>
|
||||||
</template>
|
</template>
|
||||||
-->
|
-->
|
||||||
<!-- 登录人信息(姓名 + 角色) -->
|
<!-- 登录人信息(姓名 + 角色) -->
|
||||||
<div class="user-info" v-if="userStore.nickName">
|
<div class="user-info" v-if="userStore.nickName">
|
||||||
欢迎,{{ userStore.nickName }}({{ userStore.roleName }})
|
欢迎,{{ userStore.nickName }}({{ userStore.roleName }})
|
||||||
@ -60,7 +56,7 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
import {ElMessageBox} from 'element-plus'
|
import { ElMessageBox } from 'element-plus'
|
||||||
// 引入原有组件
|
// 引入原有组件
|
||||||
import Breadcrumb from '@/components/Breadcrumb'
|
import Breadcrumb from '@/components/Breadcrumb'
|
||||||
import TopNav from '@/components/TopNav'
|
import TopNav from '@/components/TopNav'
|
||||||
@ -75,7 +71,7 @@ import useAppStore from '@/store/modules/app'
|
|||||||
import useUserStore from '@/store/modules/user'
|
import useUserStore from '@/store/modules/user'
|
||||||
import useSettingsStore from '@/store/modules/settings'
|
import useSettingsStore from '@/store/modules/settings'
|
||||||
// 引入图标和默认头像(可替换为你的默认头像)
|
// 引入图标和默认头像(可替换为你的默认头像)
|
||||||
import {CaretBottom} from '@element-plus/icons-vue'
|
import { CaretBottom } from '@element-plus/icons-vue'
|
||||||
|
|
||||||
const appStore = useAppStore()
|
const appStore = useAppStore()
|
||||||
const userStore = useUserStore()
|
const userStore = useUserStore()
|
||||||
@ -137,20 +133,24 @@ function setLayout() {
|
|||||||
|
|
||||||
<style lang='scss' scoped>
|
<style lang='scss' scoped>
|
||||||
.navbar {
|
.navbar {
|
||||||
height: 50px; /* 固定高度,与原有一致 */
|
height: 3.125rem;
|
||||||
|
/* 固定高度,与原有一致 */
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
position: relative;
|
position: relative;
|
||||||
//background: #fff;
|
//background: #fff;
|
||||||
background: #0d9488;
|
background: #0d9488;
|
||||||
box-shadow: 0 1px 4px rgba(0, 21, 41, 0.15);
|
box-shadow: 0 1px 4px rgba(0, 21, 41, 0.15);
|
||||||
//box-shadow: 0 1px 4px rgba(0, 21, 41, 0.08);
|
//box-shadow: 0 1px 4px rgba(0, 21, 41, 0.08);
|
||||||
display: flex; /* 改为flex布局,确保子元素对齐 */
|
display: flex;
|
||||||
align-items: center; /* 垂直居中 */
|
/* 改为flex布局,确保子元素对齐 */
|
||||||
|
align-items: center;
|
||||||
|
/* 垂直居中 */
|
||||||
|
|
||||||
.hamburger-container {
|
.hamburger-container {
|
||||||
line-height: 50px; /* 与导航栏高度一致 */
|
line-height: 3.125rem;
|
||||||
|
/* 与导航栏高度一致 */
|
||||||
height: 100%;
|
height: 100%;
|
||||||
padding: 0 16px;
|
padding: 0 1rem;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
transition: background 0.3s;
|
transition: background 0.3s;
|
||||||
-webkit-tap-highlight-color: transparent;
|
-webkit-tap-highlight-color: transparent;
|
||||||
@ -165,19 +165,23 @@ function setLayout() {
|
|||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
flex: 1; /* 占满剩余宽度 */
|
flex: 1;
|
||||||
padding: 0 20px;
|
/* 占满剩余宽度 */
|
||||||
|
padding: 0 1.25rem;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
margin-left: 5px;
|
margin-left: .3125rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 产品名称样式 */
|
/* 产品名称样式 */
|
||||||
.app-name {
|
.app-name {
|
||||||
font-size: 18px;
|
font-size: 1.125rem;
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
color: #fff; /* 若依主题色,可替换为品牌色 */
|
color: #fff;
|
||||||
white-space: nowrap; /* 防止换行 */
|
/* 若依主题色,可替换为品牌色 */
|
||||||
font-style: italic; /* 关键:字体倾斜 */
|
white-space: nowrap;
|
||||||
|
/* 防止换行 */
|
||||||
|
font-style: italic;
|
||||||
|
/* 关键:字体倾斜 */
|
||||||
/* 可选优化:增加倾斜角度控制(默认 italic 约 14 度,可自定义) */
|
/* 可选优化:增加倾斜角度控制(默认 italic 约 14 度,可自定义) */
|
||||||
/* transform: skewX(-10deg); /* 向左倾斜 10 度,正负值控制倾斜方向 */
|
/* transform: skewX(-10deg); /* 向左倾斜 10 度,正负值控制倾斜方向 */
|
||||||
}
|
}
|
||||||
@ -186,13 +190,15 @@ function setLayout() {
|
|||||||
.right-content {
|
.right-content {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
gap: 12px; /* 元素间距,可调整 */
|
gap: .75rem;
|
||||||
white-space: nowrap; /* 防止换行 */
|
/* 元素间距,可调整 */
|
||||||
|
white-space: nowrap;
|
||||||
|
/* 防止换行 */
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 用户信息样式 */
|
/* 用户信息样式 */
|
||||||
.user-info {
|
.user-info {
|
||||||
font-size: 14px;
|
font-size: .875rem;
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
@ -204,9 +210,9 @@ function setLayout() {
|
|||||||
display: inline-flex;
|
display: inline-flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
padding: 0 8px;
|
padding: 0 .5rem;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
font-size: 18px;
|
font-size: 1.125rem;
|
||||||
color: #5a5e66;
|
color: #5a5e66;
|
||||||
vertical-align: text-bottom;
|
vertical-align: text-bottom;
|
||||||
|
|
||||||
@ -226,19 +232,23 @@ function setLayout() {
|
|||||||
position: relative;
|
position: relative;
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
gap: 4px; /* 头像与下拉图标间距 */
|
gap: .25rem;
|
||||||
|
/* 头像与下拉图标间距 */
|
||||||
|
|
||||||
.user-avatar {
|
.user-avatar {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
width: 36px; /* 调整头像大小 */
|
width: 2.25rem;
|
||||||
height: 36px;
|
/* 调整头像大小 */
|
||||||
border-radius: 50%; /* 圆形头像,可改为10px保持原有风格 */
|
height: 2.25rem;
|
||||||
object-fit: cover; /* 防止头像变形 */
|
border-radius: 50%;
|
||||||
|
/* 圆形头像,可改为10px保持原有风格 */
|
||||||
|
object-fit: cover;
|
||||||
|
/* 防止头像变形 */
|
||||||
}
|
}
|
||||||
|
|
||||||
i {
|
i {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
font-size: 12px;
|
font-size: .75rem;
|
||||||
color: #5a5e66;
|
color: #5a5e66;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -39,11 +39,6 @@ export function useFingerprint() {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
// 组件挂载时自动获取指纹
|
|
||||||
onMounted(() => {
|
|
||||||
// getFingerprint();
|
|
||||||
});
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
fingerprint,
|
fingerprint,
|
||||||
loading,
|
loading,
|
||||||
|
|||||||
273
src/views/liswork/micro/components/searchListFrom.vue
Normal file
273
src/views/liswork/micro/components/searchListFrom.vue
Normal file
@ -0,0 +1,273 @@
|
|||||||
|
<template>
|
||||||
|
<el-popover :visible="selectVisible" placement="bottom" :width="'18vw'" @after-enter="initClickOutside">
|
||||||
|
<el-form :model="queryParams" class="query-form" label-width="5.625rem">
|
||||||
|
<!-- 病人类型选择 -->
|
||||||
|
<el-form-item label="病人类型:" prop="brly">
|
||||||
|
<el-select v-model="queryParams.brly" placeholder="全部" clearable>
|
||||||
|
<el-option v-for="item in brlyOptions" :key="item.value" :label="item.label" :value="item.value" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="药敏:" prop="finish">
|
||||||
|
<el-radio-group v-model="queryParams.finish" @change="handleRadioChange">
|
||||||
|
<el-radio value="1" @click.native="handleRadioClick('1', 'finish')">已完成</el-radio>
|
||||||
|
<el-radio value="0" @click.native="handleRadioClick('0', 'finish')">未完成</el-radio>
|
||||||
|
</el-radio-group>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- 审核状态选择 -->
|
||||||
|
<el-form-item label="审核状态:" prop="jgbz">
|
||||||
|
<el-radio-group v-model="queryParams.jgbz" @change="handleRadioChange">
|
||||||
|
<el-radio value="2" @click.native="handleRadioClick('2', 'jgbz')">已审核</el-radio>
|
||||||
|
<el-radio value="3" @click.native="handleRadioClick('3', 'jgbz')">初报</el-radio>
|
||||||
|
<el-radio value="4" @click.native="handleRadioClick('4', 'jgbz')">二报</el-radio>
|
||||||
|
</el-radio-group>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="7">
|
||||||
|
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="7">
|
||||||
|
<!-- 危急值选择 -->
|
||||||
|
<el-form-item prop="alarmflag" label-width="0">
|
||||||
|
<el-checkbox v-model="queryParams.alarmflag" true-value="1" false-value=""> 警 </el-checkbox>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="8">
|
||||||
|
<!-- 急诊选择 -->
|
||||||
|
<el-form-item prop="jzbz" label-width="0">
|
||||||
|
<el-checkbox v-model="queryParams.jzbz" true-value="1" false-value=""> 急诊 </el-checkbox>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
|
||||||
|
<!-- 打印状态选择 -->
|
||||||
|
<el-form-item label="打印状态:" prop="dybz">
|
||||||
|
<el-radio-group v-model="queryParams.dybz" @chnage="handleRadioChange">
|
||||||
|
<el-radio value="1" @click.native="handleRadioClick('1', 'dybz')">已打印</el-radio>
|
||||||
|
<el-radio value="0" @click.native="handleRadioClick('0', 'dybz')">未打印</el-radio>
|
||||||
|
</el-radio-group>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- 操作按钮 -->
|
||||||
|
<el-form-item>
|
||||||
|
<el-button type="primary" @click="handleQuery" :size="props.size">确认查询</el-button>
|
||||||
|
<el-button @click="handleReset" style="margin-left: 0.5rem" :size="props.size">重置</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
|
||||||
|
<template #reference>
|
||||||
|
<el-input v-model="selectShowValue" :size="props.size" @clear="clearHandle"
|
||||||
|
@click="selectVisible = !selectVisible" :placeholder="props.placeholder" readonly
|
||||||
|
:style="{ width: props.width }" suffix-icon="ArrowDown" :clearable="props.clearable" />
|
||||||
|
</template>
|
||||||
|
</el-popover>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup lang="ts">
|
||||||
|
import { ref, defineProps, defineEmits, nextTick, watch } from 'vue'
|
||||||
|
import { ElMessage } from 'element-plus'
|
||||||
|
|
||||||
|
// 定义下拉选项类型
|
||||||
|
interface OptionItem {
|
||||||
|
label: string
|
||||||
|
value: string | number
|
||||||
|
}
|
||||||
|
|
||||||
|
// 定义查询参数类型
|
||||||
|
interface QueryParams {
|
||||||
|
brly?: string | number
|
||||||
|
jgbz?: string | number
|
||||||
|
dybz?: string | number
|
||||||
|
alarmflag?: string | number
|
||||||
|
jzbz?: string | number
|
||||||
|
finish?: string | number
|
||||||
|
autojgbz?: string | number
|
||||||
|
}
|
||||||
|
|
||||||
|
// 定义组件Props
|
||||||
|
const props = defineProps<{
|
||||||
|
// 可传入初始查询参数
|
||||||
|
initialParams?: Partial<QueryParams>,
|
||||||
|
// 宽度
|
||||||
|
width?: string,
|
||||||
|
// 是否禁用
|
||||||
|
disabled?: boolean,
|
||||||
|
// 是否可清空
|
||||||
|
clearable?: boolean,
|
||||||
|
// 是否显示查询按钮
|
||||||
|
showQueryButton?: boolean,
|
||||||
|
// 是否显示重置按钮
|
||||||
|
showResetButton?: boolean,
|
||||||
|
// 尺寸
|
||||||
|
size?: 'large' | 'default' | 'small',
|
||||||
|
// 占位符
|
||||||
|
placeholder?: string,
|
||||||
|
dictData?: any
|
||||||
|
}>()
|
||||||
|
|
||||||
|
|
||||||
|
watch(() => props.dictData, () => {
|
||||||
|
brlyOptions.value = props.dictData.PT
|
||||||
|
optionMaps.brly = props.dictData.PT
|
||||||
|
})
|
||||||
|
|
||||||
|
// 定义组件事件
|
||||||
|
const emit = defineEmits<{
|
||||||
|
// 查询事件,返回查询参数
|
||||||
|
(e: 'query', params: QueryParams): void
|
||||||
|
// 重置事件
|
||||||
|
(e: 'reset'): void
|
||||||
|
}>()
|
||||||
|
const selectVisible = ref(false)
|
||||||
|
const selectShowValue = ref('')
|
||||||
|
const selectRef = ref()
|
||||||
|
// 病人类型选项
|
||||||
|
const brlyOptions = ref<OptionItem[]>([])
|
||||||
|
// 审核状态选项
|
||||||
|
const jgbzOptions: OptionItem[] = [
|
||||||
|
{ label: '已审核', value: 2 },
|
||||||
|
{ label: '初报', value: 3 },
|
||||||
|
{ label: '二报', value: 4 },
|
||||||
|
]
|
||||||
|
|
||||||
|
// 打印状态选项
|
||||||
|
const dybzOptions: OptionItem[] = [
|
||||||
|
{ label: '未打印', value: 0 },
|
||||||
|
{ label: '已打印', value: 1 },
|
||||||
|
]
|
||||||
|
|
||||||
|
// 危急值选项
|
||||||
|
const alarmflagOptions: OptionItem[] = [
|
||||||
|
{ label: '危急值', value: 1 },
|
||||||
|
{ label: '无', value: 0 }
|
||||||
|
]
|
||||||
|
|
||||||
|
// 急诊选项
|
||||||
|
const emergencyOptions: OptionItem[] = [
|
||||||
|
{ label: '急诊', value: 1 },
|
||||||
|
{ label: '否', value: 0 }
|
||||||
|
]
|
||||||
|
|
||||||
|
// 完成状态选项
|
||||||
|
const finishOptions: OptionItem[] = [
|
||||||
|
{ label: '未完成', value: 0 },
|
||||||
|
{ label: '已完成', value: 1 },
|
||||||
|
]
|
||||||
|
|
||||||
|
// 自审状态选项
|
||||||
|
const autojgbzOptions: OptionItem[] = [
|
||||||
|
{ label: '否', value: 0 },
|
||||||
|
{ label: '自审', value: 1 },
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
// 创建选项映射关系,方便查找label
|
||||||
|
const optionMaps = {
|
||||||
|
brly: props.dictData.PT,
|
||||||
|
jgbz: jgbzOptions,
|
||||||
|
dybz: dybzOptions,
|
||||||
|
alarmflag: alarmflagOptions,
|
||||||
|
jzbz: emergencyOptions,
|
||||||
|
finish: finishOptions,
|
||||||
|
autojgbz: autojgbzOptions
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询参数
|
||||||
|
const queryParams = ref<QueryParams>({
|
||||||
|
...props.initialParams
|
||||||
|
})
|
||||||
|
|
||||||
|
// 由于更多按钮在 app 元素内,给 app 元素注册的点击事件必须在弹出框显示后并且是一次性的
|
||||||
|
// 防止更多按钮的事件与之冲突
|
||||||
|
const initClickOutside = () => {
|
||||||
|
document.getElementById('app')!.addEventListener('click', () => {
|
||||||
|
selectVisible.value = false
|
||||||
|
}, { once: true })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 记录上一次选中的值
|
||||||
|
const lastRadioValue = ref<string | undefined>(undefined);
|
||||||
|
const handleRadioChange = (value: string) => {
|
||||||
|
lastRadioValue.value = value;
|
||||||
|
};
|
||||||
|
const handleRadioClick = (value: string, zd: keyof QueryParams) => {
|
||||||
|
if (value === lastRadioValue.value) {
|
||||||
|
setTimeout(() => {
|
||||||
|
queryParams.value[zd] = undefined;
|
||||||
|
lastRadioValue.value = undefined;
|
||||||
|
}, 100);
|
||||||
|
} else {
|
||||||
|
lastRadioValue.value = value;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
const clearHandle = () => {
|
||||||
|
queryParams.value = {}
|
||||||
|
selectShowValue.value = ''
|
||||||
|
}
|
||||||
|
|
||||||
|
// 根据值和选项列表获取对应的label
|
||||||
|
const getLabelByValue = (value: string | number | undefined, options: OptionItem[]) => {
|
||||||
|
if (value === undefined || value === null || value === '') return ''
|
||||||
|
const item = options.find(option => option.value == value)
|
||||||
|
return item ? item.label : ''
|
||||||
|
}
|
||||||
|
|
||||||
|
// 处理查询
|
||||||
|
const handleQuery = () => {
|
||||||
|
// 过滤空值参数
|
||||||
|
const filteredParams = Object.fromEntries(
|
||||||
|
Object.entries(queryParams.value).filter(([_, v]) => v !== undefined && v !== null && v !== '')
|
||||||
|
) as QueryParams
|
||||||
|
|
||||||
|
// 收集所有选中项的label
|
||||||
|
const labels: string[] = []
|
||||||
|
Object.entries(filteredParams).forEach(([key, value]) => {
|
||||||
|
// @ts-ignore
|
||||||
|
const options = optionMaps[key]
|
||||||
|
if (options) {
|
||||||
|
const label = getLabelByValue(value, options)
|
||||||
|
if (label) labels.push(label)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
// 拼接label并设置到显示值
|
||||||
|
selectShowValue.value = labels.join(',')
|
||||||
|
console.log('selectShowValue.value==>', selectShowValue.value);
|
||||||
|
|
||||||
|
emit('query', filteredParams)
|
||||||
|
|
||||||
|
selectVisible.value = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 处理重置
|
||||||
|
const handleReset = () => {
|
||||||
|
selectShowValue.value = ''
|
||||||
|
queryParams.value = {}
|
||||||
|
selectVisible.value = false;
|
||||||
|
emit('reset')
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="scss">
|
||||||
|
.query-form {
|
||||||
|
|
||||||
|
:deep(.el-form-item) {
|
||||||
|
margin-bottom: .5rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 响应式调整 */
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
.query-form {
|
||||||
|
:deep(.el-form-item) {
|
||||||
|
margin-bottom: 12px;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@ -5,51 +5,40 @@
|
|||||||
<div class="box-shadow">
|
<div class="box-shadow">
|
||||||
<el-form :model="queryParams" ref="queryRef" :inline="true" :size="aotuSize" :rules="rules"
|
<el-form :model="queryParams" ref="queryRef" :inline="true" :size="aotuSize" :rules="rules"
|
||||||
class="compact-form">
|
class="compact-form">
|
||||||
<el-row :gutter="5">
|
|
||||||
<el-col :span="6">
|
|
||||||
<el-form-item label="" prop="ybh">
|
<el-form-item label="" prop="ybh">
|
||||||
<div class="next_box">
|
<div class="next_box">
|
||||||
|
<el-button-group>
|
||||||
|
<el-tooltip class="box-item" effect="dark" content="上一个" placement="top">
|
||||||
<el-button type="primary" class="jt_btn" :size="aotuSize" icon="ArrowUpBold"
|
<el-button type="primary" class="jt_btn" :size="aotuSize" icon="ArrowUpBold"
|
||||||
@click="handlePrev"></el-button>
|
@click="handlePrev"></el-button>
|
||||||
<el-input v-model="queryParams.ybh" placeholder="样本编号" @keyup.enter="handleQuery"
|
</el-tooltip>
|
||||||
style="width:100%" />
|
<el-tooltip class="box-item" effect="dark" content="下一个" placement="top">
|
||||||
<el-button type="primary" class="jt_btn" :size="aotuSize" icon="ArrowDownBold"
|
<el-button type="primary" class="jt_btn next_btn" :size="aotuSize" icon="ArrowDownBold"
|
||||||
@click="handleNext"></el-button>
|
@click="handleNext"></el-button>
|
||||||
|
</el-tooltip>
|
||||||
|
</el-button-group>
|
||||||
|
<el-input v-model="queryParams.ybh" placeholder="样本编号" @keyup.enter="handleQuery"
|
||||||
|
style="width:14.5rem" />
|
||||||
</div>
|
</div>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
|
||||||
<el-col :span="6">
|
|
||||||
<el-form-item label="日期:" prop="jyrq">
|
<el-form-item label="日期:" prop="jyrq">
|
||||||
<el-date-picker v-model="ybJyrq" type="date" label-width="1.25rem" placeholder="检验日期"
|
<el-date-picker v-model="ybJyrq" type="date" label-width="1.25rem" placeholder="检验日期"
|
||||||
value-format="YYYY-MM-DD" :clearable="false" @change="jyrqChange" ref="datePickerRef"
|
value-format="YYYY-MM-DD" :clearable="false" @change="jyrqChange" ref="datePickerRef"
|
||||||
style="width:100%" />
|
style="width:7.5rem" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
|
||||||
<el-col :span="6">
|
|
||||||
<el-form-item label="部门:" prop="instrGroup">
|
<el-form-item label="部门:" prop="instrGroup">
|
||||||
<SelectTable v-model:data="queryParams.instrGroup" :fields="instrGroupFields"
|
<SelectTable v-model:data="queryParams.instrGroup" :fields="instrGroupFields"
|
||||||
:tableData="instrGroupOptions" label="zdmc" value="zddh" objKey="zddh" :border="true" width="9rem"
|
:tableData="instrGroupOptions" label="zdmc" value="zddh" objKey="zddh" :border="true" width="9rem"
|
||||||
placeholder="请选择部门" @getDataValue="handleinstrGroupChange" :clearable="false" :size="aotuSize" />
|
placeholder="请选择部门" @getDataValue="handleinstrGroupChange" :clearable="false" :size="aotuSize" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
|
||||||
<el-col :span="6">
|
|
||||||
<el-form-item label="仪器:" prop="yq">
|
<el-form-item label="仪器:" prop="yq">
|
||||||
<SelectTable v-model:data="queryParams.yq" :fields="yqFields" :tableData="instrOptions" label="yqmc"
|
<SelectTable v-model:data="queryParams.yq" :fields="yqFields" :tableData="instrOptions" label="yqmc"
|
||||||
value="yq" objKey="yq" :border="true" width="9rem" placeholder="请选择仪器" :clearable="false"
|
value="yq" objKey="yq" :border="true" width="10rem" placeholder="请选择仪器" :clearable="false"
|
||||||
:size="aotuSize" @getDataValue="yqHandleChange" />
|
:size="aotuSize" @getDataValue="yqHandleChange" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
|
||||||
|
|
||||||
</el-row>
|
|
||||||
|
|
||||||
<!-- <el-form-item>
|
|
||||||
<el-icon color="#3c80d9" size="20" style="margin-right: 10px;" class="cp">
|
|
||||||
<Search @click="fetchlabPatList" />
|
|
||||||
</el-icon>
|
|
||||||
<el-icon color="#3c80d9" size="20" class="cp" @click="selectJob(labPat)">
|
|
||||||
<Refresh />
|
|
||||||
</el-icon>
|
|
||||||
</el-form-item> -->
|
|
||||||
</el-form>
|
</el-form>
|
||||||
<el-row :gutter="5">
|
<el-row :gutter="5">
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
@ -88,12 +77,20 @@
|
|||||||
<template v-if="activeTab == 'LabPatList'">
|
<template v-if="activeTab == 'LabPatList'">
|
||||||
<div class="flex-between">
|
<div class="flex-between">
|
||||||
<div>
|
<div>
|
||||||
|
<el-tooltip class="box-item" effect="dark" content="刷新" placement="top">
|
||||||
<el-button type="primary" :size="aotuSize" icon="RefreshRight" circle
|
<el-button type="primary" :size="aotuSize" icon="RefreshRight" circle
|
||||||
@click="fetchlabPatList"></el-button>
|
@click="fetchlabPatList"></el-button>
|
||||||
|
</el-tooltip>
|
||||||
|
<el-tooltip class="box-item" effect="dark" content="删除" placement="top">
|
||||||
<el-button type="danger" :size="aotuSize" icon="Delete" circle @click="delSampleHd"></el-button>
|
<el-button type="danger" :size="aotuSize" icon="Delete" circle @click="delSampleHd"></el-button>
|
||||||
|
</el-tooltip>
|
||||||
|
<el-tooltip class="box-item" effect="dark" content="上一个" placement="top">
|
||||||
<el-button class="btn_green" :size="aotuSize" icon="top" circle @click="handlePrev"></el-button>
|
<el-button class="btn_green" :size="aotuSize" icon="top" circle @click="handlePrev"></el-button>
|
||||||
|
</el-tooltip>
|
||||||
|
<el-tooltip class="box-item" effect="dark" content="下一个" placement="top">
|
||||||
<el-button class="btn_green mr5" :size="aotuSize" icon="bottom" circle
|
<el-button class="btn_green mr5" :size="aotuSize" icon="bottom" circle
|
||||||
@click="handleNext"></el-button>
|
@click="handleNext"></el-button>
|
||||||
|
</el-tooltip>
|
||||||
<PatientQueryForm :initial-params="initialParams" @query="handleQueryResult" @reset="handleReset"
|
<PatientQueryForm :initial-params="initialParams" @query="handleQueryResult" @reset="handleReset"
|
||||||
width="14rem" :size="aotuSize" placeholder="查询条件" :dict-data="dictData" :clearable="true" />
|
width="14rem" :size="aotuSize" placeholder="查询条件" :dict-data="dictData" :clearable="true" />
|
||||||
<el-input v-model="searchText" clearable :size="aotuSize" @keyup.enter="searchQuery" class="ml10"
|
<el-input v-model="searchText" clearable :size="aotuSize" @keyup.enter="searchQuery" class="ml10"
|
||||||
@ -122,12 +119,11 @@
|
|||||||
<LabPatList ref="labPatListRef" :labPatList="labPatList" :loading="loading" @select="selectJob"
|
<LabPatList ref="labPatListRef" :labPatList="labPatList" :loading="loading" @select="selectJob"
|
||||||
:tableKey="{ ...queryParams, jyrq: ybJyrq }" :dictData="dictData" @search="searchJobs" />
|
:tableKey="{ ...queryParams, jyrq: ybJyrq }" :dictData="dictData" @search="searchJobs" />
|
||||||
|
|
||||||
<div class="button-group">
|
<!-- <div class="button-group">
|
||||||
<el-pagination v-model:current-page="queryParams.pageNum" v-model:page-size="queryParams.pageSize"
|
<el-pagination v-model:current-page="queryParams.pageNum" v-model:page-size="queryParams.pageSize"
|
||||||
:page-sizes="[300, 600, 1000]" :size="aotuSize" background
|
:page-sizes="[300, 600, 1000]" :size="aotuSize" background layout="total, sizes, prev, pager, next"
|
||||||
layout="total, sizes, prev, pager, next, jumper" :total="total" @size-change="handleSizeChange"
|
:total="total" @size-change="handleSizeChange" @current-change="handleCurrentChange" />
|
||||||
@current-change="handleCurrentChange" />
|
</div> -->
|
||||||
</div>
|
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<!-- tab栏 内容 -->
|
<!-- tab栏 内容 -->
|
||||||
@ -177,14 +173,14 @@ import Record from './labresult/record.vue';
|
|||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
import { comDict } from '@/utils/dict'
|
import { comDict } from '@/utils/dict'
|
||||||
import { queryLabResults, loadDefault, instrdconfig, delSample, getGroupInstrdList, checkuser, updateLabPat } from "@/api/liswork/work/LisWork";
|
import { queryLabResults, loadDefault, instrdconfig, delSample, getGroupInstrdList, checkuser, updateLabPat } from "@/api/liswork/work/LisWork";
|
||||||
import { wswsamplelistpage, sampleMedInfo, changepatjyrq, wswsampleinfo } from "@/api/liswork/micro/index";
|
import { wswsampleList, sampleMedInfo, changepatjyrq, wswsampleinfo } from "@/api/liswork/micro/index";
|
||||||
import { getComDicts, queryComDictListService } from "@/api/liswork/dict/ComDict";
|
import { getComDicts, queryComDictListService } from "@/api/liswork/dict/ComDict";
|
||||||
import { ElMessage, ElMessageBox } from "element-plus";
|
import { ElMessage, ElMessageBox } from "element-plus";
|
||||||
import BatchCode from '../work/components/batchCode.vue';
|
import BatchCode from '../work/components/batchCode.vue';
|
||||||
import { getNextNumber, getPreviousNumber } from "@/utils/getNextNumber";
|
import { getNextNumber, getPreviousNumber } from "@/utils/getNextNumber";
|
||||||
import { useCommonStore } from '@/store/modules/commonStore';
|
import { useCommonStore } from '@/store/modules/commonStore';
|
||||||
import { classCom } from '@/utils/classCom';
|
import { classCom } from '@/utils/classCom';
|
||||||
import PatientQueryForm from '@/components/selectSearch/index.vue'
|
import PatientQueryForm from './components/searchListFrom.vue'
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
import { listUser } from '@/api/system/user.js'
|
import { listUser } from '@/api/system/user.js'
|
||||||
import dayjs from 'dayjs'
|
import dayjs from 'dayjs'
|
||||||
@ -200,9 +196,9 @@ const queryParams = ref({
|
|||||||
instrGroup: '04',
|
instrGroup: '04',
|
||||||
problemId: 0,
|
problemId: 0,
|
||||||
days: -1,
|
days: -1,
|
||||||
pageSize: 600,
|
yhdh: '',
|
||||||
pageNum: 1,
|
// pageSize: 600,
|
||||||
yhdh: ''
|
// pageNum: 1,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
@ -215,10 +211,10 @@ const wjs = ref(0)
|
|||||||
const activeTab = ref('LabPatList')
|
const activeTab = ref('LabPatList')
|
||||||
const tabList = ref([
|
const tabList = ref([
|
||||||
{ label: '标本列表', value: 'LabPatList' },
|
{ label: '标本列表', value: 'LabPatList' },
|
||||||
{ label: '结果图形', value: 'ResultGraph' },
|
// { label: '结果图形', value: 'ResultGraph' },
|
||||||
{ label: '历史对照', value: 'History' },
|
{ label: '历史对照', value: 'History' },
|
||||||
{ label: '其他结果', value: 'OthersResult' },
|
{ label: '其他结果', value: 'OthersResult' },
|
||||||
{ label: '结果复查', value: 'Reexamination' },
|
// { label: '结果复查', value: 'Reexamination' },
|
||||||
{ label: '收费信息', value: 'Charge' },
|
{ label: '收费信息', value: 'Charge' },
|
||||||
{ label: '组合项目', value: 'Combination' },
|
{ label: '组合项目', value: 'Combination' },
|
||||||
{ label: '临床意义', value: 'Clinical' },
|
{ label: '临床意义', value: 'Clinical' },
|
||||||
@ -268,6 +264,13 @@ const ybJyrq = ref('')
|
|||||||
watch(() => labPat.value, (newValue) => {
|
watch(() => labPat.value, (newValue) => {
|
||||||
queryParams.value.ybh = newValue.ybh;
|
queryParams.value.ybh = newValue.ybh;
|
||||||
ybJyrq.value = newValue.jyrq;
|
ybJyrq.value = newValue.jyrq;
|
||||||
|
if (newValue.jgbz == '2') {
|
||||||
|
activeName.value = 'first'
|
||||||
|
}
|
||||||
|
|
||||||
|
if (newValue.jgbz == '0' || newValue.jgbz == '3' || newValue.jgbz == '4') {
|
||||||
|
activeName.value = 'second'
|
||||||
|
}
|
||||||
}, { deep: true });
|
}, { deep: true });
|
||||||
|
|
||||||
const checkUserRef = ref()
|
const checkUserRef = ref()
|
||||||
@ -336,9 +339,8 @@ const searchQuery = () => {
|
|||||||
const searchStr = searchText.value.trim().toLowerCase();
|
const searchStr = searchText.value.trim().toLowerCase();
|
||||||
filterMhList = filterMhList.filter((item: any) => {
|
filterMhList = filterMhList.filter((item: any) => {
|
||||||
// 处理 zjf大写转为小写
|
// 处理 zjf大写转为小写
|
||||||
const matchZjf = item.zjf && typeof item.zjf === 'string'
|
const matchZjf = item.zjf && typeof item.zjf === 'string' ? item.zjf.toLowerCase().includes(searchStr) : false;
|
||||||
? item.zjf.toLowerCase().includes(searchStr)
|
const matchBrxm = item.brxm && typeof item.brxm === 'string' && item.brxm.includes(searchStr);
|
||||||
: false; const matchBrxm = item.brxm && typeof item.brxm === 'string' && item.brxm.includes(searchStr);
|
|
||||||
const matchSqh = item.sqh && typeof item.sqh === 'string' && item.sqh.includes(searchStr);
|
const matchSqh = item.sqh && typeof item.sqh === 'string' && item.sqh.includes(searchStr);
|
||||||
return matchZjf || matchBrxm || matchSqh;
|
return matchZjf || matchBrxm || matchSqh;
|
||||||
});
|
});
|
||||||
@ -699,28 +701,31 @@ const searchJobs = async (text: string, page: number, size: number) => {
|
|||||||
fetchlabPatList()
|
fetchlabPatList()
|
||||||
}
|
}
|
||||||
|
|
||||||
const handleSizeChange = (size: number) => {
|
// const handleSizeChange = (size: number) => {
|
||||||
queryParams.value.pageSize = size
|
// queryParams.value.pageSize = size
|
||||||
fetchlabPatList()
|
// fetchlabPatList()
|
||||||
}
|
// }
|
||||||
const handleCurrentChange = (page: number) => {
|
// const handleCurrentChange = (page: number) => {
|
||||||
queryParams.value.pageNum = page
|
// queryParams.value.pageNum = page
|
||||||
fetchlabPatList()
|
// fetchlabPatList()
|
||||||
}
|
// }
|
||||||
|
|
||||||
//载入样本列表(右边labpatlist.vue组件)
|
//载入样本列表(右边labpatlist.vue组件)
|
||||||
const fetchlabPatList = () => {
|
const fetchlabPatList = () => {
|
||||||
loading.value = true;
|
loading.value = true;
|
||||||
wswsamplelistpage(queryParams.value).then((res: any) => {
|
wswsampleList(queryParams.value).then((res: any) => {
|
||||||
if (res.code == 200) {
|
if (res.code == 0) {
|
||||||
labPatList.value = res.rows;
|
labPatList.value = res.data;
|
||||||
originalLabPatList.value = res.rows;
|
|
||||||
total.value = res.total;
|
|
||||||
loading.value = false;
|
loading.value = false;
|
||||||
if (res.rows.length > 0) {
|
originalLabPatList.value = res.data;
|
||||||
|
if (res.data.length > 0) {
|
||||||
highlightRowIndex.value = 0;
|
highlightRowIndex.value = 0;
|
||||||
setTimeout(() => { labPatListRef.value.setCurrentRow(res.rows[0]) }, 10)
|
setTimeout(() => { labPatListRef.value.setCurrentRow(res.data[0]) }, 10)
|
||||||
selectJob(res.rows[0])
|
selectJob(res.data[0])
|
||||||
|
} else {
|
||||||
|
labInfo.value = {}
|
||||||
|
labPat.value = {}
|
||||||
|
zbLabResuts.value = []
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@ -858,7 +863,6 @@ const sendMessage = () => {
|
|||||||
border-radius: .75rem;
|
border-radius: .75rem;
|
||||||
padding: .5rem;
|
padding: .5rem;
|
||||||
background-color: #fff;
|
background-color: #fff;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.radio_box {
|
.radio_box {
|
||||||
@ -878,9 +882,19 @@ const sendMessage = () => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.compact-form {
|
.compact-form {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
border-bottom: 1px solid #E1E9F7;
|
border-bottom: 1px solid #E1E9F7;
|
||||||
margin-bottom: 0.5rem;
|
margin-bottom: 0.5rem;
|
||||||
|
|
||||||
|
:deep(.el-form-item__label) {
|
||||||
|
padding: 0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
:deep(.el-form-item) {
|
||||||
|
margin-right: 0;
|
||||||
|
}
|
||||||
|
|
||||||
.el-form-item--default {
|
.el-form-item--default {
|
||||||
margin-bottom: .3125rem !important;
|
margin-bottom: .3125rem !important;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -5,7 +5,7 @@
|
|||||||
@keyup.enter="handleInputFocus" />
|
@keyup.enter="handleInputFocus" />
|
||||||
<el-button type="primary" :size="aotuSize" @click="batchHandle">扫码</el-button>
|
<el-button type="primary" :size="aotuSize" @click="batchHandle">扫码</el-button>
|
||||||
</div>
|
</div>
|
||||||
<el-form :model="labPat" label-width="5rem" class="compact-form" label-position="right">
|
<el-form :model="labPat" label-width="4.5rem" class="compact-form" label-position="right">
|
||||||
<div :class="['sh_box', getColor(lastJgbz)]" v-if="lastJgbz != null && lastJgbz != 0 && lastJgbz != 'C'">
|
<div :class="['sh_box', getColor(lastJgbz)]" v-if="lastJgbz != null && lastJgbz != 0 && lastJgbz != 'C'">
|
||||||
<div class="text">{{ getLableType(lastJgbz) }}</div>
|
<div class="text">{{ getLableType(lastJgbz) }}</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -3,7 +3,8 @@
|
|||||||
<ContextMenu :items="contextMenuItems" @select="handleMenuSelect" menu-width="200">
|
<ContextMenu :items="contextMenuItems" @select="handleMenuSelect" menu-width="200">
|
||||||
<CommonTable :table-data="labPatList" :loading="loading" :columns="tableColumns"
|
<CommonTable :table-data="labPatList" :loading="loading" :columns="tableColumns"
|
||||||
:row-config="{ isHover: true, keyField: 'ybh' }" @current-change="handleRowClick" size="small"
|
:row-config="{ isHover: true, keyField: 'ybh' }" @current-change="handleRowClick" size="small"
|
||||||
:row-style="rowStyle" :cell-style="cellStyle" class="mytable-style" ref="tableRef" :enable-column-drag="true"
|
:scrollYConfig="{ enabled: true, rSize: 30, height: '100%', }" :row-style="rowStyle"
|
||||||
|
:cell-style="cellStyle" class="mytable-style" ref="tableRef" :enable-column-drag="true"
|
||||||
@column-drag-end="handleColumnDragEnd">
|
@column-drag-end="handleColumnDragEnd">
|
||||||
<!-- 完成状态列 -->
|
<!-- 完成状态列 -->
|
||||||
<template #finish="{ row }">
|
<template #finish="{ row }">
|
||||||
@ -40,10 +41,6 @@
|
|||||||
{{ formatDict(row.yhdh, 'SRD') }}
|
{{ formatDict(row.yhdh, 'SRD') }}
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<template #autojgbz="{ row }">
|
|
||||||
<el-checkbox :model-value="row.autojgbz === '1'" readonly />
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<template #dybz="{ row }">
|
<template #dybz="{ row }">
|
||||||
<el-checkbox :model-value="row.dybz === '1'" readonly />
|
<el-checkbox :model-value="row.dybz === '1'" readonly />
|
||||||
</template>
|
</template>
|
||||||
@ -255,7 +252,7 @@ defineExpose({
|
|||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
.table-container {
|
.table-container {
|
||||||
height: 72vh;
|
height: 75vh;
|
||||||
|
|
||||||
.form-box {
|
.form-box {
|
||||||
font-family: SourceHanSansCN, SourceHanSansCN;
|
font-family: SourceHanSansCN, SourceHanSansCN;
|
||||||
|
|||||||
@ -202,21 +202,28 @@ const erInfo = ref<any>({})
|
|||||||
|
|
||||||
const mbStore = useCommonStore();
|
const mbStore = useCommonStore();
|
||||||
watch(labPat, (newVal: any) => {
|
watch(labPat, (newVal: any) => {
|
||||||
|
if (newVal.ybh) {
|
||||||
//获取结果列表
|
//获取结果列表
|
||||||
getResultList()
|
getResultList()
|
||||||
// 获取病人信息
|
// 获取病人信息
|
||||||
getLabPatInfo()
|
getLabPatInfo()
|
||||||
|
} else {
|
||||||
|
tableData.value = []
|
||||||
|
tableData2.value = []
|
||||||
|
cbInfo.value = {}
|
||||||
|
erInfo.value = {}
|
||||||
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
watch(() => tableData, (newValue) => {
|
watch(() => tableData, (newValue) => {
|
||||||
// 模板数据
|
// 模板数据
|
||||||
if (labPat.value.jgbz != null && labPat.value.jgbz != 0 && labPat.value.jgbz != 'C') return;
|
if (cbInfo.value?.jgbz == 2 || erInfo.value?.jgbz == 2 || labPat.value.jgbz == 2) return;
|
||||||
mbList(1)
|
mbList(1)
|
||||||
})
|
})
|
||||||
|
|
||||||
watch(() => tableData2, (newValue) => {
|
watch(() => tableData2, (newValue) => {
|
||||||
// 模板数据
|
// 模板数据
|
||||||
if (labPat.value.jgbz != null && labPat.value.jgbz != 0 && labPat.value.jgbz != 'C') return;
|
if (erInfo.value?.jgbz == 2 || labPat.value.jgbz == 2) return;
|
||||||
mbList(2)
|
mbList(2)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
@ -189,6 +189,9 @@ const getbyjList = () => {
|
|||||||
watch(() => props.labPat, (newValue) => {
|
watch(() => props.labPat, (newValue) => {
|
||||||
if (newValue.jyrq && newValue.ybh && newValue.yq) {
|
if (newValue.jyrq && newValue.ybh && newValue.yq) {
|
||||||
getbyjList()
|
getbyjList()
|
||||||
|
} else {
|
||||||
|
tableData.value = []
|
||||||
|
selectedRows.value = []
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
@ -53,6 +53,8 @@ const getRecordList = () => {
|
|||||||
watch(() => props.labPat, (newValue) => {
|
watch(() => props.labPat, (newValue) => {
|
||||||
if (newValue.jyrq && newValue.ybh && newValue.yq) {
|
if (newValue.jyrq && newValue.ybh && newValue.yq) {
|
||||||
getRecordList()
|
getRecordList()
|
||||||
|
} else {
|
||||||
|
tableData.value = []
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
@ -670,8 +670,6 @@ const mbStore = useCommonStore();
|
|||||||
const tableData: any = ref([])
|
const tableData: any = ref([])
|
||||||
|
|
||||||
watch(labResutsData, (newVal: any) => {
|
watch(labResutsData, (newVal: any) => {
|
||||||
console.log("🚀 ~ newVal:", newVal)
|
|
||||||
|
|
||||||
if (newVal.length) {
|
if (newVal.length) {
|
||||||
tableData.value = newVal.map((item: any) => {
|
tableData.value = newVal.map((item: any) => {
|
||||||
return {
|
return {
|
||||||
@ -724,7 +722,6 @@ const handleTextarea = () => {
|
|||||||
};
|
};
|
||||||
const rowInfo: any = ref({})
|
const rowInfo: any = ref({})
|
||||||
const rowHandle = (row: any) => {
|
const rowHandle = (row: any) => {
|
||||||
console.log('row==>', row);
|
|
||||||
selectedRows.value = [row];
|
selectedRows.value = [row];
|
||||||
emitter.emitWithCache('refreshClinical', row);
|
emitter.emitWithCache('refreshClinical', row);
|
||||||
rowInfo.value = row
|
rowInfo.value = row
|
||||||
|
|||||||
@ -5,51 +5,41 @@
|
|||||||
<div class="box-shadow">
|
<div class="box-shadow">
|
||||||
<el-form :model="queryParams" ref="queryRef" :inline="true" :size="aotuSize" :rules="rules"
|
<el-form :model="queryParams" ref="queryRef" :inline="true" :size="aotuSize" :rules="rules"
|
||||||
class="compact-form">
|
class="compact-form">
|
||||||
<el-row :gutter="5">
|
|
||||||
<el-col :span="6">
|
|
||||||
<el-form-item label="" prop="ybh">
|
<el-form-item label="" prop="ybh">
|
||||||
<div class="next_box">
|
<div class="next_box">
|
||||||
|
<el-button-group>
|
||||||
|
<el-tooltip class="box-item" effect="dark" content="上一个" placement="top">
|
||||||
<el-button type="primary" class="jt_btn" :size="aotuSize" icon="ArrowUpBold"
|
<el-button type="primary" class="jt_btn" :size="aotuSize" icon="ArrowUpBold"
|
||||||
@click="handlePrev"></el-button>
|
@click="handlePrev"></el-button>
|
||||||
<el-input v-model="queryParams.ybh" placeholder="样本编号" @keyup.enter="handleQuery"
|
</el-tooltip>
|
||||||
style="width:100%" />
|
<el-tooltip class="box-item" effect="dark" content="下一个" placement="top">
|
||||||
<el-button type="primary" class="jt_btn" :size="aotuSize" icon="ArrowDownBold"
|
<el-button type="primary" class="jt_btn next_btn" :size="aotuSize" icon="ArrowDownBold"
|
||||||
@click="handleNext"></el-button>
|
@click="handleNext"></el-button>
|
||||||
|
</el-tooltip>
|
||||||
|
</el-button-group>
|
||||||
|
<el-input v-model="queryParams.ybh" placeholder="样本编号" @keyup.enter="handleQuery"
|
||||||
|
style="width:14.5rem" />
|
||||||
</div>
|
</div>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
|
||||||
<el-col :span="6">
|
|
||||||
<el-form-item label="日期:" prop="jyrq">
|
<el-form-item label="日期:" prop="jyrq">
|
||||||
<el-date-picker v-model="queryParams.jyrq" type="date" label-width="1.25rem" placeholder="检验日期"
|
<el-date-picker v-model="queryParams.jyrq" type="date" label-width="1.25rem" placeholder="检验日期"
|
||||||
value-format="YYYY-MM-DD" :clearable="false" @change="fetchlabPatList"
|
value-format="YYYY-MM-DD" :clearable="false" @change="fetchlabPatList"
|
||||||
style="width:100%"></el-date-picker>
|
style="width:7.5rem"></el-date-picker>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
|
||||||
<el-col :span="6">
|
|
||||||
<el-form-item label="部门:" prop="instrGroup">
|
<el-form-item label="部门:" prop="instrGroup">
|
||||||
<SelectTable v-model:data="queryParams.instrGroup" :fields="instrGroupFields"
|
<SelectTable v-model:data="queryParams.instrGroup" :fields="instrGroupFields"
|
||||||
:tableData="instrGroupOptions" label="zdmc" value="zddh" objKey="zddh" :border="true" width="9rem"
|
:tableData="instrGroupOptions" label="zdmc" value="zddh" objKey="zddh" :border="true" width="9rem"
|
||||||
placeholder="请选择部门" @getDataValue="handleinstrGroupChange" :clearable="false" :size="aotuSize" />
|
placeholder="请选择部门" @getDataValue="handleinstrGroupChange" :clearable="false" :size="aotuSize" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
|
||||||
<el-col :span="6">
|
|
||||||
<el-form-item label="仪器:" prop="yq">
|
<el-form-item label="仪器:" prop="yq">
|
||||||
<SelectTable v-model:data="queryParams.yq" :fields="yqFields" :tableData="instrOptions" label="yqmc"
|
<SelectTable v-model:data="queryParams.yq" :fields="yqFields" :tableData="instrOptions" label="yqmc"
|
||||||
value="yq" objKey="yq" :border="true" width="9rem" placeholder="请选择仪器" :clearable="false"
|
value="yq" objKey="yq" :border="true" width="10rem" placeholder="请选择仪器" :clearable="false"
|
||||||
:size="aotuSize" @getDataValue="yqHandleChange" />
|
:size="aotuSize" @getDataValue="yqHandleChange" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
|
||||||
|
|
||||||
</el-row>
|
|
||||||
|
|
||||||
<!-- <el-form-item>
|
|
||||||
<el-icon color="#3c80d9" size="20" style="margin-right: 10px;" class="cp">
|
|
||||||
<Search @click="fetchlabPatList" />
|
|
||||||
</el-icon>
|
|
||||||
<el-icon color="#3c80d9" size="20" class="cp" @click="selectJob(labPat)">
|
|
||||||
<Refresh />
|
|
||||||
</el-icon>
|
|
||||||
</el-form-item> -->
|
|
||||||
</el-form>
|
</el-form>
|
||||||
<el-row :gutter="5">
|
<el-row :gutter="5">
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
@ -73,12 +63,20 @@
|
|||||||
<template v-if="activeTab == 'LabPatList'">
|
<template v-if="activeTab == 'LabPatList'">
|
||||||
<div class="flex-between">
|
<div class="flex-between">
|
||||||
<div>
|
<div>
|
||||||
|
<el-tooltip class="box-item" effect="dark" content="刷新" placement="top">
|
||||||
<el-button type="primary" :size="aotuSize" icon="RefreshRight" circle
|
<el-button type="primary" :size="aotuSize" icon="RefreshRight" circle
|
||||||
@click="fetchlabPatList"></el-button>
|
@click="fetchlabPatList"></el-button>
|
||||||
|
</el-tooltip>
|
||||||
|
<el-tooltip class="box-item" effect="dark" content="删除" placement="top">
|
||||||
<el-button type="danger" :size="aotuSize" icon="Delete" circle @click="delSampleHd"></el-button>
|
<el-button type="danger" :size="aotuSize" icon="Delete" circle @click="delSampleHd"></el-button>
|
||||||
|
</el-tooltip>
|
||||||
|
<el-tooltip class="box-item" effect="dark" content="上一个" placement="top">
|
||||||
<el-button class="btn_green" :size="aotuSize" icon="top" circle @click="handlePrev"></el-button>
|
<el-button class="btn_green" :size="aotuSize" icon="top" circle @click="handlePrev"></el-button>
|
||||||
|
</el-tooltip>
|
||||||
|
<el-tooltip class="box-item" effect="dark" content="下一个" placement="top">
|
||||||
<el-button class="btn_green mr5" :size="aotuSize" icon="bottom" circle
|
<el-button class="btn_green mr5" :size="aotuSize" icon="bottom" circle
|
||||||
@click="handleNext"></el-button>
|
@click="handleNext"></el-button>
|
||||||
|
</el-tooltip>
|
||||||
<PatientQueryForm :initial-params="initialParams" @query="handleQueryResult" @reset="handleReset"
|
<PatientQueryForm :initial-params="initialParams" @query="handleQueryResult" @reset="handleReset"
|
||||||
width="14rem" :size="aotuSize" placeholder="查询条件" :dict-data="dictData" :clearable="true" />
|
width="14rem" :size="aotuSize" placeholder="查询条件" :dict-data="dictData" :clearable="true" />
|
||||||
<el-input v-model="searchText" clearable :size="aotuSize" @keyup.enter="searchQuery" class="ml10"
|
<el-input v-model="searchText" clearable :size="aotuSize" @keyup.enter="searchQuery" class="ml10"
|
||||||
@ -228,9 +226,8 @@ const searchQuery = () => {
|
|||||||
const searchStr = searchText.value.trim().toLowerCase();
|
const searchStr = searchText.value.trim().toLowerCase();
|
||||||
filterMhList = filterMhList.filter((item: any) => {
|
filterMhList = filterMhList.filter((item: any) => {
|
||||||
// 处理 zjf大写转为小写
|
// 处理 zjf大写转为小写
|
||||||
const matchZjf = item.zjf && typeof item.zjf === 'string'
|
const matchZjf = item.zjf && typeof item.zjf === 'string' ? item.zjf.toLowerCase().includes(searchStr) : false;
|
||||||
? item.zjf.toLowerCase().includes(searchStr)
|
const matchBrxm = item.brxm && typeof item.brxm === 'string' && item.brxm.includes(searchStr);
|
||||||
: false; const matchBrxm = item.brxm && typeof item.brxm === 'string' && item.brxm.includes(searchStr);
|
|
||||||
const matchSqh = item.sqh && typeof item.sqh === 'string' && item.sqh.includes(searchStr);
|
const matchSqh = item.sqh && typeof item.sqh === 'string' && item.sqh.includes(searchStr);
|
||||||
return matchZjf || matchBrxm || matchSqh;
|
return matchZjf || matchBrxm || matchSqh;
|
||||||
});
|
});
|
||||||
@ -734,9 +731,19 @@ const sendMessage = () => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.compact-form {
|
.compact-form {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
border-bottom: 1px solid #E1E9F7;
|
border-bottom: 1px solid #E1E9F7;
|
||||||
margin-bottom: 0.5rem;
|
margin-bottom: 0.5rem;
|
||||||
|
|
||||||
|
:deep(.el-form-item__label) {
|
||||||
|
padding: 0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
:deep(.el-form-item) {
|
||||||
|
margin-right: 0;
|
||||||
|
}
|
||||||
|
|
||||||
.el-form-item--default {
|
.el-form-item--default {
|
||||||
margin-bottom: .3125rem !important;
|
margin-bottom: .3125rem !important;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -5,7 +5,7 @@
|
|||||||
@keyup.enter="handleInputFocus" />
|
@keyup.enter="handleInputFocus" />
|
||||||
<el-button type="primary" :size="aotuSize" @click="batchHandle">扫码</el-button>
|
<el-button type="primary" :size="aotuSize" @click="batchHandle">扫码</el-button>
|
||||||
</div>
|
</div>
|
||||||
<el-form :model="labPat" label-width="5rem" class="compact-form" label-position="right">
|
<el-form :model="labPat" label-width="4.5rem" class="compact-form" label-position="right">
|
||||||
<div :class="['sh_box', getColor(lastJgbz)]" v-if="lastJgbz != null && lastJgbz != 0 && lastJgbz != 'C'">
|
<div :class="['sh_box', getColor(lastJgbz)]" v-if="lastJgbz != null && lastJgbz != 0 && lastJgbz != 'C'">
|
||||||
<div class="text">{{ getLableType(lastJgbz) }}</div>
|
<div class="text">{{ getLableType(lastJgbz) }}</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -3,8 +3,8 @@
|
|||||||
<ContextMenu :items="contextMenuItems" @select="handleMenuSelect" menu-width="200">
|
<ContextMenu :items="contextMenuItems" @select="handleMenuSelect" menu-width="200">
|
||||||
<CommonTable :table-data="labPatList" :loading="loading" :columns="tableColumns" :dict-data="dictData"
|
<CommonTable :table-data="labPatList" :loading="loading" :columns="tableColumns" :dict-data="dictData"
|
||||||
:row-config="{ isHover: true, keyField: 'ybh' }" @current-change="handleRowClick" size="small"
|
:row-config="{ isHover: true, keyField: 'ybh' }" @current-change="handleRowClick" size="small"
|
||||||
:row-style="rowStyle" :cell-style="cellStyle" class="mytable-style" ref="tableRef" :enable-column-drag="true"
|
:scrollYConfig="{ enabled: true, rSize: 30, height: '100%', }" :row-style="rowStyle" :cell-style="cellStyle"
|
||||||
@column-drag-end="handleColumnDragEnd">
|
class="mytable-style" ref="tableRef" :enable-column-drag="true" @column-drag-end="handleColumnDragEnd">
|
||||||
<!-- 完成状态列 -->
|
<!-- 完成状态列 -->
|
||||||
<template #finish="{ row }">
|
<template #finish="{ row }">
|
||||||
<svg-icon v-if="row.finish == 1" icon-class="lvgou" />
|
<svg-icon v-if="row.finish == 1" icon-class="lvgou" />
|
||||||
|
|||||||
@ -9,11 +9,10 @@
|
|||||||
@click="openItemDictDialog">新增</el-button>
|
@click="openItemDictDialog">新增</el-button>
|
||||||
<el-button type="danger" :size="aotuSize" :disabled="labPat.jgbz != null && labPat.jgbz != 0" plain
|
<el-button type="danger" :size="aotuSize" :disabled="labPat.jgbz != null && labPat.jgbz != 0" plain
|
||||||
@click="handleBatchDelete">删除</el-button>
|
@click="handleBatchDelete">删除</el-button>
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<el-button type="primary" plain icon="Files" :size="aotuSize" @click="previewHandle(1)">打印</el-button>
|
<el-button type="primary" plain icon="Files" :size="aotuSize" @click="previewHandle(1)">打印</el-button>
|
||||||
<el-button type="primary" plain icon="View" :size="aotuSize" @click="previewHandle(2)">预览</el-button>
|
<el-button type="primary" plain icon="View" :size="aotuSize" @click="previewHandle(2)">预览</el-button>
|
||||||
</div>
|
</div>
|
||||||
|
<div> </div>
|
||||||
</div>
|
</div>
|
||||||
<ContextMenu :items="contextMenuItems" @select="handleMenuSelect">
|
<ContextMenu :items="contextMenuItems" @select="handleMenuSelect">
|
||||||
<CustomTable ref="tableRef" :data="tableData" :columns="columns" :config="tableConfig" :enable-column-drag="true"
|
<CustomTable ref="tableRef" :data="tableData" :columns="columns" :config="tableConfig" :enable-column-drag="true"
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user