You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

259 lines
7.2 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<template>
<div class="contents">
<div class="content left">
<div class="title">试剂称重</div>
<div class="img">
<img src="@/assets/5-试剂入库/扫描试剂瓶.png" alt="">
</div>
<div class="text">
请扫描或检测RFID
</div>
</div>
<div class="content right">
<div class="top">
<div class="title">选择称重</div>
<div class="tip">精度0.01g±0.03g</div>
<div class="show-data">
<div class="top">
<span class="num">{{ weight }}</span>
<span class="unit">(g)</span>
</div>
<div class="bottom">
<el-radio v-model="radio" label="1">余量称重</el-radio>
<el-radio v-model="radio" label="2">用量称重</el-radio>
<el-button type="primary" @click="doWeigh">开始称重</el-button>
<el-button type="primary" plain>去皮(初始化天平)</el-button>
<el-input placeholder="手动输入" />
<el-button type="warning">设置为空</el-button>
</div>
</div>
</div>
<div class="bottom">
<div class="title">详情信息</div>
<el-descriptions class="margin-top" :column="2" border>
<el-descriptions-item label-style="width:100px" span="2" label="试剂名称">{{ infoData.name }}</el-descriptions-item>
<el-descriptions-item span="2" label="英文名称">{{ infoData.english_name }}</el-descriptions-item>
<el-descriptions-item label="条码编号">{{ infoData.bar_code }}</el-descriptions-item>
<el-descriptions-item label-style="width:100px" label="CAS码">{{ infoData.cas_number }}</el-descriptions-item>
<el-descriptions-item label="试剂纯度">{{ infoData.purity }}</el-descriptions-item>
<el-descriptions-item label="试剂余量">{{ infoData.remain }}</el-descriptions-item>
<el-descriptions-item label="生产日期">{{ infoData.production_date }}</el-descriptions-item>
<el-descriptions-item label="过期日期">{{ infoData.expiration_date }}</el-descriptions-item>
<el-descriptions-item label="生产厂家">{{ infoData.manufacturer }}</el-descriptions-item>
<el-descriptions-item label="经销商">{{ infoData.distributor }}</el-descriptions-item>
<el-table-column align="center" property="status" label="状态">
<template slot-scope="scope">
<el-tag :type="statusColorMap[scope.row.status-1]">{{ statusMap[scope.row.status - 1] }}</el-tag>
</template>
</el-table-column>
<el-descriptions-item label="是否监管">{{ infoData.is_supervise }}</el-descriptions-item>
<el-descriptions-item label="所属终端">{{ infoData.client_id }}</el-descriptions-item>
<el-descriptions-item label="最后使用人">
<el-tag v-if="infoData.by_user_name">{{ infoData.by_user_name }}</el-tag>
</el-descriptions-item>
</el-descriptions>
</div>
</div>
<Scannner @getcode="getCode" />
</div>
</template>
<script>
import stringify from '@/utils/stringify'
import Scannner from '@/components/Scannner/index'
import { update_drug_remain, weigh, get_drug_info } from '@/api/reagent/weight'
import { set_drug_empty_bottle } from '@/api/reagent/management'
export default {
name: 'Weighing',
components: { Scannner },
data() {
return {
headerStyle: { 'background': '#E6E6E6' },
tableData: [],
radio: '1',
barCode: '',
infoData: '',
statusMap: ['在库', '出库', '空瓶'],
statusColorMap: ['success', '', 'warning'],
weight: '0.00'
}
},
watch: {
// 如果 `barCode` 发生改变,这个函数就会运行
// 扫码后提交后台并自动选择下一行
barCode: function(newCode, oldCode) {
if (this.$route.name === 'Receiving') {
get_drug_info(stringify({ 'bar_code': newCode })).then(res => {
this.infoData = res.data
this.$message.success(res.data.name + ' 试剂领扫描成功!')
})
} else {
this.dialogVisible = true
// drug_return(stringify({ 'bar_code': newCode, 'place': '' })).then(res => {
// this.tableData.push(res.data)
// })
}
}
},
methods: {
getCode(code) {
this.barCode = code
},
handleSetEmpty() {
if (this.infoData.medicament_id) {
const data = {
medicament_id: this.infoData.medicament_id
}
set_drug_empty_bottle(stringify(data)).then(res => {
this.$message.success(res.msg)
})
} else {
this.$message.warning('请选择试剂!')
}
},
doWeigh() {
weigh().then(
res => (this.weight = res.data)
)
},
updateDrugRemain() {
if (this.infoData.medicament_id) {
const data = {
'medicament_id': this.infoData.medicament_id,
'reain': this.weight
}
update_drug_remain(stringify(data)).then(
res => {
this.$message.success(res.msg)
}
)
} else {
this.$message.warning('请选择试剂!')
}
}
}
}
</script>
<style lang="scss" scoped>
.contents {
margin: 1rem;
display: flex;
.content {
width: 50%;
height: calc(100vh - 110px);
padding: 1rem;
background: white;
.title {
font-size: 1.25rem;
font-weight: bold;
color: #000000;
}
.tip {
width: 100%;
font-size: 0.875rem;
font-weight: 400;
color: #C0C4CC;
text-align: right;
}
.img {
text-align: center;
margin-top: 6rem;
img {
width: 25.25rem;
}
}
.text {
margin-top: 2rem;
text-align: center;
font-size: 1.8rem;
font-weight: 400;
color: #909399;
}
.show-data {
margin-top: 1rem;
.top {
.num {
width: 660px;
height: 124px;
background: linear-gradient(180deg, #FFFFFF 0%, #F2F6FC 100%);
box-shadow: inset 0px 4px 12px 1px #DCDFE6;
border-radius: 4px 4px 4px 4px;
opacity: 1;
}
}
}
.page {
text-align: center;
}
}
.left {
margin-right: 1rem;
}
.right {
background-color: #F7F7F7;
padding: 0;
.top {
background: white;
margin-bottom: 1rem;
padding: 1rem;
.show-data {
.top {
.num {
padding: 0.75rem 8.25rem 0.75rem 8.25rem;
width: 41.25rem;
height: 7.75rem;
display: inline-block;
background: linear-gradient(180deg, #FFFFFF 0%, #F2F6FC 100%);
box-shadow: inset 0rem 0.25rem 0.75rem 0.0625rem #DCDFE6;
border-radius: 0.25rem 0.25rem 0.25rem 0.25rem;
opacity: 1;
font-size: 6.25rem;
font-weight: 400;
color: #606266;
text-align: center;
}
.unit {
font-size: 32px;
font-weight: 400;
color: #909399;
}
}
}
}
.bottom {
background: white;
padding: 1rem;
.el-input {
width: 6rem;
margin-right: 1rem;
margin-left: 1rem;
}
.title {
margin-bottom: 1rem;
}
}
}
}
</style>