feat:样品库管理
This commit is contained in:
@@ -5,13 +5,13 @@
|
||||
<u-col span="2" class="text-center" style="position: relative">
|
||||
<slot name="tag" v-if="$slots.tag" :task="task"></slot>
|
||||
<template v-else>
|
||||
<u-icon :color="taskStyle(task)" name="tags-fill" size="40"></u-icon>
|
||||
<u-icon :color="taskStyle(task)" name="tags-fill" size="50"></u-icon>
|
||||
<text class="seq">{{ seq }}</text>
|
||||
</template>
|
||||
</u-col>
|
||||
<u-col span="10">
|
||||
<view class="fs18">{{ task.taskNo }}</view>
|
||||
<view class="mt3 mb3">{{ task.taskName }}{{ task.assayOper }}</view>
|
||||
<view class="fs20">{{ task.taskNo }}</view>
|
||||
<view class="mt8 mb8">{{ task.taskName }}{{ task.assayOper }}</view>
|
||||
<view class="x-f">
|
||||
<u-icon name="clock"></u-icon>
|
||||
<text class="ml5">{{ taskOperatorTime }}</text>
|
||||
@@ -75,8 +75,8 @@ const taskStyle = task => {
|
||||
}
|
||||
.seq {
|
||||
position: absolute;
|
||||
top: 12px;
|
||||
left: 12px;
|
||||
top: 20px;
|
||||
left: 20px;
|
||||
color: #fff;
|
||||
font-size: 11px;
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
</view>
|
||||
<u-gap height="5" bg-color="#0055A2"></u-gap>
|
||||
<scroll-view
|
||||
style="height: 75vh"
|
||||
style="height: 82vh"
|
||||
scroll-y
|
||||
scroll-with-animation
|
||||
class="content-main-left"
|
||||
@@ -37,7 +37,7 @@
|
||||
</view>
|
||||
<u-gap height="5" bg-color="#0055A2"></u-gap>
|
||||
<view>
|
||||
<scroll-view scroll-y scroll-with-animation style="height: calc(75vh - 60px)">
|
||||
<scroll-view scroll-y scroll-with-animation style="height: calc(82vh - 60px)">
|
||||
<block v-for="(sample, index) in sampleList" :key="index">
|
||||
<view class="sample-item">
|
||||
<u-row @click="showSampleDetail(sample.businessAssayTaskDataId, index)">
|
||||
@@ -50,7 +50,7 @@
|
||||
<view>
|
||||
<text class="pl5">{{ sample.sampleAssayCode }}</text>
|
||||
</view>
|
||||
<view>
|
||||
<view class="mt10">
|
||||
<text class="pl5">
|
||||
{{ sample.sampleName }}
|
||||
</text>
|
||||
@@ -58,7 +58,7 @@
|
||||
</u-col>
|
||||
<u-col span="4">
|
||||
<view>
|
||||
<text style="padding-left: 10px" v-html="sample.assayProject"></text>
|
||||
<rich-text :nodes="sample.assayProject"> </rich-text>
|
||||
</view>
|
||||
</u-col>
|
||||
</u-row>
|
||||
@@ -171,10 +171,9 @@ onBackPress(() => {
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.content-title-name {
|
||||
height: 50px;
|
||||
height: 60px;
|
||||
box-sizing: border-box;
|
||||
font-size: 20px;
|
||||
font-weight: 300;
|
||||
padding: 10px;
|
||||
text-align: center;
|
||||
display: flex;
|
||||
|
||||
@@ -8,8 +8,9 @@
|
||||
</navbar-back>
|
||||
|
||||
<u-row gutter="8">
|
||||
<u-col span="3">
|
||||
<u-col span="3" style="height: 60px">
|
||||
<up-tabs
|
||||
class="content-tabs"
|
||||
:current="activeAssayTypeIndex"
|
||||
:list="assayGroups"
|
||||
lineColor="#5ac725"
|
||||
@@ -24,15 +25,15 @@
|
||||
></up-tabs>
|
||||
<u-gap height="5" bg-color="#0055A2"></u-gap>
|
||||
</u-col>
|
||||
<u-col span="6">
|
||||
<u-col span="6" style="height: 60px">
|
||||
<view class="content-title-name">
|
||||
<view class="current-sample-code">{{ currentSampleData.sampleCode }}</view>
|
||||
<view>数据采集或录入</view>
|
||||
</view>
|
||||
<u-gap height="5" bg-color="#0055A2"></u-gap>
|
||||
</u-col>
|
||||
<u-col span="3">
|
||||
<u-dropdown style="height: 35px">
|
||||
<u-col span="3" style="height: 60px">
|
||||
<u-dropdown>
|
||||
<u-dropdown-item
|
||||
v-model="curParameterKey"
|
||||
:title="curParameterTitle"
|
||||
@@ -63,7 +64,7 @@
|
||||
<view>
|
||||
{{ sample.sampleCode }}
|
||||
</view>
|
||||
<view> {{ sample.sampleName }} </view>
|
||||
<view class="mt10"> {{ sample.sampleName }} </view>
|
||||
</view>
|
||||
</view>
|
||||
</scroll-view>
|
||||
@@ -149,8 +150,8 @@
|
||||
</view>
|
||||
</u-col>
|
||||
<u-col span="3">
|
||||
<view>
|
||||
<scroll-view class="content-right-scroll" scroll-y scroll-with-animation>
|
||||
<view class="pt10">
|
||||
<scroll-view class="content-right-scroll" scroll-y scroll-with-animation :scroll-top="scrollFieldTop">
|
||||
<view>
|
||||
<!-- <template v-for="(fields, groupIndex) in fieldGroup" :key="'group_' + groupIndex"> -->
|
||||
<!-- <view> -->
|
||||
@@ -168,7 +169,7 @@
|
||||
<template v-for="(fields, groupIndex) in currentGroup">
|
||||
<up-collapse-item v-if="fields.label !== '全部'">
|
||||
<template #title>
|
||||
<text class="font-bold">{{ fields.label }}</text>
|
||||
<text class="font-bold fs18">{{ fields.label }}</text>
|
||||
</template>
|
||||
<template v-for="(field, fieldIndex) in fields.fields" :key="groupIndex + '-' + fieldIndex">
|
||||
<view
|
||||
@@ -281,6 +282,7 @@ const taskIngredientsStatus = ref('') //配料状态
|
||||
const configReportTemplateKey = ref('')
|
||||
const elId = nx.$helper.uuid()
|
||||
const scrollTop = ref(0) //tab标题的滚动条位置
|
||||
const scrollFieldTop = ref(0)
|
||||
const menuHeight = ref(0) // 左边菜单的高度
|
||||
const menuItemHeight = ref(0) // 左边菜单item的高度
|
||||
const weightDataIsToZero = ref(false) //重量数据是否归零
|
||||
@@ -879,6 +881,7 @@ watch(
|
||||
const collapseRef = ref()
|
||||
const activeCollapses = ref([])
|
||||
function handleAssayTypeChange({ index, value }) {
|
||||
scrollFieldTop.value = 0
|
||||
activeAssayTypeKey.value = value
|
||||
activeAssayTypeIndex.value = index
|
||||
currentSampleIndex.value = 0
|
||||
@@ -1217,25 +1220,37 @@ onBackPress(() => {
|
||||
color: #fff;
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.content-title-name {
|
||||
font-size: 18px;
|
||||
font-weight: 300;
|
||||
padding: 4px 0;
|
||||
font-size: 22px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
height: 100%;
|
||||
}
|
||||
.content-tabs {
|
||||
height: 100%;
|
||||
:deep(.u-tabs__wrapper) {
|
||||
height: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
.current-sample-code {
|
||||
font-weight: bold;
|
||||
margin-right: 20px;
|
||||
}
|
||||
|
||||
:deep(.u-dropdown) {
|
||||
height: 100%;
|
||||
.u-dropdown__menu {
|
||||
height: 60px !important;
|
||||
.u-dropdown__menu__item__text {
|
||||
font-size: 18px !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
.form-item-my {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
min-height: 35px;
|
||||
font-size: 13px;
|
||||
font-size: 16px;
|
||||
border-bottom: 1px solid #dcdcdc;
|
||||
}
|
||||
.selected-field {
|
||||
@@ -1285,10 +1300,10 @@ onBackPress(() => {
|
||||
color: #c0c4cc;
|
||||
}
|
||||
.content-left-scroll {
|
||||
height: 68vh;
|
||||
height: 75vh;
|
||||
}
|
||||
.content-right-scroll {
|
||||
height: 68vh;
|
||||
height: 74vh;
|
||||
}
|
||||
.valid-warning {
|
||||
color: orange;
|
||||
@@ -1302,7 +1317,7 @@ onBackPress(() => {
|
||||
align-items: center;
|
||||
font-size: 16px;
|
||||
color: #444;
|
||||
padding: 4px 8px;
|
||||
padding: 8px 16px;
|
||||
box-sizing: border-box;
|
||||
border-bottom: 2px dotted #444;
|
||||
}
|
||||
@@ -1335,8 +1350,9 @@ onBackPress(() => {
|
||||
position: relative;
|
||||
.code {
|
||||
position: absolute;
|
||||
top: 15px;
|
||||
left: 55px;
|
||||
font-style: 18px;
|
||||
top: 25px;
|
||||
left: 70px;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1405,7 +1421,7 @@ onBackPress(() => {
|
||||
|
||||
.field-name {
|
||||
font-size: 26px;
|
||||
padding: 8px;
|
||||
padding: 16px;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
<up-badge v-if="taskList.length > 0" class="ml5" :value="taskList.length" type="warning"></up-badge>
|
||||
</view>
|
||||
<u-gap height="5" bg-color="#0055A2"></u-gap>
|
||||
<scroll-view style="height: 75vh" scroll-y scroll-with-animation class="content-main-left">
|
||||
<scroll-view style="height: 82vh" scroll-y scroll-with-animation class="content-main-left">
|
||||
<template v-if="taskList.length > 0">
|
||||
<TaskItem
|
||||
v-for="(task, index) in taskList"
|
||||
@@ -29,7 +29,7 @@
|
||||
</view>
|
||||
<u-gap height="5" bg-color="#0055A2"></u-gap>
|
||||
<view>
|
||||
<scroll-view scroll-y scroll-with-animation style="height: calc(75vh - 60px)">
|
||||
<scroll-view scroll-y scroll-with-animation style="height: calc(82vh - 60px)">
|
||||
<u-checkbox-group placement="column" v-model="checkedSampleCodes">
|
||||
<block v-for="(sample, index) in sampleList" :key="index">
|
||||
<view v-if="currentTask.reviewCount === sample.reviewCount" class="sample-item">
|
||||
@@ -52,13 +52,13 @@
|
||||
<view>
|
||||
{{ sample.sampleAssayCode }}
|
||||
</view>
|
||||
<view>
|
||||
<view class="mt10">
|
||||
{{ sample.sampleName }}
|
||||
</view>
|
||||
</u-col>
|
||||
<u-col span="6">
|
||||
<view>
|
||||
<text class="pl10" v-html="sample.assayProject"> </text>
|
||||
<rich-text :nodes="sample.assayProject"> </rich-text>
|
||||
</view>
|
||||
</u-col>
|
||||
</u-row>
|
||||
@@ -263,10 +263,9 @@ onBackPress(() => {
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.content-title-name {
|
||||
height: 50px;
|
||||
height: 60px;
|
||||
box-sizing: border-box;
|
||||
font-size: 20px;
|
||||
font-weight: 300;
|
||||
font-size: 22px;
|
||||
padding: 10px;
|
||||
text-align: center;
|
||||
display: flex;
|
||||
|
||||
Reference in New Issue
Block a user