页面布局、数据筛选
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'
|
||||
const mbStore = useCommonStore();
|
||||
// 使用自定义hook获取指纹信息
|
||||
const {
|
||||
fingerprint,
|
||||
loading,
|
||||
error,
|
||||
getFingerprint
|
||||
} = useFingerprint();
|
||||
const { fingerprint, getFingerprint } = useFingerprint();
|
||||
|
||||
if (!mbStore.fingerprint) {
|
||||
// 重新获取指纹
|
||||
getFingerprint();
|
||||
mbStore.setFingerprint(fingerprint)
|
||||
}
|
||||
|
||||
onMounted(() => {
|
||||
nextTick(() => {
|
||||
// 初始化主题样式
|
||||
handleThemeStyle(useSettingsStore().theme)
|
||||
})
|
||||
|
||||
if (!mbStore.fingerprint) {
|
||||
// 重新获取指纹
|
||||
getFingerprint();
|
||||
mbStore.setFingerprint(fingerprint)
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
|
||||
@ -124,6 +124,7 @@ aside {
|
||||
//main-container全局样式
|
||||
.app-container {
|
||||
padding: 10px 10px 0 10px;
|
||||
min-height: calc(100vh - 84px);
|
||||
}
|
||||
|
||||
.components-container {
|
||||
@ -303,4 +304,8 @@ aside {
|
||||
color: #fff;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.next_btn {
|
||||
margin-right: 0.2rem;
|
||||
}
|
||||
}
|
||||
@ -13,10 +13,10 @@
|
||||
|
||||
<template>
|
||||
<div class="common-table-container">
|
||||
<vxe-table :data="tableData" :loading="loading" border height="auto" :checkbox-config="config.checkboxConfig"
|
||||
@checkbox-change="handleCheckboxChange" :row-config="rowConfig" :show-overflow="showOverflow"
|
||||
@current-change="handleRowClick" ref="tableRef" :size="size" :current-row="currentRow"
|
||||
:highlight-current-row="highlightCurrentRow" :scroll-y="scrollYConfig"
|
||||
<vxe-table :data="tableData" :loading="loading" border :checkbox-config="config.checkboxConfig"
|
||||
:height="scrollYConfig.height" @checkbox-change="handleCheckboxChange" :row-config="rowConfig"
|
||||
:show-overflow="showOverflow" @current-change="handleRowClick" ref="tableRef" :size="size"
|
||||
:current-row="currentRow" :highlight-current-row="highlightCurrentRow" :scroll-y="scrollYConfig"
|
||||
:header-cell-class-name="enableColumnDrag ? 'el-table-header-cell' : ''" v-bind="$attrs">
|
||||
<!-- 动态渲染列 -->
|
||||
<template v-for="(column, i) in columns" :key="`${column.field}-${i}`">
|
||||
@ -88,7 +88,11 @@ const props = defineProps({
|
||||
// 纵向滚动配置
|
||||
scrollYConfig: {
|
||||
type: Object,
|
||||
default: () => ({ enabled: true, rSize: 30, adaptive: true })
|
||||
default: () => ({
|
||||
enabled: true, // 强制启用虚拟滚动
|
||||
rSize: 30, // 行高(需与实际行高一致)
|
||||
height: 600, // 固定表格高度(关键,单位px)
|
||||
})
|
||||
},
|
||||
// 表格尺寸
|
||||
size: {
|
||||
|
||||
@ -3,7 +3,7 @@
|
||||
<router-view v-slot="{ Component, route }">
|
||||
<transition name="fade-transform" mode="out-in">
|
||||
<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>
|
||||
</transition>
|
||||
</router-view>
|
||||
@ -21,24 +21,24 @@ const tagsViewStore = useTagsViewStore()
|
||||
<style lang="scss" scoped>
|
||||
.app-main {
|
||||
/* 50= navbar 50 */
|
||||
min-height: calc(100vh - 50px);
|
||||
min-height: calc(100vh - 3.125rem);
|
||||
width: 100%;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.fixed-header + .app-main {
|
||||
padding-top: 50px;
|
||||
.fixed-header+.app-main {
|
||||
padding-top: 3.125rem;
|
||||
}
|
||||
|
||||
.hasTagsView {
|
||||
.app-main {
|
||||
/* 84 = navbar + tags-view = 50 + 34 */
|
||||
min-height: calc(100vh - 84px);
|
||||
min-height: calc(100vh - 5.25rem);
|
||||
}
|
||||
|
||||
.fixed-header + .app-main {
|
||||
padding-top: 84px;
|
||||
.fixed-header+.app-main {
|
||||
padding-top: 5.25rem;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@ -65,4 +65,3 @@ const tagsViewStore = useTagsViewStore()
|
||||
border-radius: 3px;
|
||||
}
|
||||
</style>
|
||||
|
||||
|
||||
@ -1,12 +1,8 @@
|
||||
<template>
|
||||
<div class="navbar">
|
||||
<!-- 侧边栏折叠按钮(保留原有功能) -->
|
||||
<hamburger
|
||||
id="hamburger-container"
|
||||
:is-active="appStore.sidebar.opened"
|
||||
class="hamburger-container"
|
||||
@toggleClick="toggleSideBar"
|
||||
/>
|
||||
<hamburger id="hamburger-container" :is-active="appStore.sidebar.opened" class="hamburger-container"
|
||||
@toggleClick="toggleSideBar" />
|
||||
|
||||
<!-- 核心改造:替换面包屑/顶部导航,改为产品名称 + 登录信息布局 -->
|
||||
<div class="custom-header-content">
|
||||
@ -25,7 +21,7 @@
|
||||
<size-select id="size-select" class="right-menu-item hover-effect" />
|
||||
</el-tooltip>
|
||||
</template>
|
||||
-->
|
||||
-->
|
||||
<!-- 登录人信息(姓名 + 角色) -->
|
||||
<div class="user-info" v-if="userStore.nickName">
|
||||
欢迎,{{ userStore.nickName }}({{ userStore.roleName }})
|
||||
@ -60,7 +56,7 @@
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import {ElMessageBox} from 'element-plus'
|
||||
import { ElMessageBox } from 'element-plus'
|
||||
// 引入原有组件
|
||||
import Breadcrumb from '@/components/Breadcrumb'
|
||||
import TopNav from '@/components/TopNav'
|
||||
@ -75,7 +71,7 @@ import useAppStore from '@/store/modules/app'
|
||||
import useUserStore from '@/store/modules/user'
|
||||
import useSettingsStore from '@/store/modules/settings'
|
||||
// 引入图标和默认头像(可替换为你的默认头像)
|
||||
import {CaretBottom} from '@element-plus/icons-vue'
|
||||
import { CaretBottom } from '@element-plus/icons-vue'
|
||||
|
||||
const appStore = useAppStore()
|
||||
const userStore = useUserStore()
|
||||
@ -137,20 +133,24 @@ function setLayout() {
|
||||
|
||||
<style lang='scss' scoped>
|
||||
.navbar {
|
||||
height: 50px; /* 固定高度,与原有一致 */
|
||||
height: 3.125rem;
|
||||
/* 固定高度,与原有一致 */
|
||||
overflow: hidden;
|
||||
position: relative;
|
||||
//background: #fff;
|
||||
background: #0d9488;
|
||||
box-shadow: 0 1px 4px rgba(0, 21, 41, 0.15);
|
||||
//box-shadow: 0 1px 4px rgba(0, 21, 41, 0.08);
|
||||
display: flex; /* 改为flex布局,确保子元素对齐 */
|
||||
align-items: center; /* 垂直居中 */
|
||||
display: flex;
|
||||
/* 改为flex布局,确保子元素对齐 */
|
||||
align-items: center;
|
||||
/* 垂直居中 */
|
||||
|
||||
.hamburger-container {
|
||||
line-height: 50px; /* 与导航栏高度一致 */
|
||||
line-height: 3.125rem;
|
||||
/* 与导航栏高度一致 */
|
||||
height: 100%;
|
||||
padding: 0 16px;
|
||||
padding: 0 1rem;
|
||||
cursor: pointer;
|
||||
transition: background 0.3s;
|
||||
-webkit-tap-highlight-color: transparent;
|
||||
@ -165,19 +165,23 @@ function setLayout() {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
flex: 1; /* 占满剩余宽度 */
|
||||
padding: 0 20px;
|
||||
flex: 1;
|
||||
/* 占满剩余宽度 */
|
||||
padding: 0 1.25rem;
|
||||
height: 100%;
|
||||
margin-left: 5px;
|
||||
margin-left: .3125rem;
|
||||
}
|
||||
|
||||
/* 产品名称样式 */
|
||||
.app-name {
|
||||
font-size: 18px;
|
||||
font-size: 1.125rem;
|
||||
font-weight: 600;
|
||||
color: #fff; /* 若依主题色,可替换为品牌色 */
|
||||
white-space: nowrap; /* 防止换行 */
|
||||
font-style: italic; /* 关键:字体倾斜 */
|
||||
color: #fff;
|
||||
/* 若依主题色,可替换为品牌色 */
|
||||
white-space: nowrap;
|
||||
/* 防止换行 */
|
||||
font-style: italic;
|
||||
/* 关键:字体倾斜 */
|
||||
/* 可选优化:增加倾斜角度控制(默认 italic 约 14 度,可自定义) */
|
||||
/* transform: skewX(-10deg); /* 向左倾斜 10 度,正负值控制倾斜方向 */
|
||||
}
|
||||
@ -186,13 +190,15 @@ function setLayout() {
|
||||
.right-content {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 12px; /* 元素间距,可调整 */
|
||||
white-space: nowrap; /* 防止换行 */
|
||||
gap: .75rem;
|
||||
/* 元素间距,可调整 */
|
||||
white-space: nowrap;
|
||||
/* 防止换行 */
|
||||
}
|
||||
|
||||
/* 用户信息样式 */
|
||||
.user-info {
|
||||
font-size: 14px;
|
||||
font-size: .875rem;
|
||||
font-weight: 600;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
@ -204,9 +210,9 @@ function setLayout() {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
padding: 0 8px;
|
||||
padding: 0 .5rem;
|
||||
height: 100%;
|
||||
font-size: 18px;
|
||||
font-size: 1.125rem;
|
||||
color: #5a5e66;
|
||||
vertical-align: text-bottom;
|
||||
|
||||
@ -226,19 +232,23 @@ function setLayout() {
|
||||
position: relative;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 4px; /* 头像与下拉图标间距 */
|
||||
gap: .25rem;
|
||||
/* 头像与下拉图标间距 */
|
||||
|
||||
.user-avatar {
|
||||
cursor: pointer;
|
||||
width: 36px; /* 调整头像大小 */
|
||||
height: 36px;
|
||||
border-radius: 50%; /* 圆形头像,可改为10px保持原有风格 */
|
||||
object-fit: cover; /* 防止头像变形 */
|
||||
width: 2.25rem;
|
||||
/* 调整头像大小 */
|
||||
height: 2.25rem;
|
||||
border-radius: 50%;
|
||||
/* 圆形头像,可改为10px保持原有风格 */
|
||||
object-fit: cover;
|
||||
/* 防止头像变形 */
|
||||
}
|
||||
|
||||
i {
|
||||
cursor: pointer;
|
||||
font-size: 12px;
|
||||
font-size: .75rem;
|
||||
color: #5a5e66;
|
||||
}
|
||||
}
|
||||
|
||||
@ -39,11 +39,6 @@ export function useFingerprint() {
|
||||
}
|
||||
};
|
||||
|
||||
// 组件挂载时自动获取指纹
|
||||
onMounted(() => {
|
||||
// getFingerprint();
|
||||
});
|
||||
|
||||
return {
|
||||
fingerprint,
|
||||
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">
|
||||
<el-form :model="queryParams" ref="queryRef" :inline="true" :size="aotuSize" :rules="rules"
|
||||
class="compact-form">
|
||||
<el-row :gutter="5">
|
||||
<el-col :span="6">
|
||||
<el-form-item label="" prop="ybh">
|
||||
<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"
|
||||
@click="handlePrev"></el-button>
|
||||
<el-input v-model="queryParams.ybh" placeholder="样本编号" @keyup.enter="handleQuery"
|
||||
style="width:100%" />
|
||||
<el-button type="primary" class="jt_btn" :size="aotuSize" icon="ArrowDownBold"
|
||||
</el-tooltip>
|
||||
<el-tooltip class="box-item" effect="dark" content="下一个" placement="top">
|
||||
<el-button type="primary" class="jt_btn next_btn" :size="aotuSize" icon="ArrowDownBold"
|
||||
@click="handleNext"></el-button>
|
||||
</el-tooltip>
|
||||
</el-button-group>
|
||||
<el-input v-model="queryParams.ybh" placeholder="样本编号" @keyup.enter="handleQuery"
|
||||
style="width:14.5rem" />
|
||||
</div>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
|
||||
<el-form-item label="日期:" prop="jyrq">
|
||||
<el-date-picker v-model="ybJyrq" type="date" label-width="1.25rem" placeholder="检验日期"
|
||||
value-format="YYYY-MM-DD" :clearable="false" @change="jyrqChange" ref="datePickerRef"
|
||||
style="width:100%" />
|
||||
style="width:7.5rem" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
|
||||
<el-form-item label="部门:" prop="instrGroup">
|
||||
<SelectTable v-model:data="queryParams.instrGroup" :fields="instrGroupFields"
|
||||
:tableData="instrGroupOptions" label="zdmc" value="zddh" objKey="zddh" :border="true" width="9rem"
|
||||
placeholder="请选择部门" @getDataValue="handleinstrGroupChange" :clearable="false" :size="aotuSize" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
|
||||
<el-form-item label="仪器:" prop="yq">
|
||||
<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" />
|
||||
</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-row :gutter="5">
|
||||
<el-col :span="8">
|
||||
@ -88,12 +77,20 @@
|
||||
<template v-if="activeTab == 'LabPatList'">
|
||||
<div class="flex-between">
|
||||
<div>
|
||||
<el-tooltip class="box-item" effect="dark" content="刷新" placement="top">
|
||||
<el-button type="primary" :size="aotuSize" icon="RefreshRight" circle
|
||||
@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-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-tooltip>
|
||||
<el-tooltip class="box-item" effect="dark" content="下一个" placement="top">
|
||||
<el-button class="btn_green mr5" :size="aotuSize" icon="bottom" circle
|
||||
@click="handleNext"></el-button>
|
||||
</el-tooltip>
|
||||
<PatientQueryForm :initial-params="initialParams" @query="handleQueryResult" @reset="handleReset"
|
||||
width="14rem" :size="aotuSize" placeholder="查询条件" :dict-data="dictData" :clearable="true" />
|
||||
<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"
|
||||
: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"
|
||||
:page-sizes="[300, 600, 1000]" :size="aotuSize" background
|
||||
layout="total, sizes, prev, pager, next, jumper" :total="total" @size-change="handleSizeChange"
|
||||
@current-change="handleCurrentChange" />
|
||||
</div>
|
||||
:page-sizes="[300, 600, 1000]" :size="aotuSize" background layout="total, sizes, prev, pager, next"
|
||||
:total="total" @size-change="handleSizeChange" @current-change="handleCurrentChange" />
|
||||
</div> -->
|
||||
</template>
|
||||
|
||||
<!-- tab栏 内容 -->
|
||||
@ -177,14 +173,14 @@ import Record from './labresult/record.vue';
|
||||
// @ts-ignore
|
||||
import { comDict } from '@/utils/dict'
|
||||
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 { ElMessage, ElMessageBox } from "element-plus";
|
||||
import BatchCode from '../work/components/batchCode.vue';
|
||||
import { getNextNumber, getPreviousNumber } from "@/utils/getNextNumber";
|
||||
import { useCommonStore } from '@/store/modules/commonStore';
|
||||
import { classCom } from '@/utils/classCom';
|
||||
import PatientQueryForm from '@/components/selectSearch/index.vue'
|
||||
import PatientQueryForm from './components/searchListFrom.vue'
|
||||
// @ts-ignore
|
||||
import { listUser } from '@/api/system/user.js'
|
||||
import dayjs from 'dayjs'
|
||||
@ -200,9 +196,9 @@ const queryParams = ref({
|
||||
instrGroup: '04',
|
||||
problemId: 0,
|
||||
days: -1,
|
||||
pageSize: 600,
|
||||
pageNum: 1,
|
||||
yhdh: ''
|
||||
yhdh: '',
|
||||
// pageSize: 600,
|
||||
// pageNum: 1,
|
||||
})
|
||||
|
||||
|
||||
@ -215,10 +211,10 @@ const wjs = ref(0)
|
||||
const activeTab = ref('LabPatList')
|
||||
const tabList = ref([
|
||||
{ label: '标本列表', value: 'LabPatList' },
|
||||
{ label: '结果图形', value: 'ResultGraph' },
|
||||
// { label: '结果图形', value: 'ResultGraph' },
|
||||
{ label: '历史对照', value: 'History' },
|
||||
{ label: '其他结果', value: 'OthersResult' },
|
||||
{ label: '结果复查', value: 'Reexamination' },
|
||||
// { label: '结果复查', value: 'Reexamination' },
|
||||
{ label: '收费信息', value: 'Charge' },
|
||||
{ label: '组合项目', value: 'Combination' },
|
||||
{ label: '临床意义', value: 'Clinical' },
|
||||
@ -268,6 +264,13 @@ const ybJyrq = ref('')
|
||||
watch(() => labPat.value, (newValue) => {
|
||||
queryParams.value.ybh = newValue.ybh;
|
||||
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 });
|
||||
|
||||
const checkUserRef = ref()
|
||||
@ -336,9 +339,8 @@ const searchQuery = () => {
|
||||
const searchStr = searchText.value.trim().toLowerCase();
|
||||
filterMhList = filterMhList.filter((item: any) => {
|
||||
// 处理 zjf大写转为小写
|
||||
const matchZjf = item.zjf && typeof item.zjf === 'string'
|
||||
? item.zjf.toLowerCase().includes(searchStr)
|
||||
: false; const matchBrxm = item.brxm && typeof item.brxm === 'string' && item.brxm.includes(searchStr);
|
||||
const matchZjf = item.zjf && typeof item.zjf === 'string' ? item.zjf.toLowerCase().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);
|
||||
return matchZjf || matchBrxm || matchSqh;
|
||||
});
|
||||
@ -699,28 +701,31 @@ const searchJobs = async (text: string, page: number, size: number) => {
|
||||
fetchlabPatList()
|
||||
}
|
||||
|
||||
const handleSizeChange = (size: number) => {
|
||||
queryParams.value.pageSize = size
|
||||
fetchlabPatList()
|
||||
}
|
||||
const handleCurrentChange = (page: number) => {
|
||||
queryParams.value.pageNum = page
|
||||
fetchlabPatList()
|
||||
}
|
||||
// const handleSizeChange = (size: number) => {
|
||||
// queryParams.value.pageSize = size
|
||||
// fetchlabPatList()
|
||||
// }
|
||||
// const handleCurrentChange = (page: number) => {
|
||||
// queryParams.value.pageNum = page
|
||||
// fetchlabPatList()
|
||||
// }
|
||||
|
||||
//载入样本列表(右边labpatlist.vue组件)
|
||||
const fetchlabPatList = () => {
|
||||
loading.value = true;
|
||||
wswsamplelistpage(queryParams.value).then((res: any) => {
|
||||
if (res.code == 200) {
|
||||
labPatList.value = res.rows;
|
||||
originalLabPatList.value = res.rows;
|
||||
total.value = res.total;
|
||||
wswsampleList(queryParams.value).then((res: any) => {
|
||||
if (res.code == 0) {
|
||||
labPatList.value = res.data;
|
||||
loading.value = false;
|
||||
if (res.rows.length > 0) {
|
||||
originalLabPatList.value = res.data;
|
||||
if (res.data.length > 0) {
|
||||
highlightRowIndex.value = 0;
|
||||
setTimeout(() => { labPatListRef.value.setCurrentRow(res.rows[0]) }, 10)
|
||||
selectJob(res.rows[0])
|
||||
setTimeout(() => { labPatListRef.value.setCurrentRow(res.data[0]) }, 10)
|
||||
selectJob(res.data[0])
|
||||
} else {
|
||||
labInfo.value = {}
|
||||
labPat.value = {}
|
||||
zbLabResuts.value = []
|
||||
}
|
||||
}
|
||||
})
|
||||
@ -858,7 +863,6 @@ const sendMessage = () => {
|
||||
border-radius: .75rem;
|
||||
padding: .5rem;
|
||||
background-color: #fff;
|
||||
|
||||
}
|
||||
|
||||
.radio_box {
|
||||
@ -878,9 +882,19 @@ const sendMessage = () => {
|
||||
}
|
||||
|
||||
.compact-form {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
border-bottom: 1px solid #E1E9F7;
|
||||
margin-bottom: 0.5rem;
|
||||
|
||||
:deep(.el-form-item__label) {
|
||||
padding: 0 !important;
|
||||
}
|
||||
|
||||
:deep(.el-form-item) {
|
||||
margin-right: 0;
|
||||
}
|
||||
|
||||
.el-form-item--default {
|
||||
margin-bottom: .3125rem !important;
|
||||
}
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
@keyup.enter="handleInputFocus" />
|
||||
<el-button type="primary" :size="aotuSize" @click="batchHandle">扫码</el-button>
|
||||
</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="text">{{ getLableType(lastJgbz) }}</div>
|
||||
</div>
|
||||
|
||||
@ -3,7 +3,8 @@
|
||||
<ContextMenu :items="contextMenuItems" @select="handleMenuSelect" menu-width="200">
|
||||
<CommonTable :table-data="labPatList" :loading="loading" :columns="tableColumns"
|
||||
: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">
|
||||
<!-- 完成状态列 -->
|
||||
<template #finish="{ row }">
|
||||
@ -40,10 +41,6 @@
|
||||
{{ formatDict(row.yhdh, 'SRD') }}
|
||||
</template>
|
||||
|
||||
<template #autojgbz="{ row }">
|
||||
<el-checkbox :model-value="row.autojgbz === '1'" readonly />
|
||||
</template>
|
||||
|
||||
<template #dybz="{ row }">
|
||||
<el-checkbox :model-value="row.dybz === '1'" readonly />
|
||||
</template>
|
||||
@ -255,7 +252,7 @@ defineExpose({
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.table-container {
|
||||
height: 72vh;
|
||||
height: 75vh;
|
||||
|
||||
.form-box {
|
||||
font-family: SourceHanSansCN, SourceHanSansCN;
|
||||
|
||||
@ -202,21 +202,28 @@ const erInfo = ref<any>({})
|
||||
|
||||
const mbStore = useCommonStore();
|
||||
watch(labPat, (newVal: any) => {
|
||||
if (newVal.ybh) {
|
||||
//获取结果列表
|
||||
getResultList()
|
||||
// 获取病人信息
|
||||
getLabPatInfo()
|
||||
} else {
|
||||
tableData.value = []
|
||||
tableData2.value = []
|
||||
cbInfo.value = {}
|
||||
erInfo.value = {}
|
||||
}
|
||||
})
|
||||
|
||||
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)
|
||||
})
|
||||
|
||||
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)
|
||||
})
|
||||
|
||||
|
||||
@ -189,6 +189,9 @@ const getbyjList = () => {
|
||||
watch(() => props.labPat, (newValue) => {
|
||||
if (newValue.jyrq && newValue.ybh && newValue.yq) {
|
||||
getbyjList()
|
||||
} else {
|
||||
tableData.value = []
|
||||
selectedRows.value = []
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
@ -53,6 +53,8 @@ const getRecordList = () => {
|
||||
watch(() => props.labPat, (newValue) => {
|
||||
if (newValue.jyrq && newValue.ybh && newValue.yq) {
|
||||
getRecordList()
|
||||
} else {
|
||||
tableData.value = []
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
@ -670,8 +670,6 @@ const mbStore = useCommonStore();
|
||||
const tableData: any = ref([])
|
||||
|
||||
watch(labResutsData, (newVal: any) => {
|
||||
console.log("🚀 ~ newVal:", newVal)
|
||||
|
||||
if (newVal.length) {
|
||||
tableData.value = newVal.map((item: any) => {
|
||||
return {
|
||||
@ -724,7 +722,6 @@ const handleTextarea = () => {
|
||||
};
|
||||
const rowInfo: any = ref({})
|
||||
const rowHandle = (row: any) => {
|
||||
console.log('row==>', row);
|
||||
selectedRows.value = [row];
|
||||
emitter.emitWithCache('refreshClinical', row);
|
||||
rowInfo.value = row
|
||||
|
||||
@ -5,51 +5,41 @@
|
||||
<div class="box-shadow">
|
||||
<el-form :model="queryParams" ref="queryRef" :inline="true" :size="aotuSize" :rules="rules"
|
||||
class="compact-form">
|
||||
<el-row :gutter="5">
|
||||
<el-col :span="6">
|
||||
|
||||
<el-form-item label="" prop="ybh">
|
||||
<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"
|
||||
@click="handlePrev"></el-button>
|
||||
<el-input v-model="queryParams.ybh" placeholder="样本编号" @keyup.enter="handleQuery"
|
||||
style="width:100%" />
|
||||
<el-button type="primary" class="jt_btn" :size="aotuSize" icon="ArrowDownBold"
|
||||
</el-tooltip>
|
||||
<el-tooltip class="box-item" effect="dark" content="下一个" placement="top">
|
||||
<el-button type="primary" class="jt_btn next_btn" :size="aotuSize" icon="ArrowDownBold"
|
||||
@click="handleNext"></el-button>
|
||||
</el-tooltip>
|
||||
</el-button-group>
|
||||
<el-input v-model="queryParams.ybh" placeholder="样本编号" @keyup.enter="handleQuery"
|
||||
style="width:14.5rem" />
|
||||
</div>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
|
||||
<el-form-item label="日期:" prop="jyrq">
|
||||
<el-date-picker v-model="queryParams.jyrq" type="date" label-width="1.25rem" placeholder="检验日期"
|
||||
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-col>
|
||||
<el-col :span="6">
|
||||
|
||||
<el-form-item label="部门:" prop="instrGroup">
|
||||
<SelectTable v-model:data="queryParams.instrGroup" :fields="instrGroupFields"
|
||||
:tableData="instrGroupOptions" label="zdmc" value="zddh" objKey="zddh" :border="true" width="9rem"
|
||||
placeholder="请选择部门" @getDataValue="handleinstrGroupChange" :clearable="false" :size="aotuSize" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
|
||||
<el-form-item label="仪器:" prop="yq">
|
||||
<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" />
|
||||
</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-row :gutter="5">
|
||||
<el-col :span="8">
|
||||
@ -73,12 +63,20 @@
|
||||
<template v-if="activeTab == 'LabPatList'">
|
||||
<div class="flex-between">
|
||||
<div>
|
||||
<el-tooltip class="box-item" effect="dark" content="刷新" placement="top">
|
||||
<el-button type="primary" :size="aotuSize" icon="RefreshRight" circle
|
||||
@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-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-tooltip>
|
||||
<el-tooltip class="box-item" effect="dark" content="下一个" placement="top">
|
||||
<el-button class="btn_green mr5" :size="aotuSize" icon="bottom" circle
|
||||
@click="handleNext"></el-button>
|
||||
</el-tooltip>
|
||||
<PatientQueryForm :initial-params="initialParams" @query="handleQueryResult" @reset="handleReset"
|
||||
width="14rem" :size="aotuSize" placeholder="查询条件" :dict-data="dictData" :clearable="true" />
|
||||
<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();
|
||||
filterMhList = filterMhList.filter((item: any) => {
|
||||
// 处理 zjf大写转为小写
|
||||
const matchZjf = item.zjf && typeof item.zjf === 'string'
|
||||
? item.zjf.toLowerCase().includes(searchStr)
|
||||
: false; const matchBrxm = item.brxm && typeof item.brxm === 'string' && item.brxm.includes(searchStr);
|
||||
const matchZjf = item.zjf && typeof item.zjf === 'string' ? item.zjf.toLowerCase().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);
|
||||
return matchZjf || matchBrxm || matchSqh;
|
||||
});
|
||||
@ -734,9 +731,19 @@ const sendMessage = () => {
|
||||
}
|
||||
|
||||
.compact-form {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
border-bottom: 1px solid #E1E9F7;
|
||||
margin-bottom: 0.5rem;
|
||||
|
||||
:deep(.el-form-item__label) {
|
||||
padding: 0 !important;
|
||||
}
|
||||
|
||||
:deep(.el-form-item) {
|
||||
margin-right: 0;
|
||||
}
|
||||
|
||||
.el-form-item--default {
|
||||
margin-bottom: .3125rem !important;
|
||||
}
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
@keyup.enter="handleInputFocus" />
|
||||
<el-button type="primary" :size="aotuSize" @click="batchHandle">扫码</el-button>
|
||||
</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="text">{{ getLableType(lastJgbz) }}</div>
|
||||
</div>
|
||||
|
||||
@ -3,8 +3,8 @@
|
||||
<ContextMenu :items="contextMenuItems" @select="handleMenuSelect" menu-width="200">
|
||||
<CommonTable :table-data="labPatList" :loading="loading" :columns="tableColumns" :dict-data="dictData"
|
||||
: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"
|
||||
@column-drag-end="handleColumnDragEnd">
|
||||
: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">
|
||||
<!-- 完成状态列 -->
|
||||
<template #finish="{ row }">
|
||||
<svg-icon v-if="row.finish == 1" icon-class="lvgou" />
|
||||
|
||||
@ -9,11 +9,10 @@
|
||||
@click="openItemDictDialog">新增</el-button>
|
||||
<el-button type="danger" :size="aotuSize" :disabled="labPat.jgbz != null && labPat.jgbz != 0" plain
|
||||
@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="View" :size="aotuSize" @click="previewHandle(2)">预览</el-button>
|
||||
</div>
|
||||
<div> </div>
|
||||
</div>
|
||||
<ContextMenu :items="contextMenuItems" @select="handleMenuSelect">
|
||||
<CustomTable ref="tableRef" :data="tableData" :columns="columns" :config="tableConfig" :enable-column-drag="true"
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user