diff --git a/.env.development b/.env.development index 1b0da2e..6893891 100644 --- a/.env.development +++ b/.env.development @@ -1,5 +1,4 @@ # 获取服务器信息 VITE_USE_MOCK=true # VITE_API_BASE_URL=http://localhost:5173 -VITE_API_BASE_URL=http://127.0.0.1:8082 -VITE_WS_URL=ws://127.0.0.1:8082 \ No newline at end of file +# VITE_API_BASE_URL=http://127.0.0.1:8082 \ No newline at end of file diff --git a/.env.production b/.env.production index da44451..5abd5e3 100644 --- a/.env.production +++ b/.env.production @@ -1,4 +1,4 @@ VITE_USE_MOCK=false # VITE_API_BASE_URL=http://localhost:5173 -VITE_API_BASE_URL=http://127.0.0.1:8082 +# VITE_API_BASE_URL=http://127.0.0.1:8082 # http://127.0.0.1:8081 diff --git a/components.d.ts b/components.d.ts index cdd5939..e21917d 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'] - ElEmpty: typeof import('element-plus/es')['ElEmpty'] ElFooter: typeof import('element-plus/es')['ElFooter'] ElHeader: typeof import('element-plus/es')['ElHeader'] ElIcon: typeof import('element-plus/es')['ElIcon'] diff --git a/src/assets/404.svg b/src/assets/404.svg new file mode 100644 index 0000000..c827903 --- /dev/null +++ b/src/assets/404.svg @@ -0,0 +1,228 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/pages/Index/History.vue b/src/pages/Index/History.vue index f95806d..e5c11c4 100644 --- a/src/pages/Index/History.vue +++ b/src/pages/Index/History.vue @@ -48,46 +48,46 @@
日期: - 2024-01-01 + {{ formatDate(rowData!.creatDate) }}
- SampleID: - 12345 + 样本id: + {{ rowData!.id }}
- ProjectShortName: - Test Project + 项目名称: + {{ rowData!.projName }}
subResult1: - Result 1 + {{ jsonResult(rowData!.subProjResult1) }}
subResult2: - Result 2 + {{ jsonResult(rowData!.subProjResult2) }}
subResult3: - Result 3 + {{ jsonResult(rowData!.subProjResult3) }}
样本种类: - Type A + {{ rowData!.sampleBloodType }}
操次: - 1 + {{ rowData!.lotId }}
@@ -131,6 +131,7 @@ diff --git a/src/pages/Index/Settings/Users.vue b/src/pages/Index/Settings/Users.vue index 86920c3..35b6a12 100644 --- a/src/pages/Index/Settings/Users.vue +++ b/src/pages/Index/Settings/Users.vue @@ -1,16 +1,12 @@ @@ -173,19 +117,19 @@ const fetchUserList = async () => { } } // 处理选择变化 -const handleSelectionChange = (val: User[]) => { - selectedUsers.value = val - console.log('选中的用户', val) - // 只有当有选中用户时才更新 tempUser - if (val && val.length > 0) { - tempUser.value.id = val[0].id - tempUser.value.password = val[0].password - } else { - // 当没有选中用户时,重置 tempUser - tempUser.value.id = 0 - tempUser.value.password = '' - } -} +// const handleSelectionChange = (val: User[]) => { +// selectedUsers.value = val +// console.log('选中的用户', val) +// // 只有当有选中用户时才更新 tempUser +// if (val && val.length > 0) { +// tempUser.value.id = val[0].id +// tempUser.value.password = val[0].password +// } else { +// // 当没有选中用户时,重置 tempUser +// tempUser.value.id = 0 +// tempUser.value.password = '' +// } +// } // 新增用户 const addUser = async () => { insertUserShowModal.value = true @@ -409,11 +353,11 @@ const deleteUserMessage = computed( border: none; transition: all 0.3s; - &:hover > td { + &:hover>td { background-color: #f5f7fa; } - &.selected-row > td { + &.selected-row>td { background-color: #ecf5ff; } } diff --git a/src/pages/Index/TestTube/ChangeUser.vue b/src/pages/Index/TestTube/ChangeUser.vue index b3af3a3..c02db7a 100644 --- a/src/pages/Index/TestTube/ChangeUser.vue +++ b/src/pages/Index/TestTube/ChangeUser.vue @@ -41,7 +41,8 @@
{{ item.tubeIndex + 1 }}
-
+
{{ item.bloodType }}
@@ -91,6 +92,7 @@ import { } from '../utils' import { updateTubeConfig } from '../../../services' import { ElMessage } from 'element-plus' +import { ConsumableGroupBase } from '../../../websocket/socket' const testTubeStore = useTestTubeStore() const consumableStore = useConsumablesStore() const router = useRouter() @@ -98,7 +100,7 @@ const tubeInfo = ref({} as DataItem) //试管架信息 const processedTubeInfo = ref({} as handleTube) //经过清洗的试管架信息 const tubeSettings = ref([]) //获取到的试管信息 const tubeType = ref(testTubeStore.type || '自动') //导航栏的试管类型 -const plates = ref(consumableStore.plates) //反应板信息 +const plates = ref(consumableStore.plates) //反应板信息 const selectedSampleId = ref(null) //选中的试管 const keyboardVisible = ref(false) const currentInputValue = ref('') diff --git a/src/pages/Index/components/Consumables/MoveLiquidArea.vue b/src/pages/Index/components/Consumables/MoveLiquidArea.vue index 52c2aac..26f50f8 100644 --- a/src/pages/Index/components/Consumables/MoveLiquidArea.vue +++ b/src/pages/Index/components/Consumables/MoveLiquidArea.vue @@ -42,7 +42,8 @@
-
+
1
@@ -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