diff --git a/src/api/liswork/work/LisWork.ts b/src/api/liswork/work/LisWork.ts
index 30fe9a3..7b74aa1 100644
--- a/src/api/liswork/work/LisWork.ts
+++ b/src/api/liswork/work/LisWork.ts
@@ -338,5 +338,21 @@ export function setredoSample(query?: Object) {
params: query
})
}
+// 锁定报告
+export function lockSample(query?: Object) {
+ return request({
+ url: '/lisworkoper/locksample',
+ method: 'get',
+ params: query
+ })
+}
+// 解锁报告
+export function unLockSample(query?: Object) {
+ return request({
+ url: '/lisworkoper/unlocksample',
+ method: 'get',
+ params: query
+ })
+}
diff --git a/src/components/contextMenu/index.vue b/src/components/contextMenu/index.vue
index 148f141..ebf3478 100644
--- a/src/components/contextMenu/index.vue
+++ b/src/components/contextMenu/index.vue
@@ -31,9 +31,9 @@ import emitter from '@/utils/mitt';
// 组件Props
const props = withDefaults(defineProps<{
- items: ContextMenuItem[];
- autoClose?: boolean;
- menuWidth?: number | string;
+ items: ContextMenuItem[]; // 菜单项
+ autoClose?: boolean; // 是否自动关闭菜单
+ menuWidth?: number | string; // 菜单宽度
}>(), {
autoClose: true,
menuWidth: 180,
@@ -51,14 +51,29 @@ const visible = ref(false);
const top = ref(0);
const left = ref(0);
-const handleContextMenu = (e: MouseEvent) => {
- // 打开当前菜单关闭其他菜单
+
+const handleContextMenu = async (e: MouseEvent) => {
emitter.emit('closeAllContextMenus');
- top.value = Math.min(e.clientY, window.innerHeight - 200);
- left.value = Math.min(e.clientX, window.innerWidth - 200);
+ // 先计算初始位置
+ left.value = Math.min(e.clientX, window.innerWidth - (typeof props.menuWidth === 'number' ? props.menuWidth : 180));
+ top.value = e.clientY;
visible.value = true;
emit('open');
+
+ // 等待菜单渲染完成后获取实际高度
+ await nextTick();
+ const menuEl = document.querySelector('.hospital-menu') as HTMLElement;
+ if (menuEl) {
+ const menuHeight = menuEl.offsetHeight;
+ const maxTop = window.innerHeight - menuHeight;
+ // 确保菜单不会超出底部可视区域
+ if (top.value > maxTop) {
+ top.value = maxTop;
+ // 如果向上调整后仍超出顶部,则取最小0值
+ if (top.value < 0) top.value = 0;
+ }
+ }
};
// 处理菜单项点击
@@ -86,12 +101,14 @@ const handleClickOutside = (e: MouseEvent) => {
// 键盘事件处理
const handleKeyDown = (e: KeyboardEvent) => {
if (!visible.value) return;
- // console.log('e==>', e);
if (e.key === 'Escape') {
hideMenu();
}
- if (e.key === 'e') {
- console.log('e==>', e);
+ // 统一转换小写
+ const row: ContextMenuItem | undefined = props.items.find(item => item.shortcut?.toLowerCase() === e.key?.toLowerCase());
+
+ if (row && !row.disabled) {
+ handleItemClick(row)
}
};
diff --git a/src/components/elTable/index.vue b/src/components/elTable/index.vue
index bcf7a01..cdffaa4 100644
--- a/src/components/elTable/index.vue
+++ b/src/components/elTable/index.vue
@@ -331,8 +331,8 @@ const setCurrentRow = (row: Object) => {
tableRef.value?.setCurrentRow(row);
};
-const setScrollTop = (top: number) => {
- tableRef.value?.setScrollTop(top);
+const setScrollTo = (top: number) => {
+ tableRef.value?.scrollTo(top);
};
const clearSort = () => {
@@ -353,7 +353,7 @@ defineExpose({
toggleRowSelection,
toggleAllSelection,
setCurrentRow,
- setScrollTop,
+ setScrollTo,
clearSort,
doLayout,
sort,
diff --git a/src/views/liswork/work/components/labpat.vue b/src/views/liswork/work/components/labpat.vue
index 7bfda9b..dacba20 100644
--- a/src/views/liswork/work/components/labpat.vue
+++ b/src/views/liswork/work/components/labpat.vue
@@ -62,49 +62,8 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 仅修改当前标本
- 修改当天所有未审核并且无核对医生的标本
- 修改当天所有未审核标本(将覆盖原有的核对医生)
-
-
- 指定样本号区间
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
@@ -112,11 +71,12 @@
import { ref, reactive, watch, toRaw, computed, onMounted, nextTick } from 'vue';
import { changepatcolumn, updateLabPat, checkYsUser } from "@/api/liswork/work/LisWork";
import SelectTable from '@/components/SelectTable/index.vue';
-// @ts-ignore
-import { listUser } from '@/api/system/user.js'
+import YhVerification from './yhVerification.vue';
+
import { PropType } from 'vue';
import emitter from '@/utils/mitt';
import { classCom } from '@/utils/classCom';
+import { use } from 'vxe-pc-ui';
const aotuSize = classCom.useAutoSize();
interface LabSysItem {
kj: string;
@@ -142,6 +102,10 @@ const props = defineProps({
type: Object,
default: () => { }
},
+ userList: {
+ type: Array as PropType