|
|
@ -2,7 +2,7 @@ |
|
|
|
<div class="h-full flex flex-col"> |
|
|
|
<div class="border-b p-5 bg-white flex flex-row"> |
|
|
|
<div>样本预处理</div> |
|
|
|
<div v-if="false" class="ml-1"><LoadingOutlined /></div> |
|
|
|
<div v-if="isActionExecuting" class="ml-1"><LoadingOutlined /></div> |
|
|
|
</div> |
|
|
|
<a-row class="h-0 grow"> |
|
|
|
<a-col class="border-r" :span="16"> |
|
|
@ -35,10 +35,10 @@ |
|
|
|
</div> |
|
|
|
|
|
|
|
<div class="p-5"> |
|
|
|
<a-button class="m-1" @click="actionQuickExec('enableModule',0)">失能</a-button> |
|
|
|
<a-button class="m-1" @click="actionQuickExec('enableModule',1)">使能</a-button> |
|
|
|
<a-button class="m-1" @click="actionQuickExec('')">停止</a-button> |
|
|
|
<a-button class="m-1" @click="actionQuickExec('enableModule',true)">使能</a-button> |
|
|
|
<a-button class="m-1" @click="actionQuickExec('enableModule',false)">失能</a-button> |
|
|
|
<a-button class="m-1" @click="actionQuickExec('moveToZero')">归零</a-button> |
|
|
|
<a-button class="m-1" @click="actionQuickExec('stop')">停止</a-button> |
|
|
|
|
|
|
|
<a-button class="m-1" @click="actionQuickExec('openAerosolFan')">打开气溶胶风扇</a-button> |
|
|
|
<a-button class="m-1" @click="actionQuickExec('closeAerosolFan')">关闭气溶胶风扇</a-button> |
|
|
@ -47,33 +47,65 @@ |
|
|
|
|
|
|
|
<div class="mt-1"> |
|
|
|
<a-input-group compact class="flex flex-row"> |
|
|
|
<a-button @click="actionShakeTube">摇匀试管</a-button> |
|
|
|
<a-input class="!w-64" prefix="TubeType : " v-model:value="shakeTubeParams[0]"/> |
|
|
|
<a-input class="!w-32" prefix="TubeIndex : " v-model:value="shakeTubeParams[1]"/> |
|
|
|
<a-button @click="actionTakeTube">取试管</a-button> |
|
|
|
<a-select class="w-64" v-model:value="takeTubeParams[0]"> |
|
|
|
<a-select-option value="HighBlood">试管类型 : 全血5ML</a-select-option> |
|
|
|
<a-select-option value="ShortBlood">试管类型 : 全血3ML</a-select-option> |
|
|
|
<a-select-option value="Mini">试管类型 : 迷你试管</a-select-option> |
|
|
|
<a-select-option value="MiniBlood">试管类型 : 阳普管</a-select-option> |
|
|
|
<a-select-option value="BulletTube1P5">试管类型 : 子弹头试管1.5mL</a-select-option> |
|
|
|
<a-select-option value="BulletTube0P5">试管类型 : 子弹头试管0.5mL</a-select-option> |
|
|
|
</a-select> |
|
|
|
<a-button @click="takeTubeParams[1] = !takeTubeParams[1]" :type="takeTubeParams[1] ? 'primary' : 'default'">检查试管帽</a-button> |
|
|
|
</a-input-group> |
|
|
|
</div> |
|
|
|
|
|
|
|
<div class="mt-1"> |
|
|
|
<a-input-group compact class="flex flex-row"> |
|
|
|
<a-button @click="actionTakeTube">取试管</a-button> |
|
|
|
<a-input class="!w-64" prefix="TubeType : " v-model:value="takeTubeParams[0]"/> |
|
|
|
<a-button @click="actionShakeTube">摇匀试管</a-button> |
|
|
|
<a-select class="w-64" v-model:value="shakeTubeParams[0]"> |
|
|
|
<a-select-option value="HighBlood">试管类型 : 全血5ML</a-select-option> |
|
|
|
<a-select-option value="ShortBlood">试管类型 : 全血3ML</a-select-option> |
|
|
|
<a-select-option value="Mini">试管类型 : 迷你试管</a-select-option> |
|
|
|
<a-select-option value="MiniBlood">试管类型 : 阳普管</a-select-option> |
|
|
|
<a-select-option value="BulletTube1P5">试管类型 : 子弹头试管1.5mL</a-select-option> |
|
|
|
<a-select-option value="BulletTube0P5">试管类型 : 子弹头试管0.5mL</a-select-option> |
|
|
|
</a-select> |
|
|
|
<a-input class="!w-24" prefix="次数 : " v-model:value="shakeTubeParams[1]" /> |
|
|
|
<a-input class="!w-24" prefix="角度 : " v-model:value="shakeTubeParams[2]" /> |
|
|
|
</a-input-group> |
|
|
|
</div> |
|
|
|
|
|
|
|
<div class="mt-1"> |
|
|
|
<a-input-group compact class="flex flex-row"> |
|
|
|
<a-button @click="actionTakeTubeCap">取试管帽</a-button> |
|
|
|
<a-input class="!w-64" prefix="TubeType : " v-model:value="takeTubeCapParams[0]"/> |
|
|
|
<a-select class="w-64" v-model:value="takeTubeCapParams[0]"> |
|
|
|
<a-select-option value="HighBlood">试管类型 : 全血5ML</a-select-option> |
|
|
|
<a-select-option value="ShortBlood">试管类型 : 全血3ML</a-select-option> |
|
|
|
<a-select-option value="Mini">试管类型 : 迷你试管</a-select-option> |
|
|
|
<a-select-option value="MiniBlood">试管类型 : 阳普管</a-select-option> |
|
|
|
<a-select-option value="BulletTube1P5">试管类型 : 子弹头试管1.5mL</a-select-option> |
|
|
|
<a-select-option value="BulletTube0P5">试管类型 : 子弹头试管0.5mL</a-select-option> |
|
|
|
</a-select> |
|
|
|
</a-input-group> |
|
|
|
</div> |
|
|
|
<div class="mt-1"> |
|
|
|
<a-input-group compact class="flex flex-row"> |
|
|
|
<a-button @click="actionPushBackTubeCapAndTakeBakTube">盖试管帽,并将试管移动回试管架中</a-button> |
|
|
|
<a-input class="!w-64" prefix="TubeType : " v-model:value="pushBackTubeCapAndTakeBakTubeParams[0]"/> |
|
|
|
<a-select class="w-64" v-model:value="pushBackTubeCapAndTakeBakTubeParams[0]"> |
|
|
|
<a-select-option value="HighBlood">试管类型 : 全血5ML</a-select-option> |
|
|
|
<a-select-option value="ShortBlood">试管类型 : 全血3ML</a-select-option> |
|
|
|
<a-select-option value="Mini">试管类型 : 迷你试管</a-select-option> |
|
|
|
<a-select-option value="MiniBlood">试管类型 : 阳普管</a-select-option> |
|
|
|
<a-select-option value="BulletTube1P5">试管类型 : 子弹头试管1.5mL</a-select-option> |
|
|
|
<a-select-option value="BulletTube0P5">试管类型 : 子弹头试管0.5mL</a-select-option> |
|
|
|
</a-select> |
|
|
|
</a-input-group> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</a-col> |
|
|
|
<a-col :span="8" class="p-5"> |
|
|
|
<div class="border rounded p-5 whitespace-pre-line h-full overflow-y-auto bg-white" |
|
|
|
<div class="border rounded p-5 whitespace-pre h-full overflow-y-auto bg-white" |
|
|
|
>{{ message }}</div> |
|
|
|
</a-col> |
|
|
|
</a-row> |
|
|
@ -81,23 +113,27 @@ |
|
|
|
</template> |
|
|
|
<script setup> |
|
|
|
import ApiClient from '@/utils/ApiClient'; |
|
|
|
import { ref } from 'vue'; |
|
|
|
import { onMounted, ref } from 'vue'; |
|
|
|
import { LoadingOutlined } from '@ant-design/icons-vue'; |
|
|
|
const message = ref(''); |
|
|
|
const serviceParams = ref({}); |
|
|
|
const shakeTubeParams = ref(['', 3, 90]); |
|
|
|
const takeTubeParams = ref(['']); |
|
|
|
const takeTubeCapParams = ref(['']); |
|
|
|
const pushBackTubeCapAndTakeBakTubeParams = ref(['']); |
|
|
|
const shakeTubeParams = ref(['ShortBlood', 3, 90]); |
|
|
|
const takeTubeParams = ref(['ShortBlood', true]); |
|
|
|
const takeTubeCapParams = ref(['ShortBlood']); |
|
|
|
const pushBackTubeCapAndTakeBakTubeParams = ref(['ShortBlood']); |
|
|
|
const isActionExecuting = ref(false); |
|
|
|
onMounted(actionServiceParamsReload); |
|
|
|
|
|
|
|
async function actionServiceParamsReload() { |
|
|
|
serviceParams.value = {}; |
|
|
|
message.value = ''; |
|
|
|
let client = ApiClient.getClient(); |
|
|
|
try { |
|
|
|
let res = await client.call('tmp-test/get-service-params'); |
|
|
|
message.value = res; |
|
|
|
serviceParams.value = res.data; |
|
|
|
let res = await client.call('sample-pre-process-module-ctrl/list-options'); |
|
|
|
message.value = JSON.stringify(res, null, 2); |
|
|
|
for ( let item of res ) { |
|
|
|
serviceParams.value[item.key] = item.val; |
|
|
|
} |
|
|
|
} catch ( e ) { |
|
|
|
message.value = e.message |
|
|
|
} |
|
|
@ -107,8 +143,12 @@ async function actionServiceParamsSave() { |
|
|
|
message.value = ''; |
|
|
|
let client = ApiClient.getClient(); |
|
|
|
try { |
|
|
|
let res = await client.call('tmp-test/update-service-params', serviceParams.value); |
|
|
|
message.value = res; |
|
|
|
let options = []; |
|
|
|
for ( let key in serviceParams.value ) { |
|
|
|
options.push({name:key, value: serviceParams.value[key]}); |
|
|
|
} |
|
|
|
let res = await client.call('sample-pre-process-module-ctrl/update-options', {options}); |
|
|
|
message.value = JSON.stringify(res, null, 2); |
|
|
|
} catch ( e ) { |
|
|
|
message.value = e.message |
|
|
|
} |
|
|
@ -116,17 +156,16 @@ async function actionServiceParamsSave() { |
|
|
|
|
|
|
|
// execute service method |
|
|
|
async function executeServiceMethod( method, params=[]) { |
|
|
|
isActionExecuting.value = true; |
|
|
|
message.value = ''; |
|
|
|
let client = ApiClient.getClient(); |
|
|
|
try { |
|
|
|
let res = await client.call('tmp-test/execute-service-method', { |
|
|
|
service:'motorTubeRackMoveCtrlService', |
|
|
|
method, |
|
|
|
params |
|
|
|
}); |
|
|
|
message.value = res; |
|
|
|
let res = await client.call('sample-pre-process-module-ctrl/execute-service-method', {method,params}); |
|
|
|
message.value = null === res ? 'OK' : JSON.stringify(res, null, 2); |
|
|
|
} catch ( e ) { |
|
|
|
message.value = e.message |
|
|
|
} finally { |
|
|
|
isActionExecuting.value = false; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
@ -136,15 +175,16 @@ function actionQuickExec( action, ... params ) { |
|
|
|
|
|
|
|
function actionShakeTube() { |
|
|
|
executeServiceMethod('ShakeTube',[ |
|
|
|
serviceParams.value[0], |
|
|
|
serviceParams.value[1] * 1, |
|
|
|
serviceParams.value[2] * 1 |
|
|
|
shakeTubeParams.value[0], |
|
|
|
shakeTubeParams.value[1] * 1, |
|
|
|
shakeTubeParams.value[2] * 1 |
|
|
|
]) |
|
|
|
} |
|
|
|
|
|
|
|
function actionTakeTube() { |
|
|
|
executeServiceMethod('takeTube',[ |
|
|
|
takeTubeParams.value[0], |
|
|
|
takeTubeParams.value[1] |
|
|
|
]) |
|
|
|
} |
|
|
|
|
|
|
|