-
@@ -101,9 +102,10 @@ import IdCardInfo from './IdCardInfo.vue'
import { ref, watch, reactive } from 'vue'
import { useRouter } from 'vue-router'
import { useEmergencyStore, useConsumablesStore } from '../../../../store'
-import { Tube, LiquidState, BottleGroup } from '../../../../types/Index/index'
+import { LiquidState, BottleGroup } from '../../../../types/Index/index'
import wasteFullIcon from '@/assets/Index/waste-full.svg'
import wasteIcon from '@/assets/Index/waste.svg'
+import type { EmergencyPosStateMessage } from '../../../../websocket/socket'
const emergencyStore = useEmergencyStore()
const consumableStore = useConsumablesStore()
@@ -122,7 +124,7 @@ const props = defineProps({
type: Array as () => BottleGroup[],
},
emergencyInfo: {
- type: Object as () => Tube,
+ type: Object as () => EmergencyPosStateMessage['data']['tube'],
},
tempTipNum: Array,
wasteStatus: Boolean,
@@ -175,7 +177,7 @@ const addEmergency = () => {
}
}
//回显急诊信息
-const showEmergencyInfo = (item: Tube) => {
+const showEmergencyInfo = (item: EmergencyPosStateMessage['data']['tube']) => {
console.log('回显急诊信息', item)
router.push({
path: '/index/emergency',
diff --git a/src/pages/Index/components/Consumables/ProjectSelector.vue b/src/pages/Index/components/Consumables/ProjectSelector.vue
index 7319c4d..e994c99 100644
--- a/src/pages/Index/components/Consumables/ProjectSelector.vue
+++ b/src/pages/Index/components/Consumables/ProjectSelector.vue
@@ -14,7 +14,7 @@
{{ item.projName }}
{{ item.num }}/25
@@ -55,7 +55,7 @@
-
\ No newline at end of file
diff --git a/src/router/router.ts b/src/router/router.ts
index a412953..e9e47a5 100644
--- a/src/router/router.ts
+++ b/src/router/router.ts
@@ -58,11 +58,13 @@ const routes = [
},
{
path: 'version', //版本管理
- component: () => import('@/pages/Index/Settings/Version.vue'),
+ redirect: '/notFound',
+ meta: { underDevelopment: true },
},
{
path: 'lis', //LIS配置
- component: () => import('@/pages/Index/Settings/Lis.vue'),
+ redirect: '/notFound',
+ meta: { underDevelopment: true },
},
],
},
@@ -84,6 +86,7 @@ const routes = [
{
path: '/notFound',
component: () => import('@/pages/NotFound/NotFound.vue'),
+ meta: { underDevelopment: true, requiresAuth: true, requiresAdmin: false },
},
]
const router = createRouter({
diff --git a/src/services/Index/Test-tube/test-tube.ts b/src/services/Index/Test-tube/test-tube.ts
index 6a7dcdf..86c84af 100644
--- a/src/services/Index/Test-tube/test-tube.ts
+++ b/src/services/Index/Test-tube/test-tube.ts
@@ -1,11 +1,5 @@
import apiClient from '../../../utils/axios'
-import type {
- handleTube,
- TubeActivationStatus,
- DataItem,
- Setting,
- TubeSetting,
-} from '../../../types/Index'
+import type { TubeActivationStatus, TubeSetting } from '../../../types/Index'
//获取已经配置的试管信息
export const getTestTube = async () => {
try {
diff --git a/src/services/Index/settings/settings.ts b/src/services/Index/settings/settings.ts
index 2ceaf2f..2b08a90 100644
--- a/src/services/Index/settings/settings.ts
+++ b/src/services/Index/settings/settings.ts
@@ -4,8 +4,7 @@ import apiClient from '../../../utils/axios'
export const setTemperature = async (data: any) => {
try {
const res = await apiClient.post(
- '/api/v1/app/AppSetting/setTemperature',
- data,
+ `/api/v1/app/AppSetting/setTemperature?val=${data}`,
)
return res.data
} catch (error) {
@@ -14,9 +13,12 @@ export const setTemperature = async (data: any) => {
}
// 设置语言
-export const setLanguage = async (data: any) => {
+export const setLanguage = async (language: 'zh_CN' | 'en_US') => {
+ console.log('修改语言', language)
try {
- const res = await apiClient.post('/api/v1/app/AppSetting/setLanguage', data)
+ const res = await apiClient.post(
+ `/api/v1/app/AppSetting/setLanguage?val=${language}`,
+ )
return res.data
} catch (error) {
console.log('修改语言出错', error)
@@ -26,7 +28,9 @@ export const setLanguage = async (data: any) => {
// 设置LIS类型
export const setLISType = async (data: any) => {
try {
- const res = await apiClient.post('/api/v1/app/AppSetting/setLISType', data)
+ const res = await apiClient.post(
+ `/api/v1/app/AppSetting/setLISType?val=${data}`,
+ )
return res.data
} catch (error) {
console.log('设置LIS类型出错', error)
@@ -37,7 +41,7 @@ export const setLISType = async (data: any) => {
export const setLISSerialBaudrate = async (data: any) => {
try {
const res = await apiClient.post(
- '/api/v1/app/AppSetting/setLISSerialBaudrate',
+ `/api/v1/app/AppSetting/setLISSerialBaudrate?val=${data}`,
data,
)
return res.data
@@ -50,8 +54,7 @@ export const setLISSerialBaudrate = async (data: any) => {
export const setLISProtocol = async (data: any) => {
try {
const res = await apiClient.post(
- '/api/v1/app/AppSetting/setLISProtocol',
- data,
+ `/api/v1/app/AppSetting/setLISProtocol?val=${data}`,
)
return res.data
} catch (error) {
@@ -63,8 +66,7 @@ export const setLISProtocol = async (data: any) => {
export const setLISNetPort = async (data: any) => {
try {
const res = await apiClient.post(
- '/api/v1/app/AppSetting/setLISNetPort',
- data,
+ `/api/v1/app/AppSetting/setLISNetPort?val=${data}`,
)
return res.data
} catch (error) {
@@ -75,7 +77,9 @@ export const setLISNetPort = async (data: any) => {
// 设置LIS IP
export const setLISNetIp = async (data: any) => {
try {
- const res = await apiClient.post('/api/v1/app/AppSetting/setLISNetIp', data)
+ const res = await apiClient.post(
+ `/api/v1/app/AppSetting/setLISNetIp?val=${data}`,
+ )
return res.data
} catch (error) {
console.log('设置LIS IP出错', error)
@@ -86,8 +90,7 @@ export const setLISNetIp = async (data: any) => {
export const setLISAutoExport = async (data: any) => {
try {
const res = await apiClient.post(
- '/api/v1/app/AppSetting/setLISAutoExport',
- data,
+ `/api/v1/app/AppSetting/setLISAutoExport?val=${data}`,
)
return res.data
} catch (error) {
@@ -98,7 +101,9 @@ export const setLISAutoExport = async (data: any) => {
// 设置LIS接口
export const setLISIF = async (data: any) => {
try {
- const res = await apiClient.post('/api/v1/app/AppSetting/setLISIF', data)
+ const res = await apiClient.post(
+ `/api/v1/app/AppSetting/setLISIF?val=${data}`,
+ )
return res.data
} catch (error) {
console.log('设置LIS接口出错', error)
@@ -109,8 +114,7 @@ export const setLISIF = async (data: any) => {
export const setAutoPrint = async (data: any) => {
try {
const res = await apiClient.post(
- '/api/v1/app/AppSetting/setAutoPrint',
- data,
+ `/api/v1/app/AppSetting/setAutoPrint?val=${data}`,
)
return res.data
} catch (error) {
@@ -122,11 +126,20 @@ export const setAutoPrint = async (data: any) => {
export const setAutoLogout = async (data: any) => {
try {
const res = await apiClient.post(
- '/api/v1/app/AppSetting/setAutoLogout',
- data,
+ `/api/v1/app/AppSetting/setAutoLogout?val=${data}`,
)
return res.data
} catch (error) {
console.log('设置自动登出出错', error)
}
}
+
+//获取系统设置
+export const getSystemSettings = async () => {
+ try {
+ const res = await apiClient.post('/api/v1/app/AppSetting/getAppSettings')
+ return res.data
+ } catch (error) {
+ console.log('获取系统设置出错', error)
+ }
+}
diff --git a/src/store/modules/consumables.ts b/src/store/modules/consumables.ts
index aa2850f..c5a1efa 100644
--- a/src/store/modules/consumables.ts
+++ b/src/store/modules/consumables.ts
@@ -27,6 +27,7 @@ export const useConsumablesStore = defineStore(
const bufferBig = ref([])
//id卡是否插入
const isIdCardInserted = ref(false)
+ const wasteStatus = ref(false)
// 设置数据的 action
function setConsumablesData(data: ConsumablesStateMessage['data']) {
isLoad.value = true // 设置为已加载状态
@@ -45,6 +46,9 @@ export const useConsumablesStore = defineStore(
bufferLittles.value = []
bufferBig.value = []
}
+ function updateWasteStatus(status: boolean) {
+ wasteStatus.value = status
+ }
function updateIdCardStatus(status: boolean) {
isIdCardInserted.value = status
}
@@ -60,6 +64,8 @@ export const useConsumablesStore = defineStore(
setConsumablesData,
resetConsumablesData,
updateIdCardStatus,
+ updateWasteStatus,
+ wasteStatus,
}
},
{
diff --git a/src/store/modules/emergency.ts b/src/store/modules/emergency.ts
index 65ab127..3a2ed05 100644
--- a/src/store/modules/emergency.ts
+++ b/src/store/modules/emergency.ts
@@ -1,17 +1,17 @@
import { defineStore } from 'pinia'
import { ref } from 'vue'
-import { Tube } from '../../types/Index'
+import type { EmergencyPosStateMessage } from '../../websocket/socket'
export const useEmergencyStore = defineStore(
'emergency',
() => {
- let emergencyInfo = ref({} as Tube)
+ let emergencyInfo = ref({} as EmergencyPosStateMessage['data']['tube'])
- const setInfo = (data: any) => {
+ const setInfo = (data: EmergencyPosStateMessage['data']['tube']) => {
emergencyInfo.value = data
}
//卸载耗材
const unloadInfo = () => {
- emergencyInfo.value = {} as Tube
+ emergencyInfo.value = {} as EmergencyPosStateMessage['data']['tube']
}
return {
diff --git a/src/types/Index/History.ts b/src/types/Index/History.ts
index cd9e951..cf19b7f 100644
--- a/src/types/Index/History.ts
+++ b/src/types/Index/History.ts
@@ -40,16 +40,28 @@ export interface TableItem {
lotId: string
projId: string
subProjResult1: {
+ errorInfo: string
+ status: string
+ subProjName: string
+ subProjShortName: string
result1: string
result2: string
result3: string
}
subProjResult2: {
+ errorInfo: string
+ status: string
+ subProjName: string
+ subProjShortName: string
result1: string
result2: string
result3: string
}
subProjResult3: {
+ errorInfo: string
+ status: string
+ subProjName: string
+ subProjShortName: string
result1: string
result2: string
result3: string
diff --git a/src/types/Index/Running.ts b/src/types/Index/Running.ts
index 5da971d..973f238 100644
--- a/src/types/Index/Running.ts
+++ b/src/types/Index/Running.ts
@@ -19,6 +19,7 @@ export interface Subtank {
projId: number // 项目 ID
errors: string[] // 错误信息数组
isPlaceholder?: boolean
+ isEmergency?: boolean
}
export interface PlateProjectInfo {
diff --git a/src/websocket/socket.ts b/src/websocket/socket.ts
index 3f43b5a..38b347a 100644
--- a/src/websocket/socket.ts
+++ b/src/websocket/socket.ts
@@ -83,19 +83,19 @@ interface EmergencyPosStateMessage extends BaseMessage {
}
// 试管信息接口
-interface Tube {
- sampleId: string | null // 样本ID
- pos: number // 位置
- isHighTube: boolean // 是否为高试管
- isEmergency: boolean // 是否为急诊
- bloodType: 'WHOLE_BLOOD' | 'SERUM_OR_PLASMA' // 血液类型
- sampleBarcode: string // 样本条码
- userid: string // 用户ID
- projInfo: ProjectInfo[] // 项目信息列表
- projIds: number[] // 项目ID列表
- state: 'EMPTY' | 'OCCUPIED' // 状态
- errors: string[] // 错误信息列表
-}
+// interface Tube {
+// sampleId: string | null // 样本ID
+// pos: number // 位置
+// isHighTube: boolean // 是否为高试管
+// isEmergency: boolean // 是否为急诊
+// bloodType: 'WHOLE_BLOOD' | 'SERUM_OR_PLASMA' // 血液类型
+// sampleBarcode: string // 样本条码
+// userid: string // 用户ID
+// projInfo: ProjectInfo[] // 项目信息列表
+// projIds: number[] // 项目ID列表
+// state: 'EMPTY' | 'OCCUPIED' // 状态
+// errors: string[] // 错误信息列表
+// }
// 试管架状态消息
interface TubeHolderStateMessage extends BaseMessage {
@@ -103,9 +103,21 @@ interface TubeHolderStateMessage extends BaseMessage {
messageType: 'Report'
dataType: 'TubeHolderState'
data: {
- tubeHolderType: 'BloodTube' // 试管架类型
- tubes: Tube[] // 试管列表
- state: 'IDLE' | 'RUNNING' | 'ERROR' // 试管架状态
+ tubeHolderType: string
+ tubes: Array<{
+ sampleId: string | null
+ pos: number
+ isHighTube: boolean
+ isEmergency: boolean
+ bloodType: string
+ sampleBarcode: string
+ userid: string
+ projInfo: any[]
+ projIds: number[]
+ state: string
+ errors: string[]
+ }>
+ state: string
}
timestamp: number
}
@@ -144,6 +156,7 @@ interface Subtank {
startIncubatedTime: number // 开始孵育时间
incubatedTimeSec: number // 孵育时间(秒)
errors: string[] // 错误信息列表
+ isPlaceholder?: boolean // 是否为占位符
}
// 孵育板状态消息
@@ -157,7 +170,7 @@ interface IncubationPlateStateMessage extends BaseMessage {
timestamp: number
}
-// 耗材组信息基础接口
+// ��材组信息基础接口
interface ConsumableGroupBase {
projId: number | null
projName: string | null
@@ -234,6 +247,10 @@ class WebSocketClient {
handler: MessageHandler,
): void {
if (!this.messageHandlers.has(messageType)) {
+ console.log(
+ '🚀 ~ WebSocketClient ~ subscribe ~ messageType:',
+ messageType,
+ )
this.messageHandlers.set(messageType, new Set())
}
this.messageHandlers.get(messageType)?.add(handler)
diff --git a/tsconfig.app.tsbuildinfo b/tsconfig.app.tsbuildinfo
index cd07b57..72f9ab4 100644
--- a/tsconfig.app.tsbuildinfo
+++ b/tsconfig.app.tsbuildinfo
@@ -1 +1 @@
-{"root":["./src/eventbus.ts","./src/main.ts","./src/vite-env.d.ts","./src/components/index.ts","./src/components/dialogs/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/utils/getserverinfo.ts","./src/websocket/socket.ts","./src/app.vue","./src/components/keyboard.vue","./src/components/simplekeyboard.vue","./src/components/dialogs/errormodal.vue","./src/components/dialogs/stackinfomodal.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
+{"root":["./src/eventbus.ts","./src/main.ts","./src/vite-env.d.ts","./src/components/index.ts","./src/components/dialogs/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/device.ts","./src/store/modules/emergency.ts","./src/store/modules/settingtesttube.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/utils/getserverinfo.ts","./src/websocket/socket.ts","./src/app.vue","./src/components/keyboard.vue","./src/components/simplekeyboard.vue","./src/components/dialogs/errormodal.vue","./src/components/dialogs/stackinfomodal.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/更改ip和端口说明.txt b/更改ip和端口说明.txt
new file mode 100644
index 0000000..e7d9ff6
--- /dev/null
+++ b/更改ip和端口说明.txt
@@ -0,0 +1 @@
+在src/utils/getServerInfo中,可以动态的获取ip,但端口需要手动更改,不再使用环境变量
\ No newline at end of file