diff --git a/components.d.ts b/components.d.ts
index c5e5ff9..788f962 100644
--- a/components.d.ts
+++ b/components.d.ts
@@ -8,7 +8,6 @@ export {}
declare module 'vue' {
export interface GlobalComponents {
ElButton: typeof import('element-plus/es')['ElButton']
- ElDialog: typeof import('element-plus/es')['ElDialog']
ElEmpty: typeof import('element-plus/es')['ElEmpty']
ElFooter: typeof import('element-plus/es')['ElFooter']
ElHeader: typeof import('element-plus/es')['ElHeader']
@@ -16,7 +15,6 @@ declare module 'vue' {
ElInput: typeof import('element-plus/es')['ElInput']
ElMain: typeof import('element-plus/es')['ElMain']
ElPopover: typeof import('element-plus/es')['ElPopover']
- ElSlider: typeof import('element-plus/es')['ElSlider']
ElTable: typeof import('element-plus/es')['ElTable']
ElTableColumn: typeof import('element-plus/es')['ElTableColumn']
Keyboard: typeof import('./src/components/Keyboard.vue')['default']
diff --git a/package.json b/package.json
index ab8c47a..75867ca 100644
--- a/package.json
+++ b/package.json
@@ -42,6 +42,7 @@
"jest": "^29.7.0",
"postcss-pxtorem": "^6.1.0",
"prettier": "^3.3.3",
+ "terser": "^5.37.0",
"ts-node": "^10.9.2",
"typescript": "^5.6.3",
"unplugin-auto-import": "^0.18.3",
diff --git a/src/components/Keyboard.vue b/src/components/Keyboard.vue
index 0b01143..f313e80 100644
--- a/src/components/Keyboard.vue
+++ b/src/components/Keyboard.vue
@@ -1,32 +1,14 @@
@@ -291,11 +273,15 @@ defineExpose({ inputRef, visible, open, close })
// 覆盖 .simple-keyboard 的样式
::v-deep(.simple-keyboard) {
- width: 100% !important; /* 键盘宽度占满父容器 */
- max-width: 100vw !important; /* 限制键盘最大宽度 */
+ width: 100% !important;
+ /* 键盘宽度占满父容器 */
+ max-width: 100vw !important;
+ /* 限制键盘最大宽度 */
height: auto !important;
- overflow-x: hidden !important; /* 禁止水平拖动 */
- overflow-y: auto !important; /* 如果键盘内容超长,允许垂直滚动 */
+ overflow-x: hidden !important;
+ /* 禁止水平拖动 */
+ overflow-y: auto !important;
+ /* 如果键盘内容超长,允许垂直滚动 */
box-sizing: border-box !important;
}
@@ -350,21 +336,25 @@ defineExpose({ inputRef, visible, open, close })
cursor: not-allowed !important;
}
}
+
// 特殊按键(space、清空、关闭等)宽度调整
::v-deep(.hg-button-space) {
flex: 3 !important; // 扩展宽度
}
+
::v-deep(.hg-button-clear),
::v-deep(.hg-button-close) {
flex: 2 !important; // 比普通按键略大
font-size: 16px !important;
}
+
// 禁用按键样式
::v-deep(.hg-disabled) {
background-color: @disabled-bg !important;
color: @disabled-color !important;
cursor: not-allowed !important;
}
+
// 行边框调整,让行更清晰
::v-deep(.hg-row:not(:last-child)) {
border-bottom: 1px solid #eeeeee !important; // 增加行分隔线
@@ -373,49 +363,76 @@ defineExpose({ inputRef, visible, open, close })
// el-popover 样式调整
::v-deep(.el-popover) {
position: fixed !important;
- width: 100vw !important; /* 确保弹出层宽度占满屏幕 */
- max-width: 100vw !important; /* 限制最大宽度 */
- height: 100vh !important; /* 确保高度占满屏幕 */
- left: 0 !important; /* 左对齐屏幕 */
- top: 100px !important; /* 定位 */
+ width: 100vw !important;
+ /* 确保弹出层宽度占满屏幕 */
+ max-width: 100vw !important;
+ /* 限制最大宽度 */
+ height: 100vh !important;
+ /* 确保高度占满屏幕 */
+ left: 0 !important;
+ /* 左对齐屏幕 */
+ top: 100px !important;
+ /* 定位 */
padding: 0 !important;
background-color: transparent !important;
- transform: none !important; /* 移除默认偏移 */
- overflow-x: hidden !important; /* 禁止水平滚动 */
- overflow-y: auto !important; /* 垂直滚动,确保键盘内容不超出 */
+ transform: none !important;
+ /* 移除默认偏移 */
+ overflow-x: hidden !important;
+ /* 禁止水平滚动 */
+ overflow-y: auto !important;
+ /* 垂直滚动,确保键盘内容不超出 */
}
+
.keyboard-wrapper {
position: relative;
- width: 100vw; /* 确保键盘宽度不超出视口 */
- overflow: hidden; /* 防止键盘内容超出屏幕 */
+ width: 100vw;
+ /* 确保键盘宽度不超出视口 */
+ overflow: hidden;
+ /* 防止键盘内容超出屏幕 */
}
// 输入框样式优化,确保只显示一个框
.el-input {
- font-size: 36px; /* 增大字体 */
- font-weight: bold; /* 字体加粗 */
- color: #333; /* 字体颜色 */
- height: 60px; /* 输入框高度 */
- border-radius: 8px; /* 圆角边框 */
- background-color: @bg-color; /* 背景色 */
- box-shadow: @box-shadow; /* 应用全局阴影变量 */
- border: none; /* 去除边框 */
- outline: none; /* 去除焦点样式 */
+ font-size: 36px;
+ /* 增大字体 */
+ font-weight: bold;
+ /* 字体加粗 */
+ color: #333;
+ /* 字体颜色 */
+ height: 60px;
+ /* 输入框高度 */
+ border-radius: 8px;
+ /* 圆角边框 */
+ background-color: @bg-color;
+ /* 背景色 */
+ box-shadow: @box-shadow;
+ /* 应用全局阴影变量 */
+ border: none;
+ /* 去除边框 */
+ outline: none;
+ /* 去除焦点样式 */
&:focus-within {
- border: 2px solid #528dfe; /* 聚焦边框颜色 */
- box-shadow: 0 0 5px rgba(82, 141, 254, 0.5); /* 聚焦时阴影 */
+ border: 2px solid #528dfe;
+ /* 聚焦边框颜色 */
+ box-shadow: 0 0 5px rgba(82, 141, 254, 0.5);
+ /* 聚焦时阴影 */
}
.el-input__inner {
font-size: inherit;
font-weight: inherit;
color: inherit;
- height: 100%; /* 占满输入框 */
- width: 100%; /* 宽度占满父容器 */
- border: none; /* 去除内部边框 */
- background-color: transparent; /* 背景透明 */
- outline: none; /* 去除焦点高亮 */
+ height: 100%;
+ /* 占满输入框 */
+ width: 100%;
+ /* 宽度占满父容器 */
+ border: none;
+ /* 去除内部边框 */
+ background-color: transparent;
+ /* 背景透明 */
+ outline: none;
+ /* 去除焦点高亮 */
text-align: left;
}
}
diff --git a/src/pages/Index/Regular/Emergency.vue b/src/pages/Index/Regular/Emergency.vue
index 550188f..2807547 100644
--- a/src/pages/Index/Regular/Emergency.vue
+++ b/src/pages/Index/Regular/Emergency.vue
@@ -13,13 +13,13 @@
-
+
-
+
@@ -100,8 +98,8 @@ import { useRouter } from 'vue-router';
import { nanoid } from 'nanoid';
import { insertEmergency } from '../../../services/Index/index';
import { useEmergencyStore, useConsumablesStore } from '../../../store';
-import type { ReactionPlate, AddEmergencyInfo ,Subtank} from '../../../types/Index';
-import { Keyboard,SimpleKeyboard } from '../../../components';
+import type { ReactionPlate, AddEmergencyInfo, Subtank } from '../../../types/Index';
+import { Keyboard } from '../../../components';
const consumableStore = useConsumablesStore();
const emergencyStore = useEmergencyStore();
@@ -165,7 +163,7 @@ const cancelHandle = () => {
// 确认请求
const confirmHandle = async () => {
- const res = await insertEmergency(emergencyPosition.value);
+ await insertEmergency(emergencyPosition.value);
const emergencyInfo = emergencyPosition.value;
// 构造急诊位数据
@@ -273,18 +271,18 @@ const currentInputValue = ref(''); // 当前键盘绑定的值
// 显示键盘
const showKeyboard = (field: string) => {
-
+
if (field === 'sampleBarcode') {
currentInputField.value = 'sampleBarcode';
- currentInputValue.value = emergencyPosition.value.sampleBarcode || ''; // 确保清空上一次输入的值
+ currentInputValue.value = emergencyPosition.value.sampleBarcode || ''; // 确保清空上一次输入的值
} else {
currentInputField.value = 'userid';
-currentInputValue.value = emergencyPosition.value.userid || ''; // 同上
+ currentInputValue.value = emergencyPosition.value.userid || ''; // 同上
}
keyboardVisible.value = true;
};
const handleKeyboardInput = (value: string) => {
- if (currentInputField.value === 'sampleBarcode') {
+ if (currentInputField.value === 'sampleBarcode') {
emergencyPosition.value.sampleBarcode = value;
currentInputValue.value = value; // 更新输入框的值
} else if (currentInputField.value === 'userid') {
@@ -775,20 +773,25 @@ const hideKeyboard = () => {
}
}
- .keyboard {
- position: fixed;
- bottom: 0;
- left: 0; /* 固定左边 */
- right: 0; /* 固定右边 */
- width: 100vw; /* 宽度为视口宽度,确保不超出 */
- max-width: 100%; /* 最多占满父容器的宽度 */
- height: 600px;
- background-color: #f0f0f0;
- border-top-left-radius: 10px;
- border-top-right-radius: 10px;
- box-shadow: 0 -2px 6px rgba(0, 0, 0, 0.15);
- overflow: hidden; /* 防止溢出 */
-}
+ .keyboard {
+ position: fixed;
+ bottom: 0;
+ left: 0;
+ /* 固定左边 */
+ right: 0;
+ /* 固定右边 */
+ width: 100vw;
+ /* 宽度为视口宽度,确保不超出 */
+ max-width: 100%;
+ /* 最多占满父容器的宽度 */
+ height: 600px;
+ background-color: #f0f0f0;
+ border-top-left-radius: 10px;
+ border-top-right-radius: 10px;
+ box-shadow: 0 -2px 6px rgba(0, 0, 0, 0.15);
+ overflow: hidden;
+ /* 防止溢出 */
+ }
/* 键盘滑动动画 */
.slide-up-enter-active,
diff --git a/src/pages/NotFound/NotFound.vue b/src/pages/NotFound/NotFound.vue
index 7697a01..c880586 100644
--- a/src/pages/NotFound/NotFound.vue
+++ b/src/pages/NotFound/NotFound.vue
@@ -4,9 +4,7 @@
diff --git a/src/router/router.ts b/src/router/router.ts
index 4419dec..a412953 100644
--- a/src/router/router.ts
+++ b/src/router/router.ts
@@ -97,6 +97,7 @@ function getCurrentUser() {
}
// 路由守卫,检查本地 Token 是否存在
router.beforeEach((to, from, next) => {
+ console.log(from)
const token = sessionStorage.getItem('token')
if (!token && to.path !== '/login') {
next('/login') // 没有 token,重定向到登录页
@@ -108,6 +109,7 @@ router.beforeEach((to, from, next) => {
})
// 在 router/index.ts 中添加全局路由守卫
router.beforeEach((to, from, next) => {
+ console.log(from)
const user = getCurrentUser() // 获取当前用户
console.log(user)
// 判断目标路由是否需要权限检查
diff --git a/src/types/Index/Running.ts b/src/types/Index/Running.ts
index b223810..5da971d 100644
--- a/src/types/Index/Running.ts
+++ b/src/types/Index/Running.ts
@@ -1,3 +1,5 @@
+import type { ProjectInfo } from './Emergency'
+
export interface IncubationPlate {
subtanks: Subtank[] // 子槽数组,共20个槽位
timestamp: number // 时间戳,表示数据的生成时间
@@ -80,9 +82,9 @@ export interface TubeRackResponse {
success: boolean // 请求是否成功
}
-export interface ProjectInfo {
- projId: number // 项目ID
- projName: string // 项目名称
- projShortName: string // 项目简称
- color: string // 项目颜色
-}
+// export interface ProjectInfo {
+// projId: number // 项目ID
+// projName: string // 项目名称
+// projShortName: string // 项目简称
+// color: string // 项目颜色
+// }
diff --git a/tsconfig.app.tsbuildinfo b/tsconfig.app.tsbuildinfo
index 5648cd6..a3fdf8a 100644
--- a/tsconfig.app.tsbuildinfo
+++ b/tsconfig.app.tsbuildinfo
@@ -1 +1 @@
-{"root":["./src/eventbus.ts","./src/main.ts","./src/vite-env.d.ts","./src/mock/os-control.ts","./src/mock/user-manage.ts","./src/mock/index.ts","./src/mock/index/consumables.ts","./src/mock/index/emergency.ts","./src/mock/index/history.ts","./src/mock/index/initable.ts","./src/mock/index/running.ts","./src/mock/index/testtube.ts","./src/pages/index/components/index.ts","./src/pages/index/components/consumables/index.ts","./src/pages/index/components/consumables/warn/index.ts","./src/pages/index/components/history/index.ts","./src/pages/index/components/running/index.ts","./src/pages/index/components/setting/index.ts","./src/pages/index/components/testtube/index.ts","./src/pages/index/utils/generatesamplebackground.ts","./src/pages/index/utils/getbloodtypelabel.ts","./src/pages/index/utils/index.ts","./src/pages/index/utils/processtubesettings.ts","./src/router/router.ts","./src/services/index.ts","./src/services/index/emergency.ts","./src/services/index/history.ts","./src/services/index/idcard.ts","./src/services/index/index.ts","./src/services/index/init.ts","./src/services/index/regular.ts","./src/services/index/user-manage.ts","./src/services/index/test-tube/test-tube.ts","./src/services/index/running/running.ts","./src/services/index/settings/index.ts","./src/services/index/settings/settings.ts","./src/services/login/index.ts","./src/services/login/login.ts","./src/services/oscontrol/index.ts","./src/services/oscontrol/os.ts","./src/store/index.ts","./src/store/modules/consumables.ts","./src/store/modules/emergency.ts","./src/store/modules/test-tube.ts","./src/types/env.d.ts","./src/types/index/consumables.ts","./src/types/index/emergency.ts","./src/types/index/history.ts","./src/types/index/idcard.ts","./src/types/index/init.ts","./src/types/index/running.ts","./src/types/index/settings.ts","./src/types/index/testtube.ts","./src/types/index/user.ts","./src/types/index/index.ts","./src/types/index/osctrl.ts","./src/utils/axios.ts","./src/utils/formdate.ts","./src/utils/fuzzymatchbysequence.ts","./src/app.vue","./src/components/keyboard.vue","./src/pages/index/history.vue","./src/pages/index/index.vue","./src/pages/index/regular.vue","./src/pages/index/setting.vue","./src/pages/index/regular/consumables.vue","./src/pages/index/regular/emergency.vue","./src/pages/index/regular/running.vue","./src/pages/index/regular/testtube.vue","./src/pages/index/settings/device.vue","./src/pages/index/settings/lis.vue","./src/pages/index/settings/navbar.vue","./src/pages/index/settings/users.vue","./src/pages/index/settings/version.vue","./src/pages/index/testtube/changeuser.vue","./src/pages/index/components/consumables/ballgrid.vue","./src/pages/index/components/consumables/changenum.vue","./src/pages/index/components/consumables/idcardinfo.vue","./src/pages/index/components/consumables/infobar.vue","./src/pages/index/components/consumables/maincomponent.vue","./src/pages/index/components/consumables/moveliquidarea.vue","./src/pages/index/components/consumables/plate.vue","./src/pages/index/components/consumables/projectselector.vue","./src/pages/index/components/consumables/spttingplates.vue","./src/pages/index/components/consumables/tabbar.vue","./src/pages/index/components/consumables/time.vue","./src/pages/index/components/consumables/warn/initwarn.vue","./src/pages/index/components/consumables/warn/loadingmodal.vue","./src/pages/index/components/history/historytable.vue","./src/pages/index/components/history/historywarn.vue","./src/pages/index/components/running/littlebufferdisplay.vue","./src/pages/index/components/running/platedisplay.vue","./src/pages/index/components/running/sampledisplay.vue","./src/pages/index/components/setting/addusermodal.vue","./src/pages/index/components/setting/delmessage.vue","./src/pages/index/components/setting/delwarn.vue","./src/pages/index/components/setting/enterpinmodal.vue","./src/pages/index/components/testtube/projectsetting.vue","./src/pages/index/components/testtube/testtuberack.vue","./src/pages/login/login.vue"],"version":"5.6.3"}
\ No newline at end of file
+{"root":["./src/eventbus.ts","./src/main.ts","./src/vite-env.d.ts","./src/components/index.ts","./src/mock/os-control.ts","./src/mock/user-manage.ts","./src/mock/index.ts","./src/mock/index/consumables.ts","./src/mock/index/emergency.ts","./src/mock/index/history.ts","./src/mock/index/initable.ts","./src/mock/index/running.ts","./src/mock/index/testtube.ts","./src/pages/index/components/index.ts","./src/pages/index/components/consumables/index.ts","./src/pages/index/components/consumables/warn/index.ts","./src/pages/index/components/history/index.ts","./src/pages/index/components/running/index.ts","./src/pages/index/components/setting/index.ts","./src/pages/index/components/testtube/index.ts","./src/pages/index/utils/generatesamplebackground.ts","./src/pages/index/utils/getbloodtypelabel.ts","./src/pages/index/utils/index.ts","./src/pages/index/utils/processtubesettings.ts","./src/router/router.ts","./src/services/index.ts","./src/services/index/emergency.ts","./src/services/index/history.ts","./src/services/index/idcard.ts","./src/services/index/index.ts","./src/services/index/init.ts","./src/services/index/regular.ts","./src/services/index/user-manage.ts","./src/services/index/test-tube/test-tube.ts","./src/services/index/running/index.ts","./src/services/index/running/running.ts","./src/services/index/settings/index.ts","./src/services/index/settings/settings.ts","./src/services/login/index.ts","./src/services/login/login.ts","./src/services/oscontrol/index.ts","./src/services/oscontrol/os.ts","./src/store/index.ts","./src/store/modules/consumables.ts","./src/store/modules/emergency.ts","./src/store/modules/test-tube.ts","./src/types/env.d.ts","./src/types/index/consumables.ts","./src/types/index/emergency.ts","./src/types/index/history.ts","./src/types/index/idcard.ts","./src/types/index/init.ts","./src/types/index/running.ts","./src/types/index/settings.ts","./src/types/index/testtube.ts","./src/types/index/user.ts","./src/types/index/index.ts","./src/types/index/osctrl.ts","./src/utils/axios.ts","./src/utils/formdate.ts","./src/utils/fuzzymatchbysequence.ts","./src/app.vue","./src/components/keyboard.vue","./src/components/simplekeyboard.vue","./src/pages/index/history.vue","./src/pages/index/index.vue","./src/pages/index/regular.vue","./src/pages/index/setting.vue","./src/pages/index/regular/consumables.vue","./src/pages/index/regular/emergency.vue","./src/pages/index/regular/running.vue","./src/pages/index/regular/testtube.vue","./src/pages/index/settings/device.vue","./src/pages/index/settings/lis.vue","./src/pages/index/settings/navbar.vue","./src/pages/index/settings/users.vue","./src/pages/index/settings/version.vue","./src/pages/index/testtube/changeuser.vue","./src/pages/index/components/consumables/ballgrid.vue","./src/pages/index/components/consumables/changenum.vue","./src/pages/index/components/consumables/idcardinfo.vue","./src/pages/index/components/consumables/infobar.vue","./src/pages/index/components/consumables/maincomponent.vue","./src/pages/index/components/consumables/moveliquidarea.vue","./src/pages/index/components/consumables/plate.vue","./src/pages/index/components/consumables/projectselector.vue","./src/pages/index/components/consumables/spttingplates.vue","./src/pages/index/components/consumables/tabbar.vue","./src/pages/index/components/consumables/time.vue","./src/pages/index/components/consumables/warn/initwarn.vue","./src/pages/index/components/consumables/warn/loadingmodal.vue","./src/pages/index/components/history/historymessage.vue","./src/pages/index/components/history/historytable.vue","./src/pages/index/components/history/historywarn.vue","./src/pages/index/components/running/emergencyresultdialog.vue","./src/pages/index/components/running/littlebufferdisplay.vue","./src/pages/index/components/running/platedisplay.vue","./src/pages/index/components/running/sampledisplay.vue","./src/pages/index/components/setting/addusermodal.vue","./src/pages/index/components/setting/delmessage.vue","./src/pages/index/components/setting/delwarn.vue","./src/pages/index/components/setting/enterpinmodal.vue","./src/pages/index/components/testtube/projectsetting.vue","./src/pages/index/components/testtube/testtuberack.vue","./src/pages/login/login.vue","./src/pages/notfound/notfound.vue"],"version":"5.6.3"}
\ No newline at end of file
diff --git a/vite.config.ts b/vite.config.ts
index b0da3ce..9db3645 100644
--- a/vite.config.ts
+++ b/vite.config.ts
@@ -6,18 +6,28 @@ import Components from 'unplugin-vue-components/vite'
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'
// https://vitejs.dev/config/
export default defineConfig({
- plugins: [vue(),
- AutoImport({
- resolvers: [ElementPlusResolver()],
- }),
- Components({
- resolvers: [ElementPlusResolver()],
- }),
+ plugins: [
+ vue(),
+ AutoImport({
+ resolvers: [ElementPlusResolver()],
+ }),
+ Components({
+ resolvers: [ElementPlusResolver()],
+ }),
],
resolve: {
extensions: ['.js', '.ts', '.vue', '.json'], // 添加 .ts 扩展名解析
alias: {
- '@': fileURLToPath(new URL('./src', import.meta.url)) // 确保将 @ 指向 src 目录
- }
- }
+ '@': fileURLToPath(new URL('./src', import.meta.url)), // 确保将 @ 指向 src 目录
+ },
+ },
+ build: {
+ minify: 'terser',
+ terserOptions: {
+ compress: {
+ drop_console: true,
+ drop_debugger: true,
+ },
+ },
+ },
})