|
|
@@ -0,0 +1,3994 @@
|
|
|
+<style>
|
|
|
+ .input-with-select .el-select .el-input {
|
|
|
+ width: 110px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .input-with-select .el-input-group__append {
|
|
|
+ background-color: #fff;
|
|
|
+ }
|
|
|
+
|
|
|
+</style>
|
|
|
+
|
|
|
+<template>
|
|
|
+ <div>
|
|
|
+ <el-card style="min-height: calc(100vh - 92px);">
|
|
|
+ <div slot="header" style="height: 20px;">
|
|
|
+ <span style="float: left;">
|
|
|
+ <i class="icon icon-table2"></i>
|
|
|
+ </span>
|
|
|
+
|
|
|
+ <el-breadcrumb class="heading" style="float: left; margin-left: 5px">
|
|
|
+ <el-breadcrumb-item :to="{ path: '/' }">平台首页</el-breadcrumb-item>
|
|
|
+ <el-breadcrumb-item :to="{ path: '/equipment' }">容器管理</el-breadcrumb-item>
|
|
|
+ <el-breadcrumb-item>样本管理 {{titlename}}</el-breadcrumb-item>
|
|
|
+ </el-breadcrumb>
|
|
|
+
|
|
|
+ <el-alert v-if="batchitem == '1'"
|
|
|
+ :title="'支持批量存储,多个样本存储时,系统自动根据所选位置为起始位置依次进行存储!本次将批量添加' + batchstorages.length + '个样本'" type="warning" center
|
|
|
+ show-icon style="margin-bottom:5px;min-width: 1150px"></el-alert>
|
|
|
+ <span style="float: right;">
|
|
|
+ <el-button size="mini" type="primary" class="el-button--small" style="margin-left: 8px"
|
|
|
+ v-if="Apply_flag==false" @click="SaveApply">保存</el-button>
|
|
|
+ <el-button size="mini" type="primary" class="el-button--small" style="margin-left: 8px"
|
|
|
+ @click="exportVisible = true">导入</el-button>
|
|
|
+ <el-button size="mini" type="primary" class="el-button--small" style="margin-left: 8px"
|
|
|
+ @click="showBoxTemplate()">下载冻存盒导入模板</el-button>
|
|
|
+ <el-button size="mini" type="primary" class="el-button--small" style="margin-left: 8px"
|
|
|
+ @click="showEquipemplate()">下载设备模板</el-button>
|
|
|
+ <el-button size="mini" type="primary" class="el-button--small" style="margin-left: 8px" @click="refreshcbc">
|
|
|
+ 刷新容量状态</el-button>
|
|
|
+ <el-button size="mini" type="primary" class="el-button--small" style="margin-left: 8px" @click="goback">返回
|
|
|
+ </el-button>
|
|
|
+ </span>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div style="text-align:center;margin-top:-10px;margin-bottom:3px">
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="4">
|
|
|
+ <el-popover trigger="hover" width="600" placement="center">
|
|
|
+ <div>
|
|
|
+ <el-row v-show="showtsyedanguan">
|
|
|
+ <el-row :gutter="20">
|
|
|
+ <el-col :span="18">
|
|
|
+ <canvas id="canvascryobiobank97K" width="450" height="450"></canvas>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="6">
|
|
|
+ <div class="ulbgcolor" v-for="g in Math.ceil(selectdtedanguan.ColumnNum / 21)"
|
|
|
+ style="width:50px;float:left;margin-left:1px">
|
|
|
+ <div v-for="b in selectdtedanguan.ColumnNum">
|
|
|
+ <div class="hoverdiv" v-if="(b <= g*21) && (b > (g - 1)*21)"
|
|
|
+ @click="handleclk(b-1, 0, selectdtedanguan.YStation, selectdtedanguan.XStation)"
|
|
|
+ v-bind:style="{
|
|
|
+ backgroundColor: xbox == b && ybox == 1 &&
|
|
|
+ xshelf == selectdtedanguan.YStation && yshelf == selectdtedanguan.XStation ? COLORARR[2] :
|
|
|
+ (selectdtedanguan['A'+b] == -2 ? COLORARR[0] :
|
|
|
+ (selectdtedanguan['A'+b] == -1 ? COLORARR[1] :
|
|
|
+ (selectdtedanguan['A'+b] > 0 &&
|
|
|
+ selectdtedanguan['A'+b] <= 25 ? COLORARR[3] :
|
|
|
+ (selectdtedanguan['A'+b] > 25 &&
|
|
|
+ selectdtedanguan['A'+b] <= 50 ? COLORARR[4] :
|
|
|
+ (selectdtedanguan['A'+b] > 50 &&
|
|
|
+ selectdtedanguan['A'+b] <= 75 ? COLORARR[5] :
|
|
|
+ (selectdtedanguan['A'+b] > 75 ? COLORARR[6] :
|
|
|
+ COLORARR[7])))))) }" style="margin: 1px;width:50px; height:20px;"></div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ </el-row>
|
|
|
+ <el-row v-show="showcgshebei">
|
|
|
+ <table cellspacing="0" cellpadding="0">
|
|
|
+ <thead>
|
|
|
+ <th></th>
|
|
|
+ <th v-for="ind in colorTableWidth">{{ind}}</th>
|
|
|
+ </thead>
|
|
|
+ <tbody>
|
|
|
+ <tr v-for=" (xcolorTable,k1) in colorTableHeight">
|
|
|
+ <td style="text-align:center;font-size:20px;">{{numtoengs[xcolorTable-1]}}</td>
|
|
|
+ <td v-for="(ycolorTable,k2) in colorTableWidth"
|
|
|
+ v-bind:class="{ 'tdborder': true, 'tdleftborder': k2 === 0, 'tdtopborder': k1 === 0, 'tdrightborder': k2 === colorTableWidth-1 }">
|
|
|
+ <div class="ulbgcolor"
|
|
|
+ v-bind:style="{ width: unitwidth/colorTableWidth + 'px', height: unitheight/colorTableHeight + 'px' }">
|
|
|
+ <div v-for="(shelfitem, index) in samplelist">
|
|
|
+ <div v-if="samplelist[index].XStation === k2+1 && samplelist[index].YStation === k1+1">
|
|
|
+ <div v-for="rowindex in samplelist[index].RowNum">
|
|
|
+ <div class="hoverdiv" v-for=" colindex in samplelist[index].ColumnNum">
|
|
|
+ <div v-bind:style="{
|
|
|
+ width: (unitwidth/colorTableWidth/samplelist[index].ColumnNum-2.5) + 'px',
|
|
|
+ height: (unitheight/colorTableHeight/samplelist[index].RowNum-2.5) + 'px',
|
|
|
+ backgroundColor: xbox == colindex && ybox == rowindex &&
|
|
|
+ xshelf == k1+1 && yshelf == k2+1 ? COLORARR[2] :
|
|
|
+ (samplelist[index][numtoengs[rowindex-1]+colindex] == -2 ? COLORARR[0] :
|
|
|
+ (samplelist[index][numtoengs[rowindex-1]+colindex] == -1 ? COLORARR[1] :
|
|
|
+ (samplelist[index][numtoengs[rowindex-1]+colindex] > 0 &&
|
|
|
+ samplelist[index][numtoengs[rowindex-1]+colindex] <= 25 ? COLORARR[3] :
|
|
|
+ (samplelist[index][numtoengs[rowindex-1]+colindex] > 25 &&
|
|
|
+ samplelist[index][numtoengs[rowindex-1]+colindex] <= 50 ? COLORARR[4] :
|
|
|
+ (samplelist[index][numtoengs[rowindex-1]+colindex] > 50 &&
|
|
|
+ samplelist[index][numtoengs[rowindex-1]+colindex] <= 75 ? COLORARR[5] :
|
|
|
+ (samplelist[index][numtoengs[rowindex-1]+colindex] > 75 ? COLORARR[6] :
|
|
|
+ COLORARR[7])))))) }" style="margin: 1px"
|
|
|
+ @click="handleclk(colindex-1, rowindex-1, k1+1, k2+1)"></div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+ </tbody>
|
|
|
+ </table>
|
|
|
+ <div>
|
|
|
+ <img :src="fridgebottomimg" class="fridge">
|
|
|
+ </div>
|
|
|
+ </el-row>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div slot="reference" class="name-wrapper">
|
|
|
+ <i class="icon icon-location" size="small" style="color:#13CE66"></i>选择存储位置
|
|
|
+ </div>
|
|
|
+ </el-popover>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="20">
|
|
|
+ <i class="icon icon-stop2" style="color:#EAEAEA"></i>无冻存盒
|
|
|
+ <i class="icon icon-stop2" style="color:#13CE66"></i>空冻存盒
|
|
|
+ <i class="icon icon-stop2" style="color:#FF4949"></i>选中
|
|
|
+ <i class="icon icon-stop2" style="color:#D1EEEE"></i>容量(0-25%)
|
|
|
+ <i class="icon icon-stop2" style="color:#20A0FF"></i>容量(25%-50%)
|
|
|
+ <i class="icon icon-stop2" style="color:#836FFF"></i>容量(50%-75%)
|
|
|
+ <i class="icon icon-stop2" style="color:#000080"></i>容量(75%-100%)
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ </div>
|
|
|
+ <!--冰箱-->
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="11" style="margin-top: 20px">
|
|
|
+ <div class="tablebox">
|
|
|
+ <table class="sampletablemanage"
|
|
|
+ v-bind:style="{ width: yedanguanitem == 20 ? '80px' : 10*TableWidth + '%', height: yedanguanitem == 20 ? '70px' : 10*TableHeight + '%' }">
|
|
|
+ <thead>
|
|
|
+ <th></th>
|
|
|
+ <th v-for="ind in TableWidth">{{ind}}</th>
|
|
|
+ </thead>
|
|
|
+ <tbody>
|
|
|
+ <tr class="index" v-for=" yindex in TableHeight">
|
|
|
+ <td style="width:3px;text-align:center;font-size:20px;">{{numtoengs[yindex-1]}}</td>
|
|
|
+ <td v-for="xindex in TableWidth" class="visibletd">
|
|
|
+ <div v-if="getiscontainsdcgimgweiz(boxSample,xindex+'',yindex+'')"
|
|
|
+ v-for="(sdata, sindex) in boxSample" @click="tableclk(sdata, yindex,xindex)">
|
|
|
+ <span v-if="sdata.Position.split(';')[0]==xindex&&sdata.Position.split(';')[1]==yindex">
|
|
|
+ <div v-if="sdata.IState === 5">
|
|
|
+ <img :src="filehost + '/static/img/sampletypeimg/zhanwei.png'" class="image">
|
|
|
+ </div>
|
|
|
+ <div v-if="sdata.IState === 10">
|
|
|
+ <img :src=" '/img/lock.png'" class="image">
|
|
|
+ </div>
|
|
|
+ <span v-for="(type, tindex) in sampletypelist" v-else>
|
|
|
+ <div v-if="sdata.SampleType == type.value">
|
|
|
+ <img :src="filehost + type.photo" class="image">
|
|
|
+ </div>
|
|
|
+ </span>
|
|
|
+ </span>
|
|
|
+ </div>
|
|
|
+ <div v-if="!getiscontainsdcgimgweiz(boxSample,xindex+'',yindex+'')"
|
|
|
+ @click="tableclk(null, yindex,xindex)" class="divdcgnull">
|
|
|
+ </div>
|
|
|
+ <span v-if="dchxtable == xindex && dchytable == yindex">
|
|
|
+ <img :src="filehost + '/static/img/sampletypeimg/gou.png'" class="image" style="z-index:4">
|
|
|
+ </span>
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+ </tbody>
|
|
|
+ </table>
|
|
|
+ </div>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="13">
|
|
|
+ <el-card v-if="Apply_flag" class="box-card sampledetail" style="margin-top: 8px;" id="equiinfocard">
|
|
|
+ <div slot="header">
|
|
|
+ <i class="icon icon-file-text"> </i> 样本管理
|
|
|
+ <span style="float: right;">
|
|
|
+ <el-button @click="editsave()" type="primary" class="el-button--mini"
|
|
|
+ v-if="sampleform.type_flag === 'edit'">保存</el-button>
|
|
|
+ <el-button @click="dialogfusuVisible=true" type="primary" class="el-button--mini"
|
|
|
+ v-if="sampleform.type_flag === 'edit'">复苏</el-button>
|
|
|
+ <el-button @click="dialogfenzhuangVisible = true" type="primary" class="el-button--mini"
|
|
|
+ v-if="sampleform.type_flag === 'edit'">分装</el-button>
|
|
|
+ <el-button type="primary" @click="dialogtiquVisible = true" class="el-button--mini"
|
|
|
+ v-if="sampleform.type_flag === 'edit'">提取</el-button>
|
|
|
+ <el-button type="danger" class="el-button--mini" v-if="sampleform.type_flag === 'edit'"
|
|
|
+ @click="deletedata()">删除</el-button>
|
|
|
+ <el-button type="primary" class="el-button--mini" @click="savesample()"
|
|
|
+ v-if="sampleform.type_flag !== 'edit'">保存</el-button>
|
|
|
+ <el-button type="primary" class="el-button--mini" @click="saveandadd(1)"
|
|
|
+ v-if="sampleform.type_flag !== 'edit' && false">保存并新增</el-button>
|
|
|
+ <el-button type="primary" class="el-button--mini" v-if="sampleform.type_flag !== 'edit' && false"
|
|
|
+ @click="saveandadd(2)">保存并新增分管</el-button>
|
|
|
+ </span>
|
|
|
+ </div>
|
|
|
+ <!-- <div style="text-align:center;color:blue;margin:-10px 0 10px 0"> {{checkinfomsg}}</div> -->
|
|
|
+ <el-form ref="samplemanageform" :rules="sampleformrule" :model="sampleform" label-width="130px">
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="24">
|
|
|
+ <label>样本类型 : {{ sampleform.SampleTypeName }}</label>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="24">
|
|
|
+ <label>样本类型 : {{ sampleform.BarCode }}</label>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="24">
|
|
|
+ <label>位置编码 : {{ checkinfomsg }}</label>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="8">
|
|
|
+ <el-form-item label="样本条码" prop="BarCode">
|
|
|
+ <el-input v-model="sampleform.BarCode" placeholder="为空默认自动生成" style="width:68%"
|
|
|
+ :disabled="disabledbarcode || contains('1,2', batchitem)"></el-input>
|
|
|
+ <el-button class="btnbox" :disabled="disabledbtnpreopera || contains('1,2', batchitem)"
|
|
|
+ type="primary" style="width:30%;float:right" @click="openpreop()">预录入</el-button>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="8">
|
|
|
+ <el-form-item label="样本类型" required prop="SampleTypestr">
|
|
|
+ <el-select v-model="sampleform.SampleTypestr" clearable placeholder="请选择" style="width:100%"
|
|
|
+ @change="choosetype" :disabled="disabledsampletype || batchitem == '1'">
|
|
|
+ <el-option v-for="item in sampletypelist" :label="item.label" :key="item" :value="item.value">
|
|
|
+ </el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="8">
|
|
|
+ <el-form-item label="样本编码" required prop="SampleCode">
|
|
|
+ <el-input v-model="sampleform.SampleCode"
|
|
|
+ :disabled="disabledsamplecode || contains('1,2', batchitem)" @blur="blursamplecode"
|
|
|
+ placeholder="样本编码"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="8" v-if="acc != 'sBBo4' && acc != 'ssqOy' && acc != 'saB4v'">
|
|
|
+ <el-form-item label="组织器官">
|
|
|
+ <el-cascader :options="organlist2" style="width:100%" :props="sampleorganprops" change-on-select
|
|
|
+ :show-all-levels="false" v-model="selectedorgan" placeholder="请选择组织器官" @change="chooseorgange"
|
|
|
+ :disabled="disabledsamplingorgan"></el-cascader>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="8" v-if="acc != 'sBBo4' && acc != 'ssqOy' && acc != 'saB4v'">
|
|
|
+ <el-form-item label="取材部位">
|
|
|
+ <el-select v-model="sampleform.SamplingSite" clearable placeholder="取材部位" style="width:100%"
|
|
|
+ :disabled="disabledsamplingsite">
|
|
|
+ <el-option v-for="item in samplequcailist" :label="item.label" :key="item" :value="item.value">
|
|
|
+ </el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="8">
|
|
|
+ <el-form-item label="名称">
|
|
|
+ <el-input v-model="sampleform.Name" placeholder="样本名称"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="8">
|
|
|
+ <el-form-item label="接收日期">
|
|
|
+ <el-date-picker style="width: 100%" v-model="sampleform.ReceiveDatedate" type="date"
|
|
|
+ :clearable="false" placeholder="请选择接收日期" :disabled="diaabledreceiveDate"
|
|
|
+ :picker-options="pickerOptions0">
|
|
|
+ </el-date-picker>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="8">
|
|
|
+ <el-form-item label="可用容量" prop="Capacitystr" placeholder="可用容量">
|
|
|
+ <el-input v-model="sampleform.Capacitystr" :disabled="disabledcapacity" placeholder="可用容量">
|
|
|
+ </el-input>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="8">
|
|
|
+ <el-form-item label="容量单位">
|
|
|
+ <el-select v-model="sampleform.Unit" style="width:100%" clearable :disabled="disabledunit">
|
|
|
+ <el-option v-for="item in sampeunitlist" :label="item.Value" :key="item.Value"
|
|
|
+ :value="item.Value">
|
|
|
+ </el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="8">
|
|
|
+ <el-form-item label="有效日期">
|
|
|
+ <el-date-picker style="width: 70%" v-model="sampleform.ValidityDatedate" type="date"
|
|
|
+ :clearable="false" :placeholder="sampleform.Isyongjiu ? '永久' : '请选择有效日期'"
|
|
|
+ :disabled="disabledvaliditydate || sampleform.Isyongjiu" :picker-options="pickerOptions0">
|
|
|
+ </el-date-picker>
|
|
|
+ <el-checkbox v-model="sampleform.Isyongjiu" style="float:right" :disabled="diaabledyongjiu">永久
|
|
|
+ </el-checkbox>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="8">
|
|
|
+ <el-form-item label="样本内码">
|
|
|
+ <el-input v-model="sampleform.InnerCode" placeholder="样本内码"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="8" v-if="acc != 'sBBo4' && acc != 'ssqOy' && acc != 'saB4v'">
|
|
|
+ <el-form-item label="样本来源">
|
|
|
+ <el-input v-model="sampleform.SourceName" placeholder="样本来源" style="width:68%" :disabled="true">
|
|
|
+ </el-input>
|
|
|
+ <el-button type="primary" :disabled="disabledsourcebutton || contains('1,2', batchitem)"
|
|
|
+ style="width:30%;float:right" @click="dialogFormVisible2 = true" class="btnbox">选择</el-button>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="8" v-if="acc == 'sBBo4' || acc == 'saB4v'">
|
|
|
+ <el-form-item label="样本来源">
|
|
|
+ <el-input v-model="sampleform.SourceName" placeholder="样本来源" style="width:68%" :disabled="true">
|
|
|
+ </el-input>
|
|
|
+ <el-button type="primary" :disabled="disabledsourcebutton || contains('1,2', batchitem)"
|
|
|
+ style="width:30%;float:right" @click="animalSourceVisible = true" class="btnbox">选择</el-button>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="8" v-if="acc == 'ssqOy'">
|
|
|
+ <el-form-item label="样本来源">
|
|
|
+ <el-input v-model="sampleform.SourceName" placeholder="样本来源" style="width:68%" :disabled="true">
|
|
|
+ </el-input>
|
|
|
+ <el-button type="primary" :disabled="disabledsourcebutton || contains('1,2', batchitem)"
|
|
|
+ style="width:30%;float:right" @click="microSourceVisible = true" class="btnbox">选择</el-button>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="16">
|
|
|
+ <el-form-item label="备注">
|
|
|
+ <el-input v-model="sampleform.Remark" type="textarea" :rows="1" placeholder="样本备注"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="8">
|
|
|
+ <el-form-item label="录入人">
|
|
|
+ <el-select ref="reflrrselect" v-model="sampleform.CreateUserId" style="width:100%">
|
|
|
+ <el-option v-for="item in userlist" :label="item.Realname" :key="item.Id" :value="item.Id">
|
|
|
+ </el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="16">
|
|
|
+ <el-form-item label="附件上传">
|
|
|
+ <el-upload style="margin-top: 10px;" action="" ref="refuploadattach" multiple
|
|
|
+ :http-request="uploadrequest" class="attach-uploader" :show-file-list="true"
|
|
|
+ :before-upload="beforeAvatarUpload">
|
|
|
+ <i class="el-icon-plus attach-uploader-icon"></i>
|
|
|
+ </el-upload>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="8" v-if="acc =='sryms'">
|
|
|
+ <el-form-item label="所属分组">
|
|
|
+ <el-select ref="refGroup" multiple filterable default-first-option v-model="GroupIdOption"
|
|
|
+ placeholder="请选择" style="width: 100%" :disabled="disabledgroup || contains('1,2', batchitem)">
|
|
|
+ <el-option v-for="item in groupList" :key="item.Key" :label="item.Value" :value="item.Id">
|
|
|
+ </el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col>
|
|
|
+ <el-form-item label="附件说明">
|
|
|
+ <el-input v-model="sampleform.uploadedremark" type="textarea" :rows="2" placeholder="附件说明">
|
|
|
+ </el-input>
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="6" v-for="item in achmentlist" :key="item"><a
|
|
|
+ @click="clickachment(item.Host, item.FileId)">{{item.FileName}}</a></el-col>
|
|
|
+ </el-row>
|
|
|
+
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col style="margin-top:-25px;">
|
|
|
+ <el-form-item>
|
|
|
+ <el-checkbox :disabled="disabledcheckprint" v-model="sampleform.autoprintchecked" class="title">
|
|
|
+ 新增保存时打印标签(如若勾选,请确保已经设置过默认打印方案)
|
|
|
+ </el-checkbox>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+
|
|
|
+ <!-- <el-tabs tab-position="top" v-model="Tabs" v-show="typetykzlist.length > 0">
|
|
|
+ <el-tab-pane :label="groupname" :name="groupname" :key="groupname" v-for="groupname in groupnameList">
|
|
|
+ <el-card class="box-card infocard">
|
|
|
+ <el-row>
|
|
|
+ <template v-for="(item, index) in typetykzlist">
|
|
|
+ <el-col :span="(item.FieldType === '3')? 24:8" :key="index" v-if="item.GroupName === groupname">
|
|
|
+ <el-form-item :label="item.Name">
|
|
|
+ <el-input v-model="item.FieldDefault" v-if="item.FieldType === '1'"
|
|
|
+ :placeholder="'请输入'+item.Name" auto-complete="off"></el-input>
|
|
|
+
|
|
|
+ <el-select v-model="item.FieldDefault" v-if="item.FieldType === '2'" clearable
|
|
|
+ :placeholder="'请选择'+item.Name" style="width:100%">
|
|
|
+ <el-option :label="v" :value="v" :key="v" v-for=" v in item.FieldContent.split(',')">
|
|
|
+ </el-option>
|
|
|
+ </el-select>
|
|
|
+
|
|
|
+ <el-input v-model="item.FieldDefault" v-if="item.FieldType === '3'"
|
|
|
+ :placeholder="'请输入'+item.Name" type="textarea" :rows=3 auto-complete="off"></el-input>
|
|
|
+
|
|
|
+ <el-date-picker v-model="item.FieldDefault" v-if="item.FieldType === '4'" type="datetime"
|
|
|
+ style="width:100%" placeholder="选择日期"></el-date-picker>
|
|
|
+
|
|
|
+ <el-button plain v-model="item.FieldDefault" v-if="item.FieldType === '5'" type="primary"
|
|
|
+ size="mini" class="el-button--small" style="margin-left: 8px" @click="getitem(item)">上传图片
|
|
|
+ </el-button>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </template>
|
|
|
+ </el-row>
|
|
|
+ </el-card>
|
|
|
+ </el-tab-pane>
|
|
|
+ </el-tabs> -->
|
|
|
+ </el-form>
|
|
|
+ </el-card>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ </el-card>
|
|
|
+
|
|
|
+ <el-dialog title="样本批量导入" :visible.sync="exportVisible">
|
|
|
+ <el-upload :action="filehost + '/api/uploads/samplesinput'" :show-file-list="false" :data="exportfileparam"
|
|
|
+ :on-success="handleexportfileSuccess" :before-upload="beforeexportfileUpload">
|
|
|
+ <el-button size="small" type="primary">点击上传导入文件</el-button> <span>{{exportmsg}}</span>
|
|
|
+ <div slot="tip" class="el-upload__tip">只能上传由导入模板录入的xlsx文件,其中模板中带星号(*)的为必填项,不填写将会被忽略</div>
|
|
|
+ </el-upload>
|
|
|
+ <div slot="footer">
|
|
|
+ <el-button type="primary" @click="importData()">确定</el-button>
|
|
|
+ <el-button @click="exportVisible = false">取消</el-button>
|
|
|
+ </div>
|
|
|
+ </el-dialog>
|
|
|
+
|
|
|
+ <el-dialog title="请选择模版" :visible.sync="downloadEquipVisible">
|
|
|
+ <div style="margin: 5px 0;"></div>
|
|
|
+ <el-radio-group v-model="downloadTemplateName" style="margin-left:20px; padding-top: 5px; padding-bottom:5px;">
|
|
|
+ <el-radio v-for="item in downloadTemplates" style="padding-top: 10px; padding-bottom:10px;" :key="item.Name"
|
|
|
+ :label="item.Name">{{item.Name}}</el-radio>
|
|
|
+ </el-radio-group>
|
|
|
+ <div slot="footer">
|
|
|
+ <el-button type="primary" @click="downloadEquip2">确定</el-button>
|
|
|
+ <el-button @click="downloadEquipVisible = false">取消</el-button>
|
|
|
+ </div>
|
|
|
+ </el-dialog>
|
|
|
+
|
|
|
+ <el-dialog title="请选择模版" :visible.sync="downloadBoxVisible">
|
|
|
+ <div style="margin: 5px 0;"></div>
|
|
|
+ <el-radio-group v-model="downloadTemplateName" style="margin-left:20px; padding-top: 5px; padding-bottom:5px;">
|
|
|
+ <el-radio v-for="item in downloadTemplates" style="padding-top: 10px; padding-bottom:10px;" :key="item.Name"
|
|
|
+ :label="item.Name">{{item.Name}}</el-radio>
|
|
|
+ </el-radio-group>
|
|
|
+ <div slot="footer">
|
|
|
+ <el-button type="primary" @click="downloadBox2">确定</el-button>
|
|
|
+ <el-button @click="downloadBoxVisible = false">取消</el-button>
|
|
|
+ </div>
|
|
|
+ </el-dialog>
|
|
|
+
|
|
|
+ <el-dialog :title="ImageTitle" width="80%" :visible.sync="imageDialog">
|
|
|
+ <el-upload action="" :before-upload="beforeAvatarUpload" :on-preview="handlePictureCardPreview"
|
|
|
+ :http-request="uploadrequest" :on-success="handleAvatarSuccess" :on-remove="handleRemove"
|
|
|
+ :file-list="imagefilelist" list-type="picture">
|
|
|
+ <el-button size="small" type="primary">点击上传</el-button>
|
|
|
+ <div slot="tip" class="el-upload__tip">只能上传jpg/png文件</div>
|
|
|
+ </el-upload>
|
|
|
+ </el-dialog>
|
|
|
+ <el-dialog :visible.sync="dialogVisible">
|
|
|
+ <img width="100%" :src="dialogImageUrl" alt="">
|
|
|
+ </el-dialog>
|
|
|
+
|
|
|
+ <preoperation-dialog @close="custompreoperaDialogCallback" :visible.sync="dialogFormVisible"></preoperation-dialog>
|
|
|
+ <choose-source-dialog @close="customsampsourceDialogCallback" :visible.sync="dialogFormVisible2">
|
|
|
+ </choose-source-dialog>
|
|
|
+ <choose-animal-dialog @close="animalDialogCallback" :visible.sync="animalSourceVisible"></choose-animal-dialog>
|
|
|
+ <choose-micro-dialog @close="microDialogCallback" :visible.sync="microSourceVisible"></choose-micro-dialog>
|
|
|
+ <recoverydialog @close="recoverydialogcallback" :sampleinfo="sampleinfodetail" :visible.sync="dialogfusuVisible">
|
|
|
+ </recoverydialog>
|
|
|
+ <packingdialog @close="recoverydialogcallback" :sampleinfo="sampleinfodetail"
|
|
|
+ :visible.sync="dialogfenzhuangVisible"></packingdialog>
|
|
|
+ <abstractdialog @close="recoverydialogcallback" :sampleinfo="sampleinfodetail" :visible.sync="dialogtiquVisible">
|
|
|
+ </abstractdialog>
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script>
|
|
|
+ import axios from 'axios'
|
|
|
+ import store from 'store'
|
|
|
+ import uploadajax from '@/assets/js/uploadajax.js'
|
|
|
+ import PreoperationDialog from '@/components/samples/preoperation'
|
|
|
+ import ChooseSourceDialog from '@/components/samples/choosesource'
|
|
|
+ import ChooseAnimalDialog from '@/components/samples/chooseanimal'
|
|
|
+ import ChooseMicroDialog from '@/components/samples/choosemicro'
|
|
|
+ import recoverydialog from '@/components/samples/recoverydialog'
|
|
|
+ import packingdialog from '@/components/samples/packingdialog'
|
|
|
+ import abstractdialog from '@/components/samples/abstractdialog'
|
|
|
+ import {
|
|
|
+ mapGetters
|
|
|
+ } from 'vuex'
|
|
|
+ export default {
|
|
|
+ name: 'sampleoperation',
|
|
|
+ components: {
|
|
|
+ PreoperationDialog,
|
|
|
+ ChooseSourceDialog,
|
|
|
+ ChooseAnimalDialog,
|
|
|
+ ChooseMicroDialog,
|
|
|
+ recoverydialog,
|
|
|
+ packingdialog,
|
|
|
+ abstractdialog
|
|
|
+ },
|
|
|
+ computed: mapGetters({
|
|
|
+ authUser: 'authUser'
|
|
|
+ }),
|
|
|
+ data() {
|
|
|
+ var checkSampleType = (rule, value, callback) => {
|
|
|
+ let _this = this
|
|
|
+ if (value === '') {
|
|
|
+ callback(new Error('请选择样本类型'))
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if (this.xbox === -1 || this.ybox === -1 || this.yshelf === -1 || this.xshelf === -1) {
|
|
|
+ callback(new Error('冻存盒未选择'))
|
|
|
+ } else {
|
|
|
+ let parmstr = '?t=sampletype&xbox=' + this.xbox + '&ybox=' + this.ybox + '&bingxiangid=' + this.equipid +
|
|
|
+ '&xshelf=' + this.yshelf + '&yshelf=' + this.xshelf + '&value=' + value
|
|
|
+ _this.$axios.get('/sampletype/getiscanusedbystation' + parmstr, {})
|
|
|
+ .then(res => {
|
|
|
+ // response
|
|
|
+ if (res.data.code === 0) {
|
|
|
+ callback()
|
|
|
+ } else {
|
|
|
+ callback(new Error(res.data.message))
|
|
|
+ }
|
|
|
+ })
|
|
|
+ .catch(err => {
|
|
|
+ // handle error
|
|
|
+ callback(new Error('网络异常请重试'))
|
|
|
+ console.error(err)
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }
|
|
|
+ var checkCapacity = (rule, value, callback) => {
|
|
|
+ if (!isNaN(parseFloat(value)) && !isNaN(value)) {
|
|
|
+ if (parseFloat(value) < 0) {
|
|
|
+ callback(new Error('请输入大于0的数字值'))
|
|
|
+ } else {
|
|
|
+ callback()
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ callback(new Error('请输入正确数字值'))
|
|
|
+ }
|
|
|
+ }
|
|
|
+ var checkSampleCode = (rule, value, callback) => {
|
|
|
+ if (value === '') {
|
|
|
+ callback(new Error('请输入样本编码'))
|
|
|
+ return
|
|
|
+ } else {
|
|
|
+ callback()
|
|
|
+ }
|
|
|
+ }
|
|
|
+ var checkBarCode = (rule, value, callback) => {
|
|
|
+ if (this.sampleform.type_flag === 'add') {
|
|
|
+ if (value === '') {
|
|
|
+ callback()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ let _this = this
|
|
|
+ _this.$axios.get('/sampleoperation/validformdetailbarcoder?param=' + value, {})
|
|
|
+ .then(res => {
|
|
|
+ // response
|
|
|
+ if (res.data.code === 0) {
|
|
|
+ callback()
|
|
|
+ } else {
|
|
|
+ callback(new Error(res.data.message))
|
|
|
+ }
|
|
|
+ })
|
|
|
+ .catch(err => {
|
|
|
+ // handle error
|
|
|
+ callback(new Error('网络异常请重试'))
|
|
|
+ console.error(err)
|
|
|
+ })
|
|
|
+ } else {
|
|
|
+ callback()
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return {
|
|
|
+ filehost: '',
|
|
|
+ fridgebottomimg: '',
|
|
|
+ titlename: '',
|
|
|
+ equcode: '', // 容器编码
|
|
|
+ downloading: true,
|
|
|
+ fristseach: false,
|
|
|
+ disabledbarcode: false,
|
|
|
+ disabledsamplecode: false,
|
|
|
+ disabledsampletype: false,
|
|
|
+ disabledsamplingorgan: false,
|
|
|
+ disabledvaliditydate: false,
|
|
|
+ disabledsourcebutton: false,
|
|
|
+ disabledcheckprint: false,
|
|
|
+ diaabledreceiveDate: false,
|
|
|
+ diaabledyongjiu: false,
|
|
|
+ disabledsamplingsite: false,
|
|
|
+ disabledcapacity: false,
|
|
|
+ disabledunit: false,
|
|
|
+ disabledbtnpreopera: false,
|
|
|
+ disabledgroup: false,
|
|
|
+ achmentlist: [], // 附件列表
|
|
|
+ sampleform: {
|
|
|
+ BarCode: '', // 样本条码
|
|
|
+ SampleCode: '', // 样本编码
|
|
|
+ SampleTypestr: '', // 样本类型
|
|
|
+ SampleTypeName: '',
|
|
|
+ SamplingOrgan: '', // 组织器官
|
|
|
+ SamplingSite: '', // 取材部位
|
|
|
+ SamplingSiteName: '',
|
|
|
+ Name: '', // 名称
|
|
|
+ ReceiveDatedate: new Date(), // 接收日期
|
|
|
+ Capacitystr: '0', // 可用容量
|
|
|
+ Unit: '', // 单位(容量)
|
|
|
+ ValidityDatedate: '', // 有效日期
|
|
|
+ InnerCode: '', // 样本内码
|
|
|
+ SourceName: '', // 样本来源
|
|
|
+ SourceId: 0,
|
|
|
+ SourceIdCard: '',
|
|
|
+ Remark: '', // 备注
|
|
|
+ Isyongjiu: false, // 是否永久
|
|
|
+ code_default: '',
|
|
|
+ code_codeId: 0,
|
|
|
+ code_lastnum: '',
|
|
|
+ coderule_samplingorgan_flag: 0,
|
|
|
+ coderule_sampletype_flag: 0,
|
|
|
+ eid: '',
|
|
|
+ x_shelf: '',
|
|
|
+ y_shelf: '',
|
|
|
+ x_box: '',
|
|
|
+ y_box: '',
|
|
|
+ min_x: '',
|
|
|
+ min_y: '',
|
|
|
+ autoprintchecked: true,
|
|
|
+ type_flag: 'add', // 标记点预录入或者没点
|
|
|
+ saveandadd: '', // 保存并新增:1;保存新增分管:2
|
|
|
+ // SampleTypeName: '', // 样本类型名称
|
|
|
+ // zuzhiName: '', // 组织器官名称
|
|
|
+ // SamplingSiteName: '', // 取材部位名称
|
|
|
+ PositionStr: '', // 样本位置信息
|
|
|
+ uploadeds: [], // 已上传的附件
|
|
|
+ CreateUserId: 0, // 录入人
|
|
|
+ CreateBy: '', // 录入人
|
|
|
+ uploadedremark: '', // 附件说明
|
|
|
+ businessopdesc: '' // sampleBusiness表OpDesc字段
|
|
|
+ },
|
|
|
+ sampleformrule: {
|
|
|
+ SampleCode: [{
|
|
|
+ validator: checkSampleCode,
|
|
|
+ trigger: 'blur'
|
|
|
+ }],
|
|
|
+ SampleTypestr: [{
|
|
|
+ validator: checkSampleType,
|
|
|
+ trigger: 'change'
|
|
|
+ }],
|
|
|
+ Capacitystr: [{
|
|
|
+ validator: checkCapacity,
|
|
|
+ trigger: 'blur'
|
|
|
+ }],
|
|
|
+ BarCode: [{
|
|
|
+ validator: checkBarCode,
|
|
|
+ trigger: 'blur'
|
|
|
+ }]
|
|
|
+ },
|
|
|
+ pickerOptions0: { // 日期选择
|
|
|
+ disabledDate(time) {
|
|
|
+ return false // time.getTime() < Date.now() - 8.64e7
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ groupList: [],
|
|
|
+ GroupIdOption: [],
|
|
|
+ GroupId: '',
|
|
|
+ GroupName: '',
|
|
|
+
|
|
|
+ Tabs: '',
|
|
|
+ groupnameList: [], //扩展字段分组列表
|
|
|
+ imageDialog: false,
|
|
|
+ ImageTitle: '',
|
|
|
+ imagefiles: '',
|
|
|
+ imagefilelist: [],
|
|
|
+ imagenewlist: '', //删除图片时使用
|
|
|
+ dialogImageUrl: '',
|
|
|
+ dialogVisible: false,
|
|
|
+
|
|
|
+ // 选项的基础资料
|
|
|
+ sampletypelist: [],
|
|
|
+ sampeunitlist: [],
|
|
|
+ organlist: [],
|
|
|
+ samplequcailist: [],
|
|
|
+ organ: '08',
|
|
|
+ volumeunit: 'ml',
|
|
|
+ date: '',
|
|
|
+ tableColumnWidth: '200',
|
|
|
+ dialogFormVisible: false,
|
|
|
+ // 选择样本来源对话框
|
|
|
+ form2: {},
|
|
|
+ dialogFormVisible2: false,
|
|
|
+ animalSourceVisible: false,
|
|
|
+ microSourceVisible: false,
|
|
|
+ formLabelWidth2: '120px',
|
|
|
+ tableData2: [],
|
|
|
+ tableColumnWidth2: '160',
|
|
|
+ // 冰箱面板
|
|
|
+ unitwidth: 550, // 整个冰箱的尺寸
|
|
|
+ unitheight: 378,
|
|
|
+ dchxtable: -1, // 对勾所在位置
|
|
|
+ dchytable: -1,
|
|
|
+ xshelf: -1, // 选中的冻存架的位置
|
|
|
+ yshelf: -1,
|
|
|
+ xbox: -1, // 样本所在冻存盒内位置
|
|
|
+ ybox: -1,
|
|
|
+ xtable: 4, // 样本所在冻存盒内位置
|
|
|
+ ytable: 4,
|
|
|
+ xcolorTable: 4, // 选中的冻存架的位置
|
|
|
+ ycolorTable: 4,
|
|
|
+ colorTableWidth: 0, // 冰箱的相对尺寸
|
|
|
+ colorTableHeight: 0,
|
|
|
+ TableWidth: 0, // 每个冻存盒的尺寸
|
|
|
+ TableHeight: 0,
|
|
|
+ sampleIndex: 0, // 每个冻存盒所存样本的index
|
|
|
+ visibleClk: false,
|
|
|
+ visibleShelf: false,
|
|
|
+ // 提示与移动用对话框
|
|
|
+ alertVisible: false,
|
|
|
+ move: '',
|
|
|
+ // 冻存架/盒
|
|
|
+ moveVisible: false,
|
|
|
+ addShelfVisible: false,
|
|
|
+ editShelfVisible: false,
|
|
|
+ copyShelfVisible: false,
|
|
|
+ checkedShelves: [],
|
|
|
+ addBoxVisible: false,
|
|
|
+ editBoxVisible: false,
|
|
|
+ copyBoxVisible: false,
|
|
|
+ checkedBoxes: [],
|
|
|
+ labelWidth: '100px',
|
|
|
+ numtoengs: ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T',
|
|
|
+ 'U', 'V', 'W', 'X', 'Y', 'Z'
|
|
|
+ ],
|
|
|
+ checkshelvemsg: '',
|
|
|
+ checkinfomsg: '',
|
|
|
+ samplelist: [], // 新增,新的冰箱list和冻存盒list以及冻存盒样本list
|
|
|
+ selectedBox: [],
|
|
|
+ boxSample: [],
|
|
|
+ equipid: 0, // 新增,设备id
|
|
|
+ COLORARR: ['#EAEAEA', '#13CE66', '#FF4949', '#D1EEEE', '#20A0FF', '#836FFF', '#000080'],
|
|
|
+ selectedorgan: [], // 级联所选组织结构
|
|
|
+ sampleorganprops: {
|
|
|
+ value: 'code',
|
|
|
+ label: 'name',
|
|
|
+ children: 'children'
|
|
|
+ },
|
|
|
+ organlist2: [],
|
|
|
+ locationparam: { // 跳转参数
|
|
|
+ },
|
|
|
+ dialogfusuVisible: false, // 复苏弹框是否显示
|
|
|
+ dialogfenzhuangVisible: false, // 分装弹框是否显示
|
|
|
+ dialogtiquVisible: false, // 提取弹框是否显示
|
|
|
+ sampleinfodetail: {}, // 样本信息
|
|
|
+ sampleinfoid: 0, // 所选样本的id
|
|
|
+ sampleinfotype: '', // 所选样本的type
|
|
|
+ code_default: false, // 样本编码是否知道生成
|
|
|
+ typetykzlist: [], // 特有扩展
|
|
|
+ publickzlist: [], // 公共扩展
|
|
|
+ exportVisible: false, // 导入对话框
|
|
|
+ exportfileparam: {}, // 导入文件参数
|
|
|
+ exportfilepath: '', // 导入文件路径
|
|
|
+ exportmsg: '未选择文件', // 导入文件
|
|
|
+ yedanguancanvas: null, // 液氮罐cavans
|
|
|
+ yedanguanctx: null, // 液氮罐ctx
|
|
|
+ showtsyedanguan: false, // 显示特殊液氮罐形式
|
|
|
+ yeshuyedanguanimgid: '', // 特殊液氮罐图片Id
|
|
|
+ showcgshebei: false, // 显示常规形式
|
|
|
+ selectdtedanguan: {
|
|
|
+ ColumnNum: 0
|
|
|
+ }, // 选中的特殊液氮罐的冻存架
|
|
|
+ yedanguanitem: 0, // 液氮罐类型19:贝尔Cryobiobank13K液氮罐;20:贝尔Cryobiobank13K_BloodBag液氮罐
|
|
|
+ yedanguanrongqiarr: [ // 19:贝尔Cryobiobank13K液氮罐,type:1规则图形,2不规则图形
|
|
|
+ {
|
|
|
+ XStation: 4,
|
|
|
+ YStation: 1,
|
|
|
+ x: 77,
|
|
|
+ y: 76,
|
|
|
+ width: 53,
|
|
|
+ height: 53,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 1,
|
|
|
+ YStation: 1,
|
|
|
+ x: 134,
|
|
|
+ y: 45,
|
|
|
+ width: 84,
|
|
|
+ height: 84,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 2,
|
|
|
+ YStation: 1,
|
|
|
+ x: 122,
|
|
|
+ y: 133,
|
|
|
+ width: 84,
|
|
|
+ height: 84,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 3,
|
|
|
+ YStation: 1,
|
|
|
+ x: 33,
|
|
|
+ y: 133,
|
|
|
+ width: 84,
|
|
|
+ height: 84,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 1,
|
|
|
+ YStation: 2,
|
|
|
+ x: 34,
|
|
|
+ y: 234,
|
|
|
+ width: 84,
|
|
|
+ height: 84,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 2,
|
|
|
+ YStation: 2,
|
|
|
+ x: 123,
|
|
|
+ y: 234,
|
|
|
+ width: 84,
|
|
|
+ height: 84,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 3,
|
|
|
+ YStation: 2,
|
|
|
+ x: 135,
|
|
|
+ y: 322,
|
|
|
+ width: 84,
|
|
|
+ height: 84,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 4,
|
|
|
+ YStation: 2,
|
|
|
+ x: 77,
|
|
|
+ y: 322,
|
|
|
+ width: 53,
|
|
|
+ height: 53,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 1,
|
|
|
+ YStation: 3,
|
|
|
+ x: 233,
|
|
|
+ y: 322,
|
|
|
+ width: 84,
|
|
|
+ height: 84,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 2,
|
|
|
+ YStation: 3,
|
|
|
+ x: 245,
|
|
|
+ y: 233,
|
|
|
+ width: 84,
|
|
|
+ height: 84,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 3,
|
|
|
+ YStation: 3,
|
|
|
+ x: 333,
|
|
|
+ y: 233,
|
|
|
+ width: 84,
|
|
|
+ height: 84,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 4,
|
|
|
+ YStation: 3,
|
|
|
+ x: 322,
|
|
|
+ y: 322,
|
|
|
+ width: 53,
|
|
|
+ height: 53,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 1,
|
|
|
+ YStation: 4,
|
|
|
+ x: 333,
|
|
|
+ y: 134,
|
|
|
+ width: 84,
|
|
|
+ height: 84,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 2,
|
|
|
+ YStation: 4,
|
|
|
+ x: 245,
|
|
|
+ y: 134,
|
|
|
+ width: 84,
|
|
|
+ height: 84,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 3,
|
|
|
+ YStation: 4,
|
|
|
+ x: 232,
|
|
|
+ y: 45,
|
|
|
+ width: 84,
|
|
|
+ height: 84,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 4,
|
|
|
+ YStation: 4,
|
|
|
+ x: 321,
|
|
|
+ y: 77,
|
|
|
+ width: 53,
|
|
|
+ height: 53,
|
|
|
+ type: 1
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ yedanguanrongqiarr_13kbloodbag: [ // 20:贝尔Cryobiobank13K_BloodBag液氮罐
|
|
|
+ {
|
|
|
+ XStation: 1,
|
|
|
+ YStation: 1,
|
|
|
+ x: 208,
|
|
|
+ y: 104,
|
|
|
+ width: 6,
|
|
|
+ height: 95,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 2,
|
|
|
+ YStation: 1,
|
|
|
+ x: 200,
|
|
|
+ y: 104,
|
|
|
+ width: 6,
|
|
|
+ height: 95,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 3,
|
|
|
+ YStation: 1,
|
|
|
+ x: 192,
|
|
|
+ y: 104,
|
|
|
+ width: 6,
|
|
|
+ height: 95,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 4,
|
|
|
+ YStation: 1,
|
|
|
+ x: 183,
|
|
|
+ y: 119,
|
|
|
+ width: 6,
|
|
|
+ height: 96,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 5,
|
|
|
+ YStation: 1,
|
|
|
+ x: 175,
|
|
|
+ y: 119,
|
|
|
+ width: 6,
|
|
|
+ height: 96,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 6,
|
|
|
+ YStation: 1,
|
|
|
+ x: 165,
|
|
|
+ y: 119,
|
|
|
+ width: 6,
|
|
|
+ height: 96,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 7,
|
|
|
+ YStation: 1,
|
|
|
+ x: 157,
|
|
|
+ y: 119,
|
|
|
+ width: 6,
|
|
|
+ height: 96,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 8,
|
|
|
+ YStation: 1,
|
|
|
+ x: 149,
|
|
|
+ y: 119,
|
|
|
+ width: 6,
|
|
|
+ height: 96,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 9,
|
|
|
+ YStation: 1,
|
|
|
+ x: 141,
|
|
|
+ y: 119,
|
|
|
+ width: 6,
|
|
|
+ height: 96,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 10,
|
|
|
+ YStation: 1,
|
|
|
+ x: 133,
|
|
|
+ y: 119,
|
|
|
+ width: 6,
|
|
|
+ height: 96,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 11,
|
|
|
+ YStation: 1,
|
|
|
+ x: 125,
|
|
|
+ y: 119,
|
|
|
+ width: 6,
|
|
|
+ height: 96,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 12,
|
|
|
+ YStation: 1,
|
|
|
+ x: 116,
|
|
|
+ y: 119,
|
|
|
+ width: 6,
|
|
|
+ height: 96,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 13,
|
|
|
+ YStation: 1,
|
|
|
+ x: 108,
|
|
|
+ y: 119,
|
|
|
+ width: 6,
|
|
|
+ height: 96,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 14,
|
|
|
+ YStation: 1,
|
|
|
+ x: 100,
|
|
|
+ y: 119,
|
|
|
+ width: 6,
|
|
|
+ height: 96,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 15,
|
|
|
+ YStation: 1,
|
|
|
+ x: 91,
|
|
|
+ y: 119,
|
|
|
+ width: 6,
|
|
|
+ height: 96,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 16,
|
|
|
+ YStation: 1,
|
|
|
+ x: 82,
|
|
|
+ y: 119,
|
|
|
+ width: 6,
|
|
|
+ height: 96,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 17,
|
|
|
+ YStation: 1,
|
|
|
+ x: 74,
|
|
|
+ y: 119,
|
|
|
+ width: 6,
|
|
|
+ height: 96,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 18,
|
|
|
+ YStation: 1,
|
|
|
+ x: 66,
|
|
|
+ y: 119,
|
|
|
+ width: 6,
|
|
|
+ height: 96,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 19,
|
|
|
+ YStation: 1,
|
|
|
+ x: 58,
|
|
|
+ y: 119,
|
|
|
+ width: 6,
|
|
|
+ height: 96,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 20,
|
|
|
+ YStation: 1,
|
|
|
+ x: 49,
|
|
|
+ y: 124,
|
|
|
+ width: 6,
|
|
|
+ height: 96,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 21,
|
|
|
+ YStation: 1,
|
|
|
+ x1: 37,
|
|
|
+ y1: 122,
|
|
|
+ x2: 18,
|
|
|
+ y2: 220,
|
|
|
+ x3: 25,
|
|
|
+ y3: 221,
|
|
|
+ x4: 45,
|
|
|
+ y4: 124,
|
|
|
+ type: 2
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 22,
|
|
|
+ YStation: 1,
|
|
|
+ x: 93,
|
|
|
+ y: 111,
|
|
|
+ width: 96,
|
|
|
+ height: 7,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 23,
|
|
|
+ YStation: 1,
|
|
|
+ x: 93,
|
|
|
+ y: 103,
|
|
|
+ width: 96,
|
|
|
+ height: 7,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 24,
|
|
|
+ YStation: 1,
|
|
|
+ x: 118,
|
|
|
+ y: 95,
|
|
|
+ width: 96,
|
|
|
+ height: 7,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 25,
|
|
|
+ YStation: 1,
|
|
|
+ x: 118,
|
|
|
+ y: 86,
|
|
|
+ width: 96,
|
|
|
+ height: 7,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 26,
|
|
|
+ YStation: 1,
|
|
|
+ x: 118,
|
|
|
+ y: 77,
|
|
|
+ width: 96,
|
|
|
+ height: 7,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 27,
|
|
|
+ YStation: 1,
|
|
|
+ x: 118,
|
|
|
+ y: 69,
|
|
|
+ width: 96,
|
|
|
+ height: 7,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 28,
|
|
|
+ YStation: 1,
|
|
|
+ x: 118,
|
|
|
+ y: 60,
|
|
|
+ width: 96,
|
|
|
+ height: 7,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 29,
|
|
|
+ YStation: 1,
|
|
|
+ x: 123,
|
|
|
+ y: 49,
|
|
|
+ width: 96,
|
|
|
+ height: 7,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 30,
|
|
|
+ YStation: 1,
|
|
|
+ x: 123,
|
|
|
+ y: 40,
|
|
|
+ width: 96,
|
|
|
+ height: 7,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 31,
|
|
|
+ YStation: 1,
|
|
|
+ x: 123,
|
|
|
+ y: 31,
|
|
|
+ width: 96,
|
|
|
+ height: 7,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 32,
|
|
|
+ YStation: 1,
|
|
|
+ x1: 110,
|
|
|
+ y1: 48,
|
|
|
+ x2: 68,
|
|
|
+ y2: 111,
|
|
|
+ x3: 75,
|
|
|
+ y3: 114,
|
|
|
+ x4: 116,
|
|
|
+ y4: 52,
|
|
|
+ type: 2
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 33,
|
|
|
+ YStation: 1,
|
|
|
+ x1: 100,
|
|
|
+ y1: 48,
|
|
|
+ x2: 60,
|
|
|
+ y2: 111,
|
|
|
+ x3: 68,
|
|
|
+ y3: 114,
|
|
|
+ x4: 108,
|
|
|
+ y4: 52,
|
|
|
+ type: 2
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 1,
|
|
|
+ YStation: 2,
|
|
|
+ x: 208,
|
|
|
+ y: 251,
|
|
|
+ width: 6,
|
|
|
+ height: 95,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 2,
|
|
|
+ YStation: 2,
|
|
|
+ x: 200,
|
|
|
+ y: 251,
|
|
|
+ width: 6,
|
|
|
+ height: 95,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 3,
|
|
|
+ YStation: 2,
|
|
|
+ x: 192,
|
|
|
+ y: 251,
|
|
|
+ width: 6,
|
|
|
+ height: 95,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 4,
|
|
|
+ YStation: 2,
|
|
|
+ x: 183,
|
|
|
+ y: 234,
|
|
|
+ width: 6,
|
|
|
+ height: 95,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 5,
|
|
|
+ YStation: 2,
|
|
|
+ x: 175,
|
|
|
+ y: 234,
|
|
|
+ width: 6,
|
|
|
+ height: 95,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 6,
|
|
|
+ YStation: 2,
|
|
|
+ x: 166,
|
|
|
+ y: 234,
|
|
|
+ width: 6,
|
|
|
+ height: 95,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 7,
|
|
|
+ YStation: 2,
|
|
|
+ x: 158,
|
|
|
+ y: 234,
|
|
|
+ width: 6,
|
|
|
+ height: 95,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 8,
|
|
|
+ YStation: 2,
|
|
|
+ x: 149,
|
|
|
+ y: 234,
|
|
|
+ width: 6,
|
|
|
+ height: 95,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 9,
|
|
|
+ YStation: 2,
|
|
|
+ x: 141,
|
|
|
+ y: 234,
|
|
|
+ width: 6,
|
|
|
+ height: 95,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 10,
|
|
|
+ YStation: 2,
|
|
|
+ x: 133,
|
|
|
+ y: 234,
|
|
|
+ width: 6,
|
|
|
+ height: 95,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 11,
|
|
|
+ YStation: 2,
|
|
|
+ x: 125,
|
|
|
+ y: 234,
|
|
|
+ width: 6,
|
|
|
+ height: 95,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 12,
|
|
|
+ YStation: 2,
|
|
|
+ x: 116,
|
|
|
+ y: 234,
|
|
|
+ width: 6,
|
|
|
+ height: 95,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 13,
|
|
|
+ YStation: 2,
|
|
|
+ x: 108,
|
|
|
+ y: 234,
|
|
|
+ width: 6,
|
|
|
+ height: 95,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 14,
|
|
|
+ YStation: 2,
|
|
|
+ x: 100,
|
|
|
+ y: 234,
|
|
|
+ width: 6,
|
|
|
+ height: 95,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 15,
|
|
|
+ YStation: 2,
|
|
|
+ x: 91,
|
|
|
+ y: 234,
|
|
|
+ width: 6,
|
|
|
+ height: 95,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 16,
|
|
|
+ YStation: 2,
|
|
|
+ x: 82,
|
|
|
+ y: 234,
|
|
|
+ width: 6,
|
|
|
+ height: 95,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 17,
|
|
|
+ YStation: 2,
|
|
|
+ x: 74,
|
|
|
+ y: 234,
|
|
|
+ width: 6,
|
|
|
+ height: 95,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 18,
|
|
|
+ YStation: 2,
|
|
|
+ x: 66,
|
|
|
+ y: 234,
|
|
|
+ width: 6,
|
|
|
+ height: 95,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 19,
|
|
|
+ YStation: 2,
|
|
|
+ x: 58,
|
|
|
+ y: 234,
|
|
|
+ width: 6,
|
|
|
+ height: 95,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 20,
|
|
|
+ YStation: 2,
|
|
|
+ x: 49,
|
|
|
+ y: 228,
|
|
|
+ width: 6,
|
|
|
+ height: 95,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 21,
|
|
|
+ YStation: 2,
|
|
|
+ x1: 18,
|
|
|
+ y1: 232,
|
|
|
+ x2: 37,
|
|
|
+ y2: 324,
|
|
|
+ x3: 45,
|
|
|
+ y3: 325,
|
|
|
+ x4: 25,
|
|
|
+ y4: 232,
|
|
|
+ type: 2
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 22,
|
|
|
+ YStation: 2,
|
|
|
+ x: 93,
|
|
|
+ y: 332,
|
|
|
+ width: 96,
|
|
|
+ height: 7,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 23,
|
|
|
+ YStation: 2,
|
|
|
+ x: 93,
|
|
|
+ y: 340,
|
|
|
+ width: 96,
|
|
|
+ height: 7,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 24,
|
|
|
+ YStation: 2,
|
|
|
+ x: 118,
|
|
|
+ y: 348,
|
|
|
+ width: 96,
|
|
|
+ height: 7,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 25,
|
|
|
+ YStation: 2,
|
|
|
+ x: 118,
|
|
|
+ y: 356,
|
|
|
+ width: 96,
|
|
|
+ height: 7,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 26,
|
|
|
+ YStation: 2,
|
|
|
+ x: 118,
|
|
|
+ y: 365,
|
|
|
+ width: 96,
|
|
|
+ height: 7,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 27,
|
|
|
+ YStation: 2,
|
|
|
+ x: 118,
|
|
|
+ y: 373,
|
|
|
+ width: 96,
|
|
|
+ height: 7,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 28,
|
|
|
+ YStation: 2,
|
|
|
+ x: 118,
|
|
|
+ y: 381,
|
|
|
+ width: 96,
|
|
|
+ height: 7,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 29,
|
|
|
+ YStation: 2,
|
|
|
+ x: 123,
|
|
|
+ y: 393,
|
|
|
+ width: 96,
|
|
|
+ height: 7,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 30,
|
|
|
+ YStation: 2,
|
|
|
+ x: 123,
|
|
|
+ y: 402,
|
|
|
+ width: 96,
|
|
|
+ height: 7,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 31,
|
|
|
+ YStation: 2,
|
|
|
+ x: 123,
|
|
|
+ y: 410,
|
|
|
+ width: 96,
|
|
|
+ height: 7,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 32,
|
|
|
+ YStation: 2,
|
|
|
+ x1: 68,
|
|
|
+ y1: 337,
|
|
|
+ x2: 110,
|
|
|
+ y2: 401,
|
|
|
+ x3: 116,
|
|
|
+ y3: 398,
|
|
|
+ x4: 75,
|
|
|
+ y4: 333,
|
|
|
+ type: 2
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 33,
|
|
|
+ YStation: 2,
|
|
|
+ x1: 60,
|
|
|
+ y1: 337,
|
|
|
+ x2: 100,
|
|
|
+ y2: 401,
|
|
|
+ x3: 108,
|
|
|
+ y3: 398,
|
|
|
+ x4: 68,
|
|
|
+ y4: 333,
|
|
|
+ type: 2
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 1,
|
|
|
+ YStation: 3,
|
|
|
+ x: 233,
|
|
|
+ y: 251,
|
|
|
+ width: 6,
|
|
|
+ height: 95,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 2,
|
|
|
+ YStation: 3,
|
|
|
+ x: 242,
|
|
|
+ y: 251,
|
|
|
+ width: 6,
|
|
|
+ height: 95,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 3,
|
|
|
+ YStation: 3,
|
|
|
+ x: 250,
|
|
|
+ y: 251,
|
|
|
+ width: 6,
|
|
|
+ height: 95,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 4,
|
|
|
+ YStation: 3,
|
|
|
+ x: 258,
|
|
|
+ y: 234,
|
|
|
+ width: 6,
|
|
|
+ height: 95,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 5,
|
|
|
+ YStation: 3,
|
|
|
+ x: 267,
|
|
|
+ y: 234,
|
|
|
+ width: 6,
|
|
|
+ height: 95,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 6,
|
|
|
+ YStation: 3,
|
|
|
+ x: 275,
|
|
|
+ y: 234,
|
|
|
+ width: 6,
|
|
|
+ height: 95,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 7,
|
|
|
+ YStation: 3,
|
|
|
+ x: 283,
|
|
|
+ y: 234,
|
|
|
+ width: 6,
|
|
|
+ height: 95,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 8,
|
|
|
+ YStation: 3,
|
|
|
+ x: 292,
|
|
|
+ y: 234,
|
|
|
+ width: 6,
|
|
|
+ height: 95,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 9,
|
|
|
+ YStation: 3,
|
|
|
+ x: 300,
|
|
|
+ y: 234,
|
|
|
+ width: 6,
|
|
|
+ height: 95,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 10,
|
|
|
+ YStation: 3,
|
|
|
+ x: 308,
|
|
|
+ y: 234,
|
|
|
+ width: 6,
|
|
|
+ height: 95,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 11,
|
|
|
+ YStation: 3,
|
|
|
+ x: 317,
|
|
|
+ y: 234,
|
|
|
+ width: 6,
|
|
|
+ height: 95,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 12,
|
|
|
+ YStation: 3,
|
|
|
+ x: 325,
|
|
|
+ y: 234,
|
|
|
+ width: 6,
|
|
|
+ height: 95,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 13,
|
|
|
+ YStation: 3,
|
|
|
+ x: 333,
|
|
|
+ y: 234,
|
|
|
+ width: 6,
|
|
|
+ height: 95,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 14,
|
|
|
+ YStation: 3,
|
|
|
+ x: 341,
|
|
|
+ y: 234,
|
|
|
+ width: 6,
|
|
|
+ height: 95,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 15,
|
|
|
+ YStation: 3,
|
|
|
+ x: 350,
|
|
|
+ y: 234,
|
|
|
+ width: 6,
|
|
|
+ height: 95,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 16,
|
|
|
+ YStation: 3,
|
|
|
+ x: 358,
|
|
|
+ y: 234,
|
|
|
+ width: 6,
|
|
|
+ height: 95,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 17,
|
|
|
+ YStation: 3,
|
|
|
+ x: 366,
|
|
|
+ y: 234,
|
|
|
+ width: 6,
|
|
|
+ height: 95,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 18,
|
|
|
+ YStation: 3,
|
|
|
+ x: 374,
|
|
|
+ y: 234,
|
|
|
+ width: 6,
|
|
|
+ height: 95,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 19,
|
|
|
+ YStation: 3,
|
|
|
+ x: 383,
|
|
|
+ y: 234,
|
|
|
+ width: 6,
|
|
|
+ height: 95,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 20,
|
|
|
+ YStation: 3,
|
|
|
+ x: 392,
|
|
|
+ y: 228,
|
|
|
+ width: 6,
|
|
|
+ height: 95,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 21,
|
|
|
+ YStation: 3,
|
|
|
+ x1: 422,
|
|
|
+ y1: 228,
|
|
|
+ x2: 402,
|
|
|
+ y2: 324,
|
|
|
+ x3: 410,
|
|
|
+ y3: 326,
|
|
|
+ x4: 430,
|
|
|
+ y4: 230,
|
|
|
+ type: 2
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 22,
|
|
|
+ YStation: 3,
|
|
|
+ x: 258,
|
|
|
+ y: 332,
|
|
|
+ width: 96,
|
|
|
+ height: 7,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 23,
|
|
|
+ YStation: 3,
|
|
|
+ x: 258,
|
|
|
+ y: 340,
|
|
|
+ width: 96,
|
|
|
+ height: 7,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 24,
|
|
|
+ YStation: 3,
|
|
|
+ x: 233,
|
|
|
+ y: 348,
|
|
|
+ width: 96,
|
|
|
+ height: 7,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 25,
|
|
|
+ YStation: 3,
|
|
|
+ x: 233,
|
|
|
+ y: 356,
|
|
|
+ width: 96,
|
|
|
+ height: 7,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 26,
|
|
|
+ YStation: 3,
|
|
|
+ x: 233,
|
|
|
+ y: 365,
|
|
|
+ width: 96,
|
|
|
+ height: 7,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 27,
|
|
|
+ YStation: 3,
|
|
|
+ x: 233,
|
|
|
+ y: 373,
|
|
|
+ width: 96,
|
|
|
+ height: 7,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 28,
|
|
|
+ YStation: 3,
|
|
|
+ x: 233,
|
|
|
+ y: 381,
|
|
|
+ width: 96,
|
|
|
+ height: 7,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 29,
|
|
|
+ YStation: 3,
|
|
|
+ x: 229,
|
|
|
+ y: 393,
|
|
|
+ width: 96,
|
|
|
+ height: 7,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 30,
|
|
|
+ YStation: 3,
|
|
|
+ x: 229,
|
|
|
+ y: 402,
|
|
|
+ width: 96,
|
|
|
+ height: 7,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 31,
|
|
|
+ YStation: 3,
|
|
|
+ x: 229,
|
|
|
+ y: 410,
|
|
|
+ width: 96,
|
|
|
+ height: 7,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 32,
|
|
|
+ YStation: 3,
|
|
|
+ x1: 368,
|
|
|
+ y1: 334,
|
|
|
+ x2: 330,
|
|
|
+ y2: 397,
|
|
|
+ x3: 337,
|
|
|
+ y3: 400,
|
|
|
+ x4: 376,
|
|
|
+ y4: 338,
|
|
|
+ type: 2
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 33,
|
|
|
+ YStation: 3,
|
|
|
+ x1: 381,
|
|
|
+ y1: 334,
|
|
|
+ x2: 341,
|
|
|
+ y2: 397,
|
|
|
+ x3: 348,
|
|
|
+ y3: 400,
|
|
|
+ x4: 387,
|
|
|
+ y4: 340,
|
|
|
+ type: 2
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 1,
|
|
|
+ YStation: 4,
|
|
|
+ x: 233,
|
|
|
+ y: 103,
|
|
|
+ width: 6,
|
|
|
+ height: 95,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 2,
|
|
|
+ YStation: 4,
|
|
|
+ x: 241,
|
|
|
+ y: 103,
|
|
|
+ width: 6,
|
|
|
+ height: 95,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 3,
|
|
|
+ YStation: 4,
|
|
|
+ x: 249,
|
|
|
+ y: 103,
|
|
|
+ width: 6,
|
|
|
+ height: 95,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 4,
|
|
|
+ YStation: 4,
|
|
|
+ x: 258,
|
|
|
+ y: 119,
|
|
|
+ width: 6,
|
|
|
+ height: 96,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 5,
|
|
|
+ YStation: 4,
|
|
|
+ x: 266,
|
|
|
+ y: 119,
|
|
|
+ width: 6,
|
|
|
+ height: 95,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 6,
|
|
|
+ YStation: 4,
|
|
|
+ x: 275,
|
|
|
+ y: 119,
|
|
|
+ width: 6,
|
|
|
+ height: 95,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 7,
|
|
|
+ YStation: 4,
|
|
|
+ x: 283,
|
|
|
+ y: 119,
|
|
|
+ width: 6,
|
|
|
+ height: 95,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 8,
|
|
|
+ YStation: 4,
|
|
|
+ x: 291,
|
|
|
+ y: 119,
|
|
|
+ width: 6,
|
|
|
+ height: 95,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 9,
|
|
|
+ YStation: 4,
|
|
|
+ x: 300,
|
|
|
+ y: 119,
|
|
|
+ width: 6,
|
|
|
+ height: 95,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 10,
|
|
|
+ YStation: 4,
|
|
|
+ x: 308,
|
|
|
+ y: 119,
|
|
|
+ width: 6,
|
|
|
+ height: 95,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 11,
|
|
|
+ YStation: 4,
|
|
|
+ x: 317,
|
|
|
+ y: 119,
|
|
|
+ width: 6,
|
|
|
+ height: 95,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 12,
|
|
|
+ YStation: 4,
|
|
|
+ x: 325,
|
|
|
+ y: 119,
|
|
|
+ width: 6,
|
|
|
+ height: 95,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 13,
|
|
|
+ YStation: 4,
|
|
|
+ x: 333,
|
|
|
+ y: 119,
|
|
|
+ width: 6,
|
|
|
+ height: 95,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 14,
|
|
|
+ YStation: 4,
|
|
|
+ x: 341,
|
|
|
+ y: 119,
|
|
|
+ width: 6,
|
|
|
+ height: 95,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 15,
|
|
|
+ YStation: 4,
|
|
|
+ x: 350,
|
|
|
+ y: 119,
|
|
|
+ width: 6,
|
|
|
+ height: 95,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 16,
|
|
|
+ YStation: 4,
|
|
|
+ x: 358,
|
|
|
+ y: 119,
|
|
|
+ width: 6,
|
|
|
+ height: 95,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 17,
|
|
|
+ YStation: 4,
|
|
|
+ x: 366,
|
|
|
+ y: 119,
|
|
|
+ width: 6,
|
|
|
+ height: 95,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 18,
|
|
|
+ YStation: 4,
|
|
|
+ x: 374,
|
|
|
+ y: 119,
|
|
|
+ width: 6,
|
|
|
+ height: 95,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 19,
|
|
|
+ YStation: 4,
|
|
|
+ x: 383,
|
|
|
+ y: 119,
|
|
|
+ width: 6,
|
|
|
+ height: 95,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 20,
|
|
|
+ YStation: 4,
|
|
|
+ x: 392,
|
|
|
+ y: 124,
|
|
|
+ width: 6,
|
|
|
+ height: 95,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 21,
|
|
|
+ YStation: 4,
|
|
|
+ x1: 400,
|
|
|
+ y1: 124,
|
|
|
+ x2: 422,
|
|
|
+ y2: 220,
|
|
|
+ x3: 430,
|
|
|
+ y3: 219,
|
|
|
+ x4: 409,
|
|
|
+ y4: 122,
|
|
|
+ type: 2
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 22,
|
|
|
+ YStation: 4,
|
|
|
+ x: 258,
|
|
|
+ y: 111,
|
|
|
+ width: 96,
|
|
|
+ height: 7,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 23,
|
|
|
+ YStation: 4,
|
|
|
+ x: 258,
|
|
|
+ y: 103,
|
|
|
+ width: 96,
|
|
|
+ height: 7,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 24,
|
|
|
+ YStation: 4,
|
|
|
+ x: 233,
|
|
|
+ y: 95,
|
|
|
+ width: 96,
|
|
|
+ height: 7,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 25,
|
|
|
+ YStation: 4,
|
|
|
+ x: 233,
|
|
|
+ y: 86,
|
|
|
+ width: 96,
|
|
|
+ height: 7,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 26,
|
|
|
+ YStation: 4,
|
|
|
+ x: 233,
|
|
|
+ y: 77,
|
|
|
+ width: 96,
|
|
|
+ height: 7,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 27,
|
|
|
+ YStation: 4,
|
|
|
+ x: 233,
|
|
|
+ y: 69,
|
|
|
+ width: 96,
|
|
|
+ height: 7,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 28,
|
|
|
+ YStation: 4,
|
|
|
+ x: 233,
|
|
|
+ y: 60,
|
|
|
+ width: 96,
|
|
|
+ height: 7,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 29,
|
|
|
+ YStation: 4,
|
|
|
+ x: 228,
|
|
|
+ y: 49,
|
|
|
+ width: 96,
|
|
|
+ height: 7,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 30,
|
|
|
+ YStation: 4,
|
|
|
+ x: 228,
|
|
|
+ y: 40,
|
|
|
+ width: 96,
|
|
|
+ height: 7,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 31,
|
|
|
+ YStation: 4,
|
|
|
+ x: 228,
|
|
|
+ y: 31,
|
|
|
+ width: 96,
|
|
|
+ height: 7,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 32,
|
|
|
+ YStation: 4,
|
|
|
+ x1: 327,
|
|
|
+ y1: 49,
|
|
|
+ x2: 367,
|
|
|
+ y2: 113,
|
|
|
+ x3: 374,
|
|
|
+ y3: 110,
|
|
|
+ x4: 335,
|
|
|
+ y4: 46,
|
|
|
+ type: 2
|
|
|
+ },
|
|
|
+ {
|
|
|
+ XStation: 33,
|
|
|
+ YStation: 4,
|
|
|
+ x1: 338,
|
|
|
+ y1: 49,
|
|
|
+ x2: 378,
|
|
|
+ y2: 113,
|
|
|
+ x3: 385,
|
|
|
+ y3: 110,
|
|
|
+ x4: 346,
|
|
|
+ y4: 46,
|
|
|
+ type: 2
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ waituploads: [], // 等待上传的附件列表
|
|
|
+ userlist: [], // 录入人
|
|
|
+ downloadTemplates: [{
|
|
|
+ Name: "默认模版"
|
|
|
+ }],
|
|
|
+ downloadEquipVisible: false,
|
|
|
+ downloadBoxVisible: false,
|
|
|
+ downloadTemplateName: '',
|
|
|
+ batchitem: '0', // 批量添加类型,1:由交接单存储过来,带有样本类型,样本来源信息;2:有制备存储过来,不带样本类型等信息
|
|
|
+ batchstorages: [], //批量存储的样本
|
|
|
+ Apply_flag: true,
|
|
|
+ acc: ''
|
|
|
+ }
|
|
|
+ },
|
|
|
+ created() {
|
|
|
+ // store.set('samplesstoredlist999', this.batchstorages)
|
|
|
+ this.filehost = process.env.imgserverhost
|
|
|
+ this.acc = this.authUser.Profile.AccCode
|
|
|
+ // 判断是否是批量操作传值过来
|
|
|
+ if (this.$route.query.batchitem) {
|
|
|
+ this.batchitem = this.$route.query.batchitem
|
|
|
+ this.sampleform.businessopdesc = this.$route.query.desc
|
|
|
+ if (store.get('batchstorages')) {
|
|
|
+ this.batchstorages = store.get('batchstorages')
|
|
|
+ }
|
|
|
+ if (this.$route.query.apply) {
|
|
|
+ this.Apply_flag = false
|
|
|
+ }
|
|
|
+ }
|
|
|
+ let eid = this.$route.params.opera
|
|
|
+ this.equipid = eid
|
|
|
+ this.getfridgeimg(eid)
|
|
|
+ this.initData(eid)
|
|
|
+ this.getsametypetreelist()
|
|
|
+ this.getType()
|
|
|
+ // 获取公共扩展
|
|
|
+ // this.getpublickz()
|
|
|
+ this.getsampetypeunit()
|
|
|
+ // 获取自动生成编码数据
|
|
|
+ this.getautocodedata()
|
|
|
+ this.getisAutoPrint()
|
|
|
+ // 获取录入人
|
|
|
+ this.getuserlist()
|
|
|
+ // 获取分组列表
|
|
|
+ this.getGrouplist()
|
|
|
+ },
|
|
|
+ watch: {
|
|
|
+ '$route'(to, from) {
|
|
|
+ this.location()
|
|
|
+ }
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ initData(eid) {
|
|
|
+ let _this = this
|
|
|
+ // request
|
|
|
+ // 获取冻存架信息
|
|
|
+ _this.$axios.get('/shelfset/equipmentdraw/' + eid, {})
|
|
|
+ .then(res => {
|
|
|
+ // response
|
|
|
+ _this.downloading = false
|
|
|
+ _this.samplelist = res.data.items
|
|
|
+ _this.colorTableHeight = res.data.dimension[1]
|
|
|
+ _this.colorTableWidth = res.data.dimension[0]
|
|
|
+ _this.location()
|
|
|
+ })
|
|
|
+ .catch(err => {
|
|
|
+ // handle error
|
|
|
+ console.error(err)
|
|
|
+ })
|
|
|
+ },
|
|
|
+ uploadrequest(option) {
|
|
|
+ let _this = this
|
|
|
+ axios.post(process.env.upfilehost, {})
|
|
|
+ .then(function (res) {
|
|
|
+ if (res.data && res.data.fid && res.data.fid !== '') {
|
|
|
+ option.action = `http://${res.data.url}/${res.data.fid}`
|
|
|
+ _this.waituploads.push({
|
|
|
+ uid: option.file.uid,
|
|
|
+ url: res.data.publicUrl,
|
|
|
+ fid: res.data.fid
|
|
|
+ })
|
|
|
+ uploadajax(option)
|
|
|
+ } else {
|
|
|
+ _this.$message({
|
|
|
+ type: 'warning',
|
|
|
+ message: '未上传成功!请刷新界面重新上传!'
|
|
|
+ })
|
|
|
+ }
|
|
|
+ })
|
|
|
+ .catch(function (error) {
|
|
|
+ console.log(error)
|
|
|
+ _this.$message({
|
|
|
+ type: 'warning',
|
|
|
+ message: '未上传成功!请重新上传!'
|
|
|
+ })
|
|
|
+ })
|
|
|
+ },
|
|
|
+ beforeAvatarUpload(file) {
|
|
|
+ let isLt50m = file.size / 1024 / 1024 / 50 < 1
|
|
|
+ if (!isLt50m) {
|
|
|
+ this.$message.error('上传打印模板大小不能超过 50MB!')
|
|
|
+ return false
|
|
|
+ }
|
|
|
+ return true
|
|
|
+ },
|
|
|
+ // 判断附件是否上传成功
|
|
|
+ attachissuccess() {
|
|
|
+ if (this.$refs.refuploadattach.uploadFiles && this.$refs.refuploadattach.uploadFiles.length > 0) {
|
|
|
+ for (let i = 0; i < this.$refs.refuploadattach.uploadFiles.length; i++) {
|
|
|
+ if (this.$refs.refuploadattach.uploadFiles[i].status !== 'success') {
|
|
|
+ this.$message.error('有附件未成功上传!不能保存数据')
|
|
|
+ return false
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return true
|
|
|
+ },
|
|
|
+ // 获取上传成功的附件
|
|
|
+ getattachissuccess() {
|
|
|
+ this.sampleform.uploadeds = []
|
|
|
+ if (this.$refs.refuploadattach.uploadFiles && this.$refs.refuploadattach.uploadFiles.length > 0) {
|
|
|
+ for (let i = 0; i < this.$refs.refuploadattach.uploadFiles.length; i++) {
|
|
|
+ if (this.$refs.refuploadattach.uploadFiles[i].status === 'success') {
|
|
|
+ for (let j = 0; j < this.waituploads.length; j++) {
|
|
|
+ if (this.waituploads[j].uid === this.$refs.refuploadattach.uploadFiles[i].uid) {
|
|
|
+ this.sampleform.uploadeds.push({
|
|
|
+ url: this.waituploads[j].url,
|
|
|
+ fid: this.waituploads[j].fid,
|
|
|
+ size: this.$refs.refuploadattach.uploadFiles[i].size,
|
|
|
+ name: this.$refs.refuploadattach.uploadFiles[i].name
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ // 初始化液氮罐canvas并绘制液氮罐背景图
|
|
|
+ drawyedanguancanvasbgimg() {
|
|
|
+ let _this = this
|
|
|
+ _this.yedanguancanvas = document.getElementById('canvascryobiobank97K')
|
|
|
+ _this.yedanguanctx = _this.yedanguancanvas.getContext('2d')
|
|
|
+ _this.yedanguanctx.globalAlpha = 0.5
|
|
|
+ _this.yedanguancanvas.addEventListener('click', function (e) {
|
|
|
+ let p = _this.getEventPosition(e)
|
|
|
+ _this.drawyedanguancavans(p)
|
|
|
+ }, false)
|
|
|
+ _this.drawyedanguancavans(null)
|
|
|
+ },
|
|
|
+ // 绘制特殊形态液氮罐
|
|
|
+ drawyedanguancavans(p) {
|
|
|
+ let _this = this
|
|
|
+ _this.yedanguanctx.clearRect(0, 0, _this.yedanguancanvas.width, _this.yedanguancanvas.height)
|
|
|
+ let canvasimg = document.getElementById(_this.yeshuyedanguanimgid)
|
|
|
+ _this.yedanguanctx.drawImage(canvasimg, 0, 0, _this.yedanguancanvas.width, _this.yedanguancanvas.height)
|
|
|
+ let yedanguandatarrtrmp = []
|
|
|
+ if (_this.yedanguanitem === 20) {
|
|
|
+ yedanguandatarrtrmp = _this.yedanguanrongqiarr_13kbloodbag
|
|
|
+ } else {
|
|
|
+ yedanguandatarrtrmp = _this.yedanguanrongqiarr
|
|
|
+ }
|
|
|
+ yedanguandatarrtrmp.forEach(function (v) {
|
|
|
+ // 绘制颜色快
|
|
|
+ if (v.type === 1) { // 标准四边形
|
|
|
+ _this.yedanguanctx.strokeStyle = 'white'
|
|
|
+ _this.yedanguanctx.beginPath()
|
|
|
+ _this.yedanguanctx.rect(v.x, v.y, v.width, v.height)
|
|
|
+ _this.yedanguanctx.stroke()
|
|
|
+ } else { // 有倾斜的四边形
|
|
|
+ _this.yedanguanctx.strokeStyle = 'white'
|
|
|
+ _this.yedanguanctx.beginPath()
|
|
|
+ _this.yedanguanctx.moveTo(v.x1, v.y1)
|
|
|
+ _this.yedanguanctx.lineTo(v.x2, v.y2)
|
|
|
+ _this.yedanguanctx.lineTo(v.x3, v.y3)
|
|
|
+ _this.yedanguanctx.lineTo(v.x4, v.y4)
|
|
|
+ _this.yedanguanctx.closePath()
|
|
|
+ _this.yedanguanctx.stroke()
|
|
|
+ }
|
|
|
+ // 获取点击点坐标
|
|
|
+ if (p && _this.yedanguanctx.isPointInPath(p.x, p.y)) {
|
|
|
+ _this.selectdtedanguan = {
|
|
|
+ ColumnNum: 0
|
|
|
+ }
|
|
|
+ for (var i = 0; i < _this.samplelist.length; i++) {
|
|
|
+ if (_this.samplelist[i].XStation === v.XStation && _this.samplelist[i].YStation === v.YStation) {
|
|
|
+ _this.selectdtedanguan = _this.samplelist[i]
|
|
|
+ if (v.type === 1) {
|
|
|
+ _this.yedanguanctx.fillStyle = _this.COLORARR[2]
|
|
|
+ _this.yedanguanctx.beginPath()
|
|
|
+ _this.yedanguanctx.rect(v.x, v.y, v.width, v.height)
|
|
|
+ _this.yedanguanctx.fill()
|
|
|
+ } else {
|
|
|
+ _this.yedanguanctx.fillStyle = _this.COLORARR[2]
|
|
|
+ _this.yedanguanctx.beginPath()
|
|
|
+ _this.yedanguanctx.moveTo(v.x1, v.y1)
|
|
|
+ _this.yedanguanctx.lineTo(v.x2, v.y2)
|
|
|
+ _this.yedanguanctx.lineTo(v.x3, v.y3)
|
|
|
+ _this.yedanguanctx.lineTo(v.x4, v.y4)
|
|
|
+ _this.yedanguanctx.closePath()
|
|
|
+ _this.yedanguanctx.fill()
|
|
|
+ }
|
|
|
+ // 排除搜索进来的
|
|
|
+ if (!_this.fristseach) {
|
|
|
+ _this.handleclk(-1, -1, -1, -1)
|
|
|
+ }
|
|
|
+ break
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ // 获取点击canvas的坐标
|
|
|
+ getEventPosition(ev) {
|
|
|
+ let x, y
|
|
|
+ if (ev.layerX || ev.layerX === 0) {
|
|
|
+ x = ev.layerX
|
|
|
+ y = ev.layerY
|
|
|
+ } else if (ev.offsetX || ev.offsetX === 0) { // Opera
|
|
|
+ x = ev.offsetX
|
|
|
+ y = ev.offsetY
|
|
|
+ }
|
|
|
+ return {
|
|
|
+ x: x,
|
|
|
+ y: y
|
|
|
+ }
|
|
|
+ },
|
|
|
+ getautocodedata() {
|
|
|
+ let _this = this
|
|
|
+ // request
|
|
|
+ // 获取冻存架信息
|
|
|
+ _this.$axios.get('/sampleoperation/getautocodedata', {})
|
|
|
+ .then(res => {
|
|
|
+ // response
|
|
|
+ _this.sampleform.code_default = res.data.code_default
|
|
|
+ _this.sampleform.code_codeId = res.data.code_codeId
|
|
|
+ _this.sampleform.code_lastnum = res.data.code_lastnum
|
|
|
+ _this.sampleform.coderule_samplingorgan_flag = res.data.coderule_samplingorgan_flag
|
|
|
+ _this.sampleform.coderule_sampletype_flag = res.data.coderule_sampletype_flag
|
|
|
+ _this.sampleform.SampleCode = res.data.SampleCode
|
|
|
+ })
|
|
|
+ .catch(err => {
|
|
|
+ // handle error
|
|
|
+ console.error(err)
|
|
|
+ })
|
|
|
+ },
|
|
|
+ // 获取是否默认勾选打印标签
|
|
|
+ getisAutoPrint() {
|
|
|
+ let _this = this
|
|
|
+ _this.$axios.get('/paramset/getisautoprint', {})
|
|
|
+ .then(res => {
|
|
|
+ // response
|
|
|
+ if (res.data === 'true') {
|
|
|
+ _this.sampleform.autoprintchecked = true
|
|
|
+ } else {
|
|
|
+ _this.sampleform.autoprintchecked = false
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ getfridgeimg(eid) {
|
|
|
+ let _this = this
|
|
|
+ // 获取容器信息
|
|
|
+ _this.$axios.get('/equipment/getmodel/' + eid, {})
|
|
|
+ .then(res => {
|
|
|
+ _this.equcode = res.data.Code
|
|
|
+ _this.titlename = `【容器-${res.data.Name}】`
|
|
|
+ // 4:液氮罐,19:贝尔Cryobiobank13K液氮罐;20:贝尔Cryobiobank13K_BloodBag液氮罐
|
|
|
+ if (res.data && (res.data.DItem === 4)) {
|
|
|
+ _this.showtsyedanguan = false
|
|
|
+ _this.showcgshebei = true
|
|
|
+ _this.fridgebottomimg = _this.filehost + '/static/img/sampletypeimg/bottomydg.png'
|
|
|
+ } else if (res.data && (res.data.DItem === 19 || res.data.DItem === 20)) {
|
|
|
+ _this.yedanguanitem = res.data.DItem
|
|
|
+ if (res.data.DItem === 19) {
|
|
|
+ _this.yeshuyedanguanimgid = 'cryobiobank97Kimg'
|
|
|
+ } else {
|
|
|
+ _this.yeshuyedanguanimgid = 'cryobiobank97K_bloodbagimg'
|
|
|
+ }
|
|
|
+ // 加载特殊液氮罐
|
|
|
+ _this.drawyedanguancanvasbgimg()
|
|
|
+ _this.showcgshebei = false
|
|
|
+ _this.showtsyedanguan = true
|
|
|
+ } else {
|
|
|
+ _this.showtsyedanguan = false
|
|
|
+ _this.showcgshebei = true
|
|
|
+ _this.fridgebottomimg = _this.filehost + '/static/img/sampletypeimg/bottombx.png'
|
|
|
+ }
|
|
|
+ })
|
|
|
+ .catch({})
|
|
|
+ },
|
|
|
+ getsametypetreelist() {
|
|
|
+ let _this = this
|
|
|
+ // request
|
|
|
+ _this.$axios.get('/sampleorgan/gettreelist', {})
|
|
|
+ .then(res => {
|
|
|
+ _this.organlist2 = window.toolfun_gettreejson(res.data, 'id', 'pId', 'id,name,code')
|
|
|
+ })
|
|
|
+ .catch(err => {
|
|
|
+ // handle error
|
|
|
+ console.error(err)
|
|
|
+ })
|
|
|
+ },
|
|
|
+ getType() {
|
|
|
+ let _this = this
|
|
|
+ _this.$axios.get('/sampleinput/slist/' + this.equipid, {})
|
|
|
+ .then(res => {
|
|
|
+ // response
|
|
|
+ _this.sampletypelist = []
|
|
|
+ for (var i = 0; i < res.data.currentItemCount; i++) {
|
|
|
+ _this.sampletypelist.push({
|
|
|
+ label: res.data.items[i].Name,
|
|
|
+ code: res.data.items[i].Code,
|
|
|
+ photo: res.data.items[i].Photo,
|
|
|
+ value: res.data.items[i].Id + ''
|
|
|
+ })
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ getpublickz() {
|
|
|
+ let _this = this
|
|
|
+ _this.$axios.get('/sampletype/getpublickzzd', {})
|
|
|
+ .then(res => {
|
|
|
+ // response
|
|
|
+ _this.publickzlist = res.data
|
|
|
+ })
|
|
|
+ },
|
|
|
+ getsampetypeunit() {
|
|
|
+ // 获取样本单位
|
|
|
+ let _this = this
|
|
|
+ _this.$axios.get('/sampletype/sunitajax', {})
|
|
|
+ .then(res => {
|
|
|
+ _this.sampeunitlist = res.data
|
|
|
+ })
|
|
|
+ },
|
|
|
+ openpreop() {
|
|
|
+ if (this.dchxtable === -1 || this.dchytable === -1) {
|
|
|
+ this.$message({
|
|
|
+ type: 'warning',
|
|
|
+ message: '请选择存储位置!'
|
|
|
+ })
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if (this.sampleform.type_flag === 'edit') {
|
|
|
+ this.$message({
|
|
|
+ type: 'warning',
|
|
|
+ message: '当前位置已有样本!请选择其他存储位置!'
|
|
|
+ })
|
|
|
+ return
|
|
|
+ }
|
|
|
+ this.dialogFormVisible = true
|
|
|
+ var packnew = {
|
|
|
+ typelist: this.sampletypelist,
|
|
|
+ organlist: this.organlist,
|
|
|
+ cascade: this.organlist2
|
|
|
+ }
|
|
|
+ this.$store.dispatch('sampleNewModel', packnew)
|
|
|
+ },
|
|
|
+ location() {
|
|
|
+ let _this = this
|
|
|
+ // 获取查询样本编码
|
|
|
+ let station = _this.$route.query.station
|
|
|
+ if (station !== undefined && station !== '') {
|
|
|
+ _this.fristseach = true
|
|
|
+ let stationarr = station.split(';')
|
|
|
+ if (stationarr.length === 7) {
|
|
|
+ // 初始化特殊形态的液氮罐
|
|
|
+ if (_this.showtsyedanguan) {
|
|
|
+ let yedanguandatarrtrmp = []
|
|
|
+ if (_this.yedanguanitem === 20) {
|
|
|
+ yedanguandatarrtrmp = _this.yedanguanrongqiarr_13kbloodbag
|
|
|
+ } else {
|
|
|
+ yedanguandatarrtrmp = _this.yedanguanrongqiarr
|
|
|
+ }
|
|
|
+ for (let i = 0; i < yedanguandatarrtrmp.length; i++) {
|
|
|
+ if ((yedanguandatarrtrmp[i].XStation + '') === stationarr[0] && (yedanguandatarrtrmp[i].YStation +
|
|
|
+ '') === stationarr[1]) {
|
|
|
+ if (yedanguandatarrtrmp[i].type === 1) {
|
|
|
+ _this.drawyedanguancavans({
|
|
|
+ x: yedanguandatarrtrmp[i].x + 1,
|
|
|
+ y: yedanguandatarrtrmp[i].y + 1
|
|
|
+ })
|
|
|
+ } else {
|
|
|
+ _this.drawyedanguancavans({
|
|
|
+ x: yedanguandatarrtrmp[i].x1 + 1,
|
|
|
+ y: yedanguandatarrtrmp[i].y1 + 1
|
|
|
+ })
|
|
|
+ }
|
|
|
+ break
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ _this.handleclk(stationarr[2] - 1, stationarr[3] - 1, stationarr[1], stationarr[0])
|
|
|
+ _this.locationparam = {
|
|
|
+ id: stationarr[6],
|
|
|
+ y: stationarr[5],
|
|
|
+ x: stationarr[4]
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ // 初始化特殊形态的液氮罐
|
|
|
+ if (_this.showtsyedanguan) {
|
|
|
+ if (_this.yedanguanitem === 20) {
|
|
|
+ _this.drawyedanguancavans({
|
|
|
+ x: 211,
|
|
|
+ y: 107
|
|
|
+ })
|
|
|
+ } else {
|
|
|
+ _this.drawyedanguancavans({
|
|
|
+ x: 135,
|
|
|
+ y: 46
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ // goAnchor(selector) {
|
|
|
+ // var anchor = this.$el.querySelector(selector)
|
|
|
+ // anchor.scrollIntoView()
|
|
|
+ // },
|
|
|
+ handleclk(xbox, ybox, xshelf, yshelf) {
|
|
|
+ // 清空状态
|
|
|
+ this.clearsampleform()
|
|
|
+ // 显示选中位置
|
|
|
+ this.checkinfomsg = `所选位置信息:【冻存架位置: 第${xshelf}行, 第${yshelf}列 冻存盒位置: 第${ybox + 1}行, 第${xbox + 1}列】`
|
|
|
+ this.checkshelvemsg = this.checkinfomsg
|
|
|
+ // request
|
|
|
+ let _this = this
|
|
|
+ var inputstr = _this.equipid + ',' + yshelf + ',' + xshelf + ',' + (xbox + 1) + ',' + (ybox + 1)
|
|
|
+ _this.$axios.get('/shelfset/boxdraw/' + inputstr, {})
|
|
|
+ .then(res => {
|
|
|
+ // response
|
|
|
+ _this.selectedBox = res.data.Boxshelf
|
|
|
+ _this.boxSample = res.data.Boxsample
|
|
|
+ _this.TableHeight = _this.selectedBox.RowNum
|
|
|
+ _this.TableWidth = _this.selectedBox.ColumnNum
|
|
|
+ // 重置选择的冻存管
|
|
|
+ _this.dchxtable = -1
|
|
|
+ _this.dchytable = -1
|
|
|
+ // 如果是搜索进来的
|
|
|
+ if (_this.fristseach) {
|
|
|
+ _this.tableclk({
|
|
|
+ Id: _this.locationparam.id
|
|
|
+ }, _this.locationparam.y, _this.locationparam.x)
|
|
|
+ }
|
|
|
+ })
|
|
|
+ .catch(err => {
|
|
|
+ // handle error
|
|
|
+ console.error(err)
|
|
|
+ })
|
|
|
+ // 修改颜色
|
|
|
+ this.xshelf = xshelf
|
|
|
+ this.yshelf = yshelf
|
|
|
+ this.xbox = xbox + 1
|
|
|
+ this.ybox = ybox + 1
|
|
|
+ this.dchxtable = -1
|
|
|
+ this.dchytable = -1
|
|
|
+ },
|
|
|
+ tableclk(v, x, y) {
|
|
|
+ // this.checkinfomsg = this.checkshelvemsg +
|
|
|
+ // `冻存管位置:【第${x}行,第${y}列】 (位置编码:${this.equcode}-${this.numtoupchar(this.xshelf)}${this.yshelf}-${this.numtoupchar(this.ybox)}${this.xbox}-${this.numtoupchar(x)}${y})`
|
|
|
+ this.checkinfomsg = `${this.equcode}-${this.numtoupchar(this.xshelf)}${this.yshelf}-${this.numtoupchar(this.ybox)}${this.xbox}-${this.numtoupchar(x)}${y}`
|
|
|
+ // 清空状态
|
|
|
+ this.clearsampleform()
|
|
|
+ // 初始化界面
|
|
|
+ if (v != null) {
|
|
|
+ let _this = this
|
|
|
+ _this.sampleform.type_flag = 'edit'
|
|
|
+ _this.disabledsamplecode = true
|
|
|
+ _this.disabledbarcode = true
|
|
|
+ _this.disabledsampletype = true
|
|
|
+ _this.disabledsamplingorgan = true
|
|
|
+ _this.disabledsourcebutton = true
|
|
|
+ _this.disabledcheckprint = true
|
|
|
+ _this.diaabledreceiveDate = true
|
|
|
+ _this.diaabledyongjiu = true
|
|
|
+ _this.disabledsamplingsite = true
|
|
|
+ _this.disabledcapacity = true
|
|
|
+ _this.disabledunit = true
|
|
|
+ _this.disabledvaliditydate = true
|
|
|
+ _this.disabledbtnpreopera = true
|
|
|
+ _this.disabledgroup = true
|
|
|
+ _this.getsampoperainfobyid(v.Id)
|
|
|
+ } else { // 批量添加,如果点击的是空白位置会进入
|
|
|
+ this.setsampleinfobybatchparam()
|
|
|
+ }
|
|
|
+ if (this.Apply_flag) {
|
|
|
+ // 跳转
|
|
|
+ if (!this.fristseach) {
|
|
|
+ // this.goAnchor('#equiinfocard')
|
|
|
+ } else {
|
|
|
+ this.fristseach = false
|
|
|
+ }
|
|
|
+ }
|
|
|
+ this.dchxtable = y
|
|
|
+ this.dchytable = x
|
|
|
+ this.xtable = x
|
|
|
+ this.ytable = y
|
|
|
+ // for (var i = 0; i < this.boxSample.length; i++) {
|
|
|
+ // var pos = this.boxSample[i].Position
|
|
|
+ // if (this.dchxtable + '' === pos.charAt(0) && this.dchytable + '' === pos.charAt(pos.length - 1)) {
|
|
|
+ // this.clicksample = true
|
|
|
+ // break
|
|
|
+ // } else {
|
|
|
+ // this.clicksample = false
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ },
|
|
|
+ // 组织器官和取材部位的连接
|
|
|
+ chooseorgange(value) {
|
|
|
+ let _this = this
|
|
|
+ this.samplequcailist = []
|
|
|
+ this.getOrgan(value[value.length - 1])
|
|
|
+ // 获取样本编码
|
|
|
+ if (_this.sampleform.type_flag === 'add') {
|
|
|
+ if (_this.sampleform.code_default === 'true' && _this.sampleform.coderule_samplingorgan_flag === 1) {
|
|
|
+ if (_this.sampleform.coderule_sampletype_flag !== 1 || (_this.sampleform.coderule_sampletype_flag === 1 &&
|
|
|
+ _this.sampleform.SampleTypestr !== '')) {
|
|
|
+ let sampletypestr = _this.sampleform.SampleTypestr
|
|
|
+ let sampleselectedorgan = _this.selectedorgan[_this.selectedorgan.length - 1]
|
|
|
+ _this.getautobarcode(sampletypestr, sampleselectedorgan)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ getOrgan(code) {
|
|
|
+ let _this = this
|
|
|
+ _this.$axios.get('/samplesite/getsitebyfcode?code=' + code, {})
|
|
|
+ .then(res => {
|
|
|
+ // response
|
|
|
+ for (var i = 0; i < res.data.length; i++) {
|
|
|
+ _this.samplequcailist.push({
|
|
|
+ label: res.data[i].Name,
|
|
|
+ value: res.data[i].Code
|
|
|
+ })
|
|
|
+ }
|
|
|
+ if (_this.sampleform.type_flag === 'add') {
|
|
|
+ if (_this.samplequcailist.length > 0) {
|
|
|
+ _this.sampleform.SamplingSite = _this.samplequcailist[0].value
|
|
|
+ } else {
|
|
|
+ _this.sampleform.SamplingSite = ''
|
|
|
+ }
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ choosetype(v) {
|
|
|
+ // 获取特有扩展
|
|
|
+ let _this = this
|
|
|
+ _this.groupnameList = []
|
|
|
+ _this.typetykzlist = []
|
|
|
+ if (v !== '') {
|
|
|
+ _this.$axios.get('/sampletype/gettykzzdgroup?SampleType=' + v, {})
|
|
|
+ .then(res => {
|
|
|
+ for (var i = 0; i < res.data.length; i++) {
|
|
|
+ if (res.data[i].GroupName != '') {
|
|
|
+ _this.groupnameList.push(res.data[i].GroupName)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ _this.Tabs = _this.groupnameList[0]
|
|
|
+ _this.getSpecialkz(v)
|
|
|
+ // if(_this.acc =='sBBo4' || _this.acc == 'ssqOy'){
|
|
|
+ let sampletypestr = _this.sampleform.SampleTypestr
|
|
|
+ _this.getautobarcode(sampletypestr)
|
|
|
+ // }
|
|
|
+ })
|
|
|
+ }
|
|
|
+ },
|
|
|
+ getSpecialkz(v) {
|
|
|
+ // 获取特有扩展
|
|
|
+ let _this = this
|
|
|
+ if (v !== '') {
|
|
|
+ _this.$axios.get('/sampletype/gettykzzd?SampleType=' + v, {})
|
|
|
+ .then(res => {
|
|
|
+ _this.typetykzlist = res.data
|
|
|
+ // 获取样本类型数据
|
|
|
+ _this.getsampetypedata(v)
|
|
|
+ })
|
|
|
+ }
|
|
|
+ },
|
|
|
+ getsampetypedata(v) {
|
|
|
+ // 获取样本类型数据
|
|
|
+ let _this = this
|
|
|
+ _this.$axios.get('/sampletype/sampletypeajax?id=' + v, {})
|
|
|
+ .then(res => {
|
|
|
+ // response
|
|
|
+ _this.sampleform.Capacitystr = res.data.SampleType.DefaultCapacity + ''
|
|
|
+ if (res.data.VHours === '5000-1-1 23:59:59') {
|
|
|
+ _this.sampleform.Isyongjiu = true
|
|
|
+ } else {
|
|
|
+ _this.sampleform.ValidityDatedate = new Date(res.data.VHours)
|
|
|
+ _this.sampleform.Isyongjiu = false
|
|
|
+ }
|
|
|
+ _this.sampleform.Unit = res.data.SampleType.Unit
|
|
|
+ if (_this.sampleform.code_default === 'true' && _this.sampleform.coderule_sampletype_flag === 1) {
|
|
|
+ if (_this.sampleform.coderule_samplingorgan_flag !== 1 || (_this.sampleform
|
|
|
+ .coderule_samplingorgan_flag === 1 && _this.selectedorgan.length > 0)) {
|
|
|
+ let sampletypestr = _this.sampleform.SampleTypestr
|
|
|
+ let sampleselectedorgan = ''
|
|
|
+ if (_this.selectedorgan.length > 0) {
|
|
|
+ sampleselectedorgan = _this.selectedorgan[_this.selectedorgan.length - 1]
|
|
|
+ }
|
|
|
+ _this.getautobarcode(sampletypestr, sampleselectedorgan)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+
|
|
|
+ gettykzandtovalue(val) {
|
|
|
+ // 获取特有扩展并赋值
|
|
|
+ if (val && val.SampleType > 0) {
|
|
|
+ let _this = this
|
|
|
+ _this.$axios.get('/sampletype/gettykzzd?SampleType=' + val.SampleType, {})
|
|
|
+ .then(res => {
|
|
|
+ // response
|
|
|
+ _this.typetykzlist = res.data
|
|
|
+ // 扩展赋值
|
|
|
+ for (let i = 0; i < this.typetykzlist.length; i++) {
|
|
|
+ this.typetykzlist[i].FieldDefault = val[this.typetykzlist[i].FieldName]
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ getautobarcode(samptype, samporg) {
|
|
|
+ // 获取自动编码
|
|
|
+ let _this = this
|
|
|
+ _this.$axios.get('/sampleoperation/getautobarcode?SampleType=' + samptype + '&fid=' + samporg, {})
|
|
|
+ .then(res => {
|
|
|
+ // response
|
|
|
+ _this.sampleform.code_lastnum = res.data.num
|
|
|
+ _this.sampleform.SampleCode = res.data.barcode
|
|
|
+ })
|
|
|
+ },
|
|
|
+ // 判断是否有冻存管图片位置,依据现在逻辑先调整
|
|
|
+ getiscontainsdcgimgweiz(stations, x, y) {
|
|
|
+ for (var i = 0; i < stations.length; i++) {
|
|
|
+ let dcgwzs = stations[i].Position.split(';')
|
|
|
+ if (dcgwzs.length === 2) {
|
|
|
+ if (dcgwzs[0] === x && dcgwzs[1] === y) {
|
|
|
+ return true
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return false
|
|
|
+ // get tableclk
|
|
|
+ },
|
|
|
+ completeform() {
|
|
|
+ // 处理position string: euipid,冻存架位置,冻存盒位置,对勾位置,容量
|
|
|
+ this.sampleform.PositionStr = this.equipid + ',' + this.yshelf + ',' + this.xshelf + ',' + this.xbox + ',' +
|
|
|
+ this.ybox + ',' + this.dchxtable + ',' + this.dchytable + ','
|
|
|
+ for (var i = 0; i < this.samplelist.length; i++) {
|
|
|
+ if (this.yshelf === this.samplelist[i].XStation && this.xshelf === this.samplelist[i].YStation) {
|
|
|
+ if (this.samplelist[i][this.numtoengs[this.ybox - 1] + this.xbox] === -1) {
|
|
|
+ this.sampleform.PositionStr += 100 / (this.selectedBox.RowNum * this.selectedBox.ColumnNum).toFixed(2)
|
|
|
+ } else {
|
|
|
+ this.sampleform.PositionStr += (this.samplelist[i][this.numtoengs[this.ybox - 1] + this.xbox] + 100 / (
|
|
|
+ this.selectedBox.RowNum * this.selectedBox.ColumnNum)).toFixed(2)
|
|
|
+ }
|
|
|
+ break
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 样本条码
|
|
|
+ this.sampleform.BarCode = this.sampleform.SampleCode + '-1'
|
|
|
+ // 类型、器官、部位的名称
|
|
|
+ for (var j = 0; j < this.sampletypelist.length; j++) {
|
|
|
+ if (this.sampleform.SampleTypestr === this.sampletypelist[j].value) {
|
|
|
+ this.sampleform.SampleTypeName = this.sampletypelist[j].label
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // for (var k = 0; k < this.option2.length; k++) {
|
|
|
+ // if (this.sampleform.SamplingSite.substring(0, 3) === this.option2[k].value) {
|
|
|
+ // this.sampleform.zuzhi = this.option2[k].value
|
|
|
+ // this.sampleform.zuzhiming = this.option2[k].label
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ for (var x = 0; x < this.samplequcailist.length; x++) {
|
|
|
+ if (this.sampleform.SamplingSite === this.samplequcailist[x].value) {
|
|
|
+ this.sampleform.SamplingSiteName = this.samplequcailist[x].label
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ // 选择预录入样本
|
|
|
+ custompreoperaDialogCallback(val) {
|
|
|
+ let _this = this
|
|
|
+ _this.sampleform.type_flag = 'pre_add'
|
|
|
+ _this.disabledsamplecode = true
|
|
|
+ _this.disabledbarcode = true
|
|
|
+ _this.disabledsampletype = true
|
|
|
+ _this.disabledsamplingorgan = true
|
|
|
+ _this.disabledsourcebutton = true
|
|
|
+ _this.disabledcheckprint = true
|
|
|
+ _this.disabledgroup = true
|
|
|
+ this.getsampoperainfobyid(val.Id)
|
|
|
+ },
|
|
|
+ // 获取附件信息
|
|
|
+ getattachment(barcode, samplecode) {
|
|
|
+ let _this = this
|
|
|
+ let params = {
|
|
|
+ samplecode: samplecode,
|
|
|
+ barcode: barcode
|
|
|
+ }
|
|
|
+ this.$axios.get('/sampleoperation/getattachmentbysamplecode', {
|
|
|
+ params
|
|
|
+ })
|
|
|
+ .then(res => {
|
|
|
+ _this.achmentlist = res.data
|
|
|
+ }).catch(() => {})
|
|
|
+ },
|
|
|
+ clickachment(host, fid) {
|
|
|
+ window.open(`http://${host}/${fid}`)
|
|
|
+ },
|
|
|
+ getsampoperainfobyid(id) {
|
|
|
+ let _this = this
|
|
|
+ _this.sampleinfoid = id
|
|
|
+ _this.$axios.get('/sampleoperation/getsamplebyid?SamplesInfoId=' + id, {})
|
|
|
+ .then(res => {
|
|
|
+ // sampleinfodetail
|
|
|
+ // 分装提取复苏使用
|
|
|
+ _this.sampleinfodetail = res.data
|
|
|
+ // response
|
|
|
+ _this.sampleinfotype = res.data.SampleType + ''
|
|
|
+ _this.sampleform.BarCode = res.data.BarCode
|
|
|
+ _this.sampleform.SampleCode = res.data.SampleCode
|
|
|
+ _this.sampleform.SampleTypestr = res.data.SampleType + ''
|
|
|
+ _this.getparentcodebytopcode(res.data.SamplingOrgan)
|
|
|
+ _this.sampleform.SamplingSite = res.data.SamplingSite
|
|
|
+ _this.sampleform.Name = res.data.Name
|
|
|
+ if (res.data.ReceiveDate.substring(0, 3) === '000') {
|
|
|
+ _this.sampleform.ReceiveDatedate = null
|
|
|
+ } else {
|
|
|
+ _this.sampleform.ReceiveDatedate = new Date(res.data.ReceiveDate)
|
|
|
+ }
|
|
|
+ if (res.data.ValidityDate.substring(0, 3) === '000') {
|
|
|
+ _this.sampleform.Isyongjiu = false
|
|
|
+ _this.sampleform.ValidityDatedate = null
|
|
|
+ } else if (res.data.ValidityDate.substring(0, 4) === '5000') {
|
|
|
+ _this.sampleform.Isyongjiu = true
|
|
|
+ _this.sampleform.ValidityDatedate = null
|
|
|
+ } else {
|
|
|
+ _this.sampleform.Isyongjiu = false
|
|
|
+ _this.sampleform.ValidityDatedate = new Date(res.data.ValidityDate)
|
|
|
+ }
|
|
|
+ _this.sampleform.Capacitystr = res.data.Capacity + ''
|
|
|
+ _this.sampleform.Unit = res.data.Unit
|
|
|
+ _this.sampleform.InnerCode = res.data.InnerCode
|
|
|
+ _this.sampleform.Remark = res.data.Remark
|
|
|
+ _this.sampleform.SourceId = res.data.SourceId
|
|
|
+ _this.sampleform.SourceIdCard = res.data.SourceIdCard
|
|
|
+ _this.sampleform.SourceName = res.data.SourceName
|
|
|
+ // 录入人
|
|
|
+ let iscontaincreateuser = false
|
|
|
+ for (var i = 0; i < _this.userlist.length; i++) {
|
|
|
+ if (_this.userlist[i].Id == res.data.CreateUserId) {
|
|
|
+ iscontaincreateuser = true
|
|
|
+ break
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (!iscontaincreateuser && res.data.CreateBy != '') {
|
|
|
+ _this.userlist.unshift({
|
|
|
+ 'Id': res.data.CreateUserId,
|
|
|
+ 'Realname': res.data.CreateBy
|
|
|
+ })
|
|
|
+ }
|
|
|
+ _this.sampleform.CreateUserId = res.data.CreateUserId
|
|
|
+ // 给公共扩展信息赋值
|
|
|
+ for (let i = 0; i < _this.publickzlist.length; i++) {
|
|
|
+ _this.publickzlist[i].FieldDefault = res.data[_this.publickzlist[i].FieldName]
|
|
|
+ }
|
|
|
+ //获取所属分组
|
|
|
+ if (_this.acc == 'sryms') {
|
|
|
+ _this.getGroup(res.data.BarCode)
|
|
|
+ }
|
|
|
+ // 获取特有扩展并给特有扩展信息赋值
|
|
|
+ _this.gettykzandtovalue(res.data)
|
|
|
+ //获取附件信息
|
|
|
+ _this.getattachment(res.data.BarCode, res.data.SampleCode)
|
|
|
+ })
|
|
|
+ },
|
|
|
+ getGroup(val) {
|
|
|
+ this.$axios.get('samplesgroup/groupbybarcode/' + val, {})
|
|
|
+ .then(res => {
|
|
|
+ this.GroupIdOption = [];
|
|
|
+ if (res.data.GroupId != "") {
|
|
|
+ let tempArr = res.data.GroupId.split(',');
|
|
|
+ for (let idx in tempArr) {
|
|
|
+ this.GroupIdOption.push(parseInt(tempArr[idx]));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ })
|
|
|
+ .catch(err => {
|
|
|
+ // handle error
|
|
|
+ console.error(err)
|
|
|
+ })
|
|
|
+ },
|
|
|
+ setsampleinfobybatchparam(id) {
|
|
|
+ let _this = this
|
|
|
+ if (_this.batchstorages.length > 0) {
|
|
|
+ let val = _this.batchstorages[0]
|
|
|
+ _this.sampleform.BarCode = val.BarCode
|
|
|
+ _this.sampleform.SampleCode = val.SampleCode
|
|
|
+ _this.sampleform.SampleTypestr = val.SampleTypeId + ''
|
|
|
+ _this.sampleform.Capacitystr = val.SampleSize
|
|
|
+ _this.sampleform.Unit = val.SampleUnit
|
|
|
+ _this.sampleform.SourceId = val.SampleSourceId
|
|
|
+ _this.sampleform.SourceIdCard = val.IdCard
|
|
|
+ _this.sampleform.SourceName = val.Name
|
|
|
+ }
|
|
|
+ },
|
|
|
+ customsampsourceDialogCallback(val) {
|
|
|
+ this.sampleform.SourceId = val.Id
|
|
|
+ this.sampleform.SourceIdCard = val.IdCard
|
|
|
+ this.sampleform.SourceName = val.Name
|
|
|
+ },
|
|
|
+ animalDialogCallback(val) {
|
|
|
+ this.sampleform.SourceId = val.Id
|
|
|
+ this.sampleform.SourceName = val.Name
|
|
|
+ },
|
|
|
+ microDialogCallback(val) {
|
|
|
+ this.sampleform.SourceId = val.Id
|
|
|
+ this.sampleform.SourceName = val.Name
|
|
|
+ },
|
|
|
+ getparentcodebytopcode(v) {
|
|
|
+ let _this = this
|
|
|
+ _this.$axios.get('/sampleorgan/getparentcodebytopcode/' + v, {})
|
|
|
+ .then(res => {
|
|
|
+ _this.selectedorgan = []
|
|
|
+ let pidarr = res.data.split(',')
|
|
|
+ for (var i = pidarr.length - 1; i >= 0; i--) {
|
|
|
+ if (pidarr[i] !== '0') {
|
|
|
+ _this.selectedorgan.push(pidarr[i])
|
|
|
+ }
|
|
|
+ }
|
|
|
+ _this.getOrgan(_this.selectedorgan[_this.selectedorgan.length - 1])
|
|
|
+ })
|
|
|
+ },
|
|
|
+ getkuozhandata() {
|
|
|
+ // 拼接扩展字段
|
|
|
+ let _this = this
|
|
|
+ let jsonstr = ''
|
|
|
+ // 公共扩展
|
|
|
+ for (let i = 0; i < _this.publickzlist.length; i++) {
|
|
|
+ jsonstr += '"' + _this.publickzlist[i].FieldName + '" : "' + _this.publickzlist[i].FieldDefault + '",'
|
|
|
+ }
|
|
|
+ // 特有扩展
|
|
|
+ for (let i = 0; i < _this.typetykzlist.length; i++) {
|
|
|
+ jsonstr += '"' + _this.typetykzlist[i].FieldName + '" : "' + _this.typetykzlist[i].FieldDefault + '",'
|
|
|
+ }
|
|
|
+ jsonstr = '{' + jsonstr.substring(0, jsonstr.length - 1) + '}'
|
|
|
+ return jsonstr
|
|
|
+ },
|
|
|
+ // 保存当前样本(若不存在,添加)
|
|
|
+ savesample(value) {
|
|
|
+ // this.completeform()
|
|
|
+ // 增加上传附件判断
|
|
|
+ if (!this.attachissuccess()) {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ // 获取附件信息
|
|
|
+ this.getattachissuccess()
|
|
|
+ let _this = this
|
|
|
+ this.$refs['samplemanageform'].validate((valid) => {
|
|
|
+ if (valid) {
|
|
|
+ if (this.dchxtable === -1 || this.dchytable === -1) {
|
|
|
+ this.$message({
|
|
|
+ type: 'warning',
|
|
|
+ message: '请选择存储位置!'
|
|
|
+ })
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if (this.dchxtable !== -1 && this.dchytable !== -1) {
|
|
|
+ // 所选器官
|
|
|
+ if (_this.selectedorgan.length > 0) {
|
|
|
+ _this.sampleform.SamplingOrgan = _this.selectedorgan[_this.selectedorgan.length - 1]
|
|
|
+ }
|
|
|
+ // 拼接扩展字段
|
|
|
+ let jsonstr = _this.getkuozhandata()
|
|
|
+ // 转换为json对象
|
|
|
+ let jsonobj = JSON.parse(jsonstr)
|
|
|
+ // 拼接两个对象
|
|
|
+ _this.sampleform.CreateBy = _this.$refs.reflrrselect.selectedLabel
|
|
|
+ let params = _this.sampleform
|
|
|
+ params = Object.assign(params, jsonobj)
|
|
|
+ // 位置冰箱等信息
|
|
|
+ let parweizi = {
|
|
|
+ eid: this.equipid,
|
|
|
+ x_shelf: this.yshelf + '',
|
|
|
+ y_shelf: this.xshelf + '',
|
|
|
+ x_box: this.xbox + '',
|
|
|
+ y_box: this.ybox + '',
|
|
|
+ min_x: this.dchxtable + '',
|
|
|
+ min_y: this.dchytable + ''
|
|
|
+ }
|
|
|
+ // 拼接
|
|
|
+ params = Object.assign(params, parweizi)
|
|
|
+ // 时间格式数据拼接
|
|
|
+ if (_this.sampleform.ReceiveDatedate && _this.sampleform.ReceiveDatedate.getTime() > 0) {
|
|
|
+ params = Object.assign(params, {
|
|
|
+ ReceiveDateint: _this.sampleform.ReceiveDatedate.getTime()
|
|
|
+ })
|
|
|
+ }
|
|
|
+ if (_this.sampleform.ValidityDatedate && _this.sampleform.ValidityDatedate.getTime() > 0) {
|
|
|
+ params = Object.assign(params, {
|
|
|
+ ValidityDateint: _this.sampleform.ValidityDatedate.getTime()
|
|
|
+ })
|
|
|
+ }
|
|
|
+ if (_this.batchstorages.length > 0) {
|
|
|
+ params = Object.assign(params, {
|
|
|
+ SampleMainlist: _this.batchstorages
|
|
|
+ })
|
|
|
+ }
|
|
|
+ if (_this.GroupIdOption.length > 0) {
|
|
|
+ _this.GroupId = _this.GroupIdOption.join(',');
|
|
|
+ let tempOfficers = [];
|
|
|
+ for (let idx in this.GroupIdOption) {
|
|
|
+ let selectId = this.GroupIdOption[idx];
|
|
|
+ for (let idx2 in this.groupList) {
|
|
|
+ let item = this.groupList[idx2];
|
|
|
+ if (item.Id == selectId) {
|
|
|
+ tempOfficers.push(item.Value);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ _this.GroupName = tempOfficers.join(',');
|
|
|
+ }
|
|
|
+ _this.$axios.post('/sampleoperation?batchitem=' + _this.batchitem + '&groupid=' + _this.GroupId +
|
|
|
+ '&groupname=' +
|
|
|
+ _this.GroupName, params)
|
|
|
+ .then(res => {
|
|
|
+ // response
|
|
|
+ if (res.data.code === 0) {
|
|
|
+ this.$message({
|
|
|
+ type: 'success',
|
|
|
+ message: res.data.message
|
|
|
+ })
|
|
|
+ // _this.clearsampleform()
|
|
|
+ // _this.clicksample = false
|
|
|
+ // 保存并新增
|
|
|
+ // if (value === 1) {
|
|
|
+ // _this.sampleform.BarCode = _this.sampleform.BarCode.substring(0, _this.sampleform.BarCode.length - 3) + (parseInt(_this.sampleform.BarCode.charAt(_this.sampleform.BarCode.length - 3)) + 1) + _this.sampleform.BarCode.substring(_this.sampleform.BarCode.length - 2, _this.sampleform.BarCode.length)
|
|
|
+ // } else { // 保存并新增分管
|
|
|
+ // _this.sampleform.BarCode = _this.sampleform.BarCode.substring(0, _this.sampleform.BarCode.length - 1) + (parseInt(_this.sampleform.BarCode.charAt(_this.sampleform.BarCode.length - 1)) + 1)
|
|
|
+ // }
|
|
|
+ _this.handleclk(_this.xbox - 1, _this.ybox - 1, _this.xshelf, _this.yshelf)
|
|
|
+ // _this.goAnchor('#equishelfcard')
|
|
|
+ // 清空上传附件
|
|
|
+ _this.$refs.refuploadattach.clearFiles()
|
|
|
+ // 获取附件信息
|
|
|
+ _this.getattachment(_this.sampleform.BarCode, _this.sampleform.SampleCode)
|
|
|
+ //清空缓存数据
|
|
|
+ _this.batchstorages = []
|
|
|
+ store.set('batchstorages', _this.batchstorages)
|
|
|
+ } else if (res.data.code === 10 || res.data.code === 11) { // 保存成功后打印
|
|
|
+ this.$message({
|
|
|
+ type: 'success',
|
|
|
+ message: res.data.message
|
|
|
+ })
|
|
|
+ _this.handleclk(_this.xbox - 1, _this.ybox - 1, _this.xshelf, _this.yshelf)
|
|
|
+ // 回到顶部
|
|
|
+ // _this.goAnchor('#equishelfcard')
|
|
|
+ // 自动打印
|
|
|
+ if (res.data.item.Printmsg !== '') {
|
|
|
+ let printparams = res.data.item.Printmsg.split(',')
|
|
|
+ if (printparams.length === 3 && printparams[0] !== '' && printparams[1] !== '' &&
|
|
|
+ printparams[2] !== '') {
|
|
|
+ // 执行打印操作
|
|
|
+ window.PrintReport(printparams[1], `samples,${printparams[2]},${printparams[0]}`)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 清空上传附件
|
|
|
+ _this.$refs.refuploadattach.clearFiles()
|
|
|
+ // 获取附件信息
|
|
|
+ _this.getattachment(_this.sampleform.BarCode, _this.sampleform.SampleCode)
|
|
|
+ //清空缓存数据
|
|
|
+ _this.batchstorages = []
|
|
|
+ store.set('batchstorages', _this.batchstorages)
|
|
|
+ } else if (res.data.code === 20) {
|
|
|
+ this.$message({
|
|
|
+ type: 'error',
|
|
|
+ message: res.data.message
|
|
|
+ })
|
|
|
+ _this.handleclk(_this.xbox - 1, _this.ybox - 1, _this.xshelf, _this.yshelf)
|
|
|
+ // _this.goAnchor('#equishelfcard')
|
|
|
+ // 清空上传附件
|
|
|
+ _this.$refs.refuploadattach.clearFiles()
|
|
|
+ // 获取附件信息
|
|
|
+ _this.getattachment(_this.sampleform.BarCode, _this.sampleform.SampleCode)
|
|
|
+ //清空缓存数据
|
|
|
+ _this.batchstorages = []
|
|
|
+ store.set('batchstorages', _this.batchstorages)
|
|
|
+ } else {
|
|
|
+ this.$message({
|
|
|
+ type: 'warning',
|
|
|
+ message: res.data.message
|
|
|
+ })
|
|
|
+ }
|
|
|
+ })
|
|
|
+ .catch(err => {
|
|
|
+ // handle error
|
|
|
+ console.error(err)
|
|
|
+ })
|
|
|
+ } else {
|
|
|
+ this.$message({
|
|
|
+ type: 'warning',
|
|
|
+ message: '请选择冻存管位置!'
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ editsave() {
|
|
|
+ if (this.sampleform.BarCode === '') {
|
|
|
+ this.$message({
|
|
|
+ type: 'warning',
|
|
|
+ message: '数据有误,请重试!'
|
|
|
+ })
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if (this.sampleform.type_flag !== 'edit') {
|
|
|
+ this.$message({
|
|
|
+ type: 'warning',
|
|
|
+ message: '操作不合法,请重试!'
|
|
|
+ })
|
|
|
+ return
|
|
|
+ }
|
|
|
+ // 增加上传附件判断
|
|
|
+ if (!this.attachissuccess()) {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ // 获取附件信息
|
|
|
+ this.getattachissuccess()
|
|
|
+ let _this = this
|
|
|
+ // 拼接扩展字段
|
|
|
+ let jsonstr = _this.getkuozhandata()
|
|
|
+ // 转换为json对象
|
|
|
+ let jsonobj = JSON.parse(jsonstr)
|
|
|
+ // 拼接两个对象
|
|
|
+ let params = _this.sampleform
|
|
|
+ params = Object.assign(params, jsonobj)
|
|
|
+ _this.$axios.put('/sampleoperation/editsampe?BarCode=' + this.sampleform.BarCode, params)
|
|
|
+ .then(res => {
|
|
|
+ // response
|
|
|
+ if (res.data.code === 0) {
|
|
|
+ this.$message({
|
|
|
+ type: 'success',
|
|
|
+ message: res.data.message
|
|
|
+ })
|
|
|
+ // 清空上传附件
|
|
|
+ _this.$refs.refuploadattach.clearFiles()
|
|
|
+ // 获取附件信息
|
|
|
+ _this.getattachment(_this.sampleform.BarCode, _this.sampleform.SampleCode)
|
|
|
+ } else {
|
|
|
+ this.$message({
|
|
|
+ type: 'warning',
|
|
|
+ message: res.data.message
|
|
|
+ })
|
|
|
+ }
|
|
|
+ })
|
|
|
+ .catch(err => {
|
|
|
+ // handle error
|
|
|
+ console.error(err)
|
|
|
+ })
|
|
|
+ },
|
|
|
+ SaveApply(value) {
|
|
|
+ let _this = this
|
|
|
+ if (this.dchxtable === -1 || this.dchytable === -1) {
|
|
|
+ this.$message({
|
|
|
+ type: 'warning',
|
|
|
+ message: '请选择存储位置!'
|
|
|
+ })
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if (this.dchxtable !== -1 && this.dchytable !== -1) {
|
|
|
+ // 位置冰箱等信息
|
|
|
+ let params = {
|
|
|
+ eid: this.equipid,
|
|
|
+ x_shelf: this.yshelf + '',
|
|
|
+ y_shelf: this.xshelf + '',
|
|
|
+ x_box: this.xbox + '',
|
|
|
+ y_box: this.ybox + '',
|
|
|
+ min_x: this.dchxtable + '',
|
|
|
+ min_y: this.dchytable + ''
|
|
|
+ }
|
|
|
+
|
|
|
+ if (_this.batchstorages.length > 0) {
|
|
|
+ params = Object.assign(params, {
|
|
|
+ SampleMainlist: _this.batchstorages
|
|
|
+ })
|
|
|
+ }
|
|
|
+ _this.$axios.post('/sampleoperation/applyin', params)
|
|
|
+ .then(res => {
|
|
|
+ // response
|
|
|
+ if (res.data.code === 0) {
|
|
|
+ this.$message({
|
|
|
+ type: 'success',
|
|
|
+ message: res.data.message
|
|
|
+ })
|
|
|
+ _this.handleclk(_this.xbox - 1, _this.ybox - 1, _this.xshelf, _this.yshelf)
|
|
|
+ // _this.goAnchor('#equishelfcard')
|
|
|
+ //清空缓存数据
|
|
|
+ _this.batchstorages = []
|
|
|
+ store.set('batchstorages', _this.batchstorages)
|
|
|
+ _this.$router.push({
|
|
|
+ path: '/biobank/sampleRK',
|
|
|
+ query: {}
|
|
|
+ })
|
|
|
+ } else if (res.data.code === 20) {
|
|
|
+ this.$message({
|
|
|
+ type: 'error',
|
|
|
+ message: res.data.message
|
|
|
+ })
|
|
|
+ _this.handleclk(_this.xbox - 1, _this.ybox - 1, _this.xshelf, _this.yshelf)
|
|
|
+ // _this.goAnchor('#equishelfcard')
|
|
|
+ //清空缓存数据
|
|
|
+ _this.batchstorages = []
|
|
|
+ store.set('batchstorages', _this.batchstorages)
|
|
|
+ } else {
|
|
|
+ this.$message({
|
|
|
+ type: 'warning',
|
|
|
+ message: res.data.message
|
|
|
+ })
|
|
|
+ }
|
|
|
+ })
|
|
|
+ .catch(err => {
|
|
|
+ // handle error
|
|
|
+ console.error(err)
|
|
|
+ })
|
|
|
+ } else {
|
|
|
+ this.$message({
|
|
|
+ type: 'warning',
|
|
|
+ message: '请选择冻存管位置!'
|
|
|
+ })
|
|
|
+ }
|
|
|
+ },
|
|
|
+ blursamplecode() {
|
|
|
+ let _this = this
|
|
|
+ if (_this.sampleform.SampleCode !== '') {
|
|
|
+ _this.$axios.get('/sampleoperation/getsamplebysamplecode?samplecode=' + this.sampleform.SampleCode, {})
|
|
|
+ .then(res => {
|
|
|
+ // response
|
|
|
+ if (res.data.SampleCode !== '') {
|
|
|
+ _this.disabledsamplecode = true
|
|
|
+ _this.disabledsampletype = true
|
|
|
+ _this.disabledsamplingorgan = true
|
|
|
+ _this.disabledsourcebutton = true
|
|
|
+ _this.sampleform.BarCode = ''
|
|
|
+ _this.sampleform.SampleCode = res.data.SampleCode
|
|
|
+ _this.sampleform.SampleTypestr = res.data.SampleType + ''
|
|
|
+ _this.getparentcodebytopcode(res.data.SamplingOrgan)
|
|
|
+ _this.sampleform.SamplingSite = res.data.SamplingSite
|
|
|
+ _this.sampleform.Name = res.data.Name
|
|
|
+ _this.sampleform.SourceId = res.data.SourceId
|
|
|
+ _this.sampleform.SourceIdCard = res.data.SourceIdCard
|
|
|
+ _this.sampleform.SourceName = res.data.SourceName
|
|
|
+ if (res.data.ReceiveDate.substring(0, 3) === '000') {
|
|
|
+ _this.sampleform.ReceiveDatedate = null
|
|
|
+ } else {
|
|
|
+ _this.sampleform.ReceiveDatedate = new Date(res.data.ReceiveDate)
|
|
|
+ }
|
|
|
+ _this.geteditsampetypedata(_this.sampleform.SampleTypestr)
|
|
|
+ // 给公共扩展信息赋值
|
|
|
+ for (let i = 0; i < _this.publickzlist.length; i++) {
|
|
|
+ _this.publickzlist[i].FieldDefault = res.data[_this.publickzlist[i].FieldName]
|
|
|
+ }
|
|
|
+ // 获取特有扩展并给特有扩展信息赋值
|
|
|
+ _this.gettykzandtovalue(res.data)
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+ },
|
|
|
+ geteditsampetypedata(v) {
|
|
|
+ // 获取样本类型数据
|
|
|
+ let _this = this
|
|
|
+ _this.$axios.get('/sampletype/sampletypeajax?id=' + v, {})
|
|
|
+ .then(res => {
|
|
|
+ // response
|
|
|
+ _this.sampleform.Capacitystr = res.data.SampleType.DefaultCapacity + ''
|
|
|
+ if (res.data.VHours === '5000-1-1 23:59:59') {
|
|
|
+ _this.sampleform.Isyongjiu = true
|
|
|
+ } else {
|
|
|
+ _this.sampleform.ValidityDatedate = new Date(res.data.VHours)
|
|
|
+ _this.sampleform.Isyongjiu = false
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ saveandadd(value) {
|
|
|
+ this.savesample(value)
|
|
|
+ // 控制坐标
|
|
|
+ // this.teststr = this.teststr.substring(0, this.teststr.length - 3) + (parseInt(this.teststr.charAt(this.teststr.length - 3)) + 1) + this.teststr.substring(this.teststr.length - 2, this.teststr.length)
|
|
|
+ if (this.dchxtable >= this.TableWidth) {
|
|
|
+ if (this.dchytable >= this.TableHeight) {
|
|
|
+ this.$message({
|
|
|
+ type: 'warning',
|
|
|
+ message: '超出冻存盒界限!'
|
|
|
+ })
|
|
|
+ } else {
|
|
|
+ this.dchxtable = 1
|
|
|
+ this.dchytable++
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ this.dchxtable++
|
|
|
+ }
|
|
|
+ },
|
|
|
+ clearsampleform() {
|
|
|
+ this.disabledbarcode = false
|
|
|
+ this.disabledsamplecode = false
|
|
|
+ this.disabledsampletype = false
|
|
|
+ this.disabledsamplingorgan = false
|
|
|
+ this.disabledvaliditydate = false
|
|
|
+ this.disabledsourcebutton = false
|
|
|
+ this.disabledcheckprint = false
|
|
|
+ this.diaabledreceiveDate = false
|
|
|
+ this.diaabledyongjiu = false
|
|
|
+ this.disabledsamplingsite = false
|
|
|
+ this.disabledcapacity = false
|
|
|
+ this.disabledunit = false
|
|
|
+ this.disabledbtnpreopera = false
|
|
|
+ this.disabledgroup = false
|
|
|
+ this.sampleform.BarCode = ''
|
|
|
+ this.sampleform.SampleCode = ''
|
|
|
+ this.sampleform.SampleTypestr = ''
|
|
|
+ this.sampleform.SampleTypeName = ''
|
|
|
+ this.sampleform.Name = ''
|
|
|
+ this.selectedorgan = []
|
|
|
+ this.sampleform.SamplingSite = ''
|
|
|
+ this.sampleform.ReceiveDatedate = new Date()
|
|
|
+ this.sampleform.ValidityDatedate = ''
|
|
|
+ this.sampleform.Isyongjiu = false
|
|
|
+ this.sampleform.InnerCode = ''
|
|
|
+ this.sampleform.Remark = ''
|
|
|
+ this.sampleform.CreateUserId = this.authUser.Profile.Id
|
|
|
+ this.sampleform.type_flag = 'add'
|
|
|
+ this.sampleinfoid = 0
|
|
|
+ if (this.Apply_flag) {
|
|
|
+ // 清空特有扩展
|
|
|
+ this.sampleform.typetykzlist = []
|
|
|
+ this.$refs['samplemanageform'].resetFields()
|
|
|
+ // 清空上传数据
|
|
|
+ this.$refs.refuploadattach.clearFiles()
|
|
|
+ this.achmentlist = []
|
|
|
+ }
|
|
|
+ },
|
|
|
+ deletedata() {
|
|
|
+ let _this = this
|
|
|
+ if (_this.sampleinfoid > 0) {
|
|
|
+ this.$confirm('此操作将永久删除该样本, 是否继续?', '提示', {
|
|
|
+ confirmButtonText: '确定',
|
|
|
+ cancelButtonText: '取消',
|
|
|
+ type: 'warning'
|
|
|
+ }).then(() => {
|
|
|
+ _this.$axios.delete('sampleinput/' + _this.sampleinfoid + '?sampletype=' + _this.sampleinfotype, null)
|
|
|
+ .then(res => {
|
|
|
+ // response
|
|
|
+ if (res.data.code === 0) {
|
|
|
+ _this.$message({
|
|
|
+ type: 'success',
|
|
|
+ message: res.data.message
|
|
|
+ })
|
|
|
+ // 更新界面
|
|
|
+ _this.handleclk(_this.xbox - 1, _this.ybox - 1, _this.xshelf, _this.yshelf)
|
|
|
+ // _this.goAnchor('#equishelfcard')
|
|
|
+ } else {
|
|
|
+ _this.$message({
|
|
|
+ type: 'warning',
|
|
|
+ message: res.data.message
|
|
|
+ })
|
|
|
+ }
|
|
|
+ })
|
|
|
+ .catch(() => {})
|
|
|
+ }).catch(() => {})
|
|
|
+ }
|
|
|
+ },
|
|
|
+ downloadEquip() {
|
|
|
+ let _this = this
|
|
|
+ _this.$axios.put('/sampleoperation/downloaddata/' + '2_' + this.titlename.substring(1, this.titlename.length -
|
|
|
+ 1) + '_' + this.equipid + '_' + this.yshelf + '_' + this.xshelf + '_' + this.xbox + '_' + this.ybox, {})
|
|
|
+ .then(res => {
|
|
|
+ // response
|
|
|
+ if (res.data.code === 0) {
|
|
|
+ this.$message({
|
|
|
+ type: 'success',
|
|
|
+ message: '下载成功!'
|
|
|
+ })
|
|
|
+ window.location.href = 'http://' + res.data.message
|
|
|
+ }
|
|
|
+ })
|
|
|
+ .catch(err => {
|
|
|
+ // handle error
|
|
|
+ console.error(err)
|
|
|
+ })
|
|
|
+ },
|
|
|
+
|
|
|
+ downloadBox() {
|
|
|
+ if (this.xshelf === -1 || this.yshelf === -1 || this.xbox === -1 || this.ybox === -1) {
|
|
|
+ this.$message({
|
|
|
+ type: 'warning',
|
|
|
+ message: '请选择合适位置!'
|
|
|
+ })
|
|
|
+ } else if (this.TableWidth === 0 || this.TableHeight === 0) {
|
|
|
+ this.$message({
|
|
|
+ type: 'warning',
|
|
|
+ message: '请先添加冻存盒!'
|
|
|
+ })
|
|
|
+ } else {
|
|
|
+ let _this = this
|
|
|
+ _this.$axios.put('/sampleoperation/downloaddata/' + '1_' + this.titlename.substring(1, this.titlename.length -
|
|
|
+ 1) + '_' + this.equipid + '_' + this.yshelf + '_' + this.xshelf + '_' + this.xbox + '_' + this.ybox, {})
|
|
|
+ .then(res => {
|
|
|
+ // response
|
|
|
+ if (res.data.code === 0) {
|
|
|
+ this.$message({
|
|
|
+ type: 'success',
|
|
|
+ message: '下载成功!'
|
|
|
+ })
|
|
|
+ window.location.href = 'http://' + res.data.message
|
|
|
+ }
|
|
|
+ })
|
|
|
+ .catch(err => {
|
|
|
+ // handle error
|
|
|
+ console.error(err)
|
|
|
+ })
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ showEquipemplate() {
|
|
|
+ let _this = this
|
|
|
+ _this.$axios.get('/sampleoperation/templateNames', {})
|
|
|
+ .then(res => {
|
|
|
+ if (res.data.items && res.data.items.length > 0) {
|
|
|
+ _this.downloadTemplates = res.data.items
|
|
|
+ } else {
|
|
|
+ _this.downloadTemplates = [{
|
|
|
+ Name: "默认模版"
|
|
|
+ }]
|
|
|
+ }
|
|
|
+ _this.downloadTemplateName = _this.downloadTemplates[0].Name
|
|
|
+ this.downloadEquipVisible = true
|
|
|
+ })
|
|
|
+ .catch(err => {
|
|
|
+ // handle error
|
|
|
+ console.error(err)
|
|
|
+ })
|
|
|
+ },
|
|
|
+
|
|
|
+ showBoxTemplate() {
|
|
|
+ if (this.xshelf === -1 || this.yshelf === -1 || this.xbox === -1 || this.ybox === -1) {
|
|
|
+ this.$message({
|
|
|
+ type: 'warning',
|
|
|
+ message: '请选择合适位置!'
|
|
|
+ })
|
|
|
+ return
|
|
|
+ } else if (this.TableWidth === 0 || this.TableHeight === 0) {
|
|
|
+ this.$message({
|
|
|
+ type: 'warning',
|
|
|
+ message: '请先添加冻存盒!'
|
|
|
+ })
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ let _this = this
|
|
|
+ _this.$axios.get('/sampleoperation/templateNames', {})
|
|
|
+ .then(res => {
|
|
|
+ if (res.data.items && res.data.items.length > 0) {
|
|
|
+ _this.downloadTemplates = res.data.items
|
|
|
+ } else {
|
|
|
+ _this.downloadTemplates = [{
|
|
|
+ Name: "默认模版"
|
|
|
+ }]
|
|
|
+ }
|
|
|
+ _this.downloadTemplateName = _this.downloadTemplates[0].Name
|
|
|
+ this.downloadBoxVisible = true
|
|
|
+ })
|
|
|
+ .catch(err => {
|
|
|
+ // handle error
|
|
|
+ console.error(err)
|
|
|
+ })
|
|
|
+ },
|
|
|
+
|
|
|
+
|
|
|
+ downloadEquip2() {
|
|
|
+ let _this = this
|
|
|
+ _this.$axios.get('/sampleoperation/downloaddata/' + '2_' + this.titlename.substring(1, this.titlename.length -
|
|
|
+ 1) + '_' + this.equipid + '_' + this.yshelf + '_' + this.xshelf + '_' + this.xbox + '_' + this.ybox +
|
|
|
+ "?templateName=" + this.downloadTemplateName, {})
|
|
|
+ .then(res => {
|
|
|
+ // response
|
|
|
+ if (res.data.code === 0) {
|
|
|
+ this.$message({
|
|
|
+ type: 'success',
|
|
|
+ message: '下载成功!'
|
|
|
+ })
|
|
|
+ window.location.href = 'http://' + res.data.message
|
|
|
+ }
|
|
|
+ this.downloadEquipVisible = false
|
|
|
+ })
|
|
|
+ .catch(err => {
|
|
|
+ // handle error
|
|
|
+ console.error(err)
|
|
|
+ })
|
|
|
+ },
|
|
|
+
|
|
|
+ downloadBox2() {
|
|
|
+ let _this = this
|
|
|
+ _this.$axios.get('/sampleoperation/downloaddata/' + '1_' + this.titlename.substring(1, this.titlename.length -
|
|
|
+ 1) + '_' + this.equipid + '_' + this.yshelf + '_' + this.xshelf + '_' + this.xbox + '_' + this.ybox +
|
|
|
+ "?templateName=" + this.downloadTemplateName, {})
|
|
|
+ .then(res => {
|
|
|
+ // response
|
|
|
+ if (res.data.code === 0) {
|
|
|
+ this.$message({
|
|
|
+ type: 'success',
|
|
|
+ message: '下载成功!'
|
|
|
+ })
|
|
|
+ window.location.href = 'http://' + res.data.message
|
|
|
+ }
|
|
|
+ this.downloadBoxVisible = false
|
|
|
+ })
|
|
|
+ .catch(err => {
|
|
|
+ // handle error
|
|
|
+ console.error(err)
|
|
|
+ })
|
|
|
+ },
|
|
|
+
|
|
|
+ importData() {
|
|
|
+ let _this = this
|
|
|
+ if (_this.exportfilepath === '') {
|
|
|
+ _this.$message({
|
|
|
+ type: 'warning',
|
|
|
+ message: '请先上传导入文件!'
|
|
|
+ })
|
|
|
+ return
|
|
|
+ }
|
|
|
+ _this.$axios.put('/sampleoperation/importdata', {
|
|
|
+ URL: this.exportfilepath
|
|
|
+ })
|
|
|
+ .then(res => {
|
|
|
+ if (res.data.code === 0) {
|
|
|
+ _this.$message({
|
|
|
+ type: 'success',
|
|
|
+ message: res.data.message
|
|
|
+ })
|
|
|
+ _this.exportVisible = false
|
|
|
+ _this.exportfilepath = ''
|
|
|
+ _this.exportmsg = '未选择文件'
|
|
|
+ // 更新界面
|
|
|
+ _this.initData(_this.equipid)
|
|
|
+ _this.handleclk(_this.xbox - 1, _this.ybox - 1, _this.xshelf, _this.yshelf)
|
|
|
+ } else {
|
|
|
+ _this.$message({
|
|
|
+ type: 'warning',
|
|
|
+ message: res.data.message
|
|
|
+ })
|
|
|
+ }
|
|
|
+ })
|
|
|
+ .catch(err => {
|
|
|
+ // handle error
|
|
|
+ console.error(err)
|
|
|
+ })
|
|
|
+ },
|
|
|
+ handleexportfileSuccess(res, file) {
|
|
|
+ this.exportfilepath = res
|
|
|
+ },
|
|
|
+ beforeexportfileUpload(file) {
|
|
|
+ let i = file.name.lastIndexOf('.')
|
|
|
+ let typename = ''
|
|
|
+ if (i > -1) {
|
|
|
+ typename = file.name.substring(i)
|
|
|
+ }
|
|
|
+ let istype = (typename === '.xlsx')
|
|
|
+ let isLt50k = file.size / 1024 / 1024 / 2 < 1
|
|
|
+ if (!istype) {
|
|
|
+ this.$message.error('上传导入文件只能是 xlsx 格式!')
|
|
|
+ return false
|
|
|
+ }
|
|
|
+ if (!isLt50k) {
|
|
|
+ this.$message.error('上传导入文件大小不能超过 2M!')
|
|
|
+ return false
|
|
|
+ }
|
|
|
+ this.exportmsg = '上传文件:' + file.name
|
|
|
+ return true
|
|
|
+ },
|
|
|
+ refreshcbc() {
|
|
|
+ let _this = this
|
|
|
+ _this.downloading = true
|
|
|
+ // request
|
|
|
+ this.$axios.put('/equipment/refresh', {})
|
|
|
+ .then(res => {
|
|
|
+ // response
|
|
|
+ this.$message({
|
|
|
+ type: 'success',
|
|
|
+ message: '刷新冻存盒状态完成!'
|
|
|
+ })
|
|
|
+ _this.downloading = false
|
|
|
+ })
|
|
|
+ .catch(err => {
|
|
|
+ // handle error
|
|
|
+ console.error(err)
|
|
|
+ _this.downloading = false
|
|
|
+ })
|
|
|
+ },
|
|
|
+ recoverydialogcallback(v) {
|
|
|
+ this.handleclk(this.xbox - 1, this.ybox - 1, this.xshelf, this.yshelf)
|
|
|
+ // 回到顶部
|
|
|
+ // this.goAnchor('#equishelfcard')
|
|
|
+ },
|
|
|
+ numtoupchar(num) {
|
|
|
+ return String.fromCharCode(64 + parseInt(num))
|
|
|
+ },
|
|
|
+ goback() {
|
|
|
+ if (this.$route.query.size) {
|
|
|
+ this.$router.push({
|
|
|
+ name: this.$route.query.pname,
|
|
|
+ query: {
|
|
|
+ size: this.$route.query.size,
|
|
|
+ currentPage: this.$route.query.currentPage
|
|
|
+ }
|
|
|
+ })
|
|
|
+ } else {
|
|
|
+ this.$router.go(-1)
|
|
|
+ }
|
|
|
+ },
|
|
|
+ getuserlist() {
|
|
|
+ this.$axios.get('users/list', {})
|
|
|
+ .then(res => {
|
|
|
+ // response
|
|
|
+ if (res.data.items) {
|
|
|
+ this.userlist = res.data.items
|
|
|
+ }
|
|
|
+ this.userlist.unshift({
|
|
|
+ 'Id': this.authUser.Profile.Id,
|
|
|
+ 'Realname': this.authUser.Profile.Realname
|
|
|
+ })
|
|
|
+ this.sampleform.CreateUserId = this.authUser.Profile.Id
|
|
|
+ })
|
|
|
+ .catch(err => {
|
|
|
+ // handle error
|
|
|
+ console.error(err)
|
|
|
+ })
|
|
|
+ },
|
|
|
+
|
|
|
+ //获取当前上传图片字段
|
|
|
+ getitem(val) {
|
|
|
+ this.imagefiles = ''
|
|
|
+ this.imagefilelist = []
|
|
|
+ this.ImageTitle = val.Name
|
|
|
+ //显示已存储图片
|
|
|
+ if (val.FieldDefault != '') {
|
|
|
+ let imagearr = []
|
|
|
+ imagearr = val.FieldDefault.split('|')
|
|
|
+ for (var i = 0; i < imagearr.length; i++) {
|
|
|
+ if (imagearr[i] !== '') {
|
|
|
+ this.imagefilelist.unshift({
|
|
|
+ 'name': 'picture - ' + (i + 1),
|
|
|
+ 'url': 'http://' + imagearr[i]
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }
|
|
|
+ this.imagefiles = val.FieldDefault
|
|
|
+ }
|
|
|
+ this.imageDialog = true
|
|
|
+ this.extendId = val.Id
|
|
|
+ },
|
|
|
+
|
|
|
+ beforeAvatarUpload(file) {
|
|
|
+ const isJPG = (file.type.indexOf('image/') === 0)
|
|
|
+ const isLt2M = file.size / 1024 / 1024 < 10
|
|
|
+ if (!isJPG) {
|
|
|
+ this.$message.error('上传影像文件只能是 图片 格式!')
|
|
|
+ return false
|
|
|
+ }
|
|
|
+ if (!isLt2M) {
|
|
|
+ this.$message.error('上传影像图片大小不能超过 1MB!')
|
|
|
+ return false
|
|
|
+ }
|
|
|
+ return true
|
|
|
+ },
|
|
|
+ handlePictureCardPreview(file) {
|
|
|
+ this.dialogImageUrl = file.url;
|
|
|
+ this.dialogVisible = true;
|
|
|
+ },
|
|
|
+ uploadrequest(option) {
|
|
|
+ let _this = this
|
|
|
+ axios.post(process.env.upfilehost, {})
|
|
|
+ .then(function (res) {
|
|
|
+ if (res.data && res.data.fid && res.data.fid !== '') {
|
|
|
+ option.action = `http://${res.data.url}/${res.data.fid}`
|
|
|
+ _this.uploadimg = {
|
|
|
+ uid: option.file.uid,
|
|
|
+ url: res.data.publicUrl,
|
|
|
+ fid: res.data.fid
|
|
|
+ }
|
|
|
+ uploadajax(option)
|
|
|
+ } else {
|
|
|
+ _this.$message({
|
|
|
+ type: 'warning',
|
|
|
+ message: '未上传成功!请刷新界面重新上传!'
|
|
|
+ })
|
|
|
+ }
|
|
|
+ })
|
|
|
+ .catch(function (error) {
|
|
|
+ console.log(error)
|
|
|
+ _this.$message({
|
|
|
+ type: 'warning',
|
|
|
+ message: '未上传成功!请重新上传!'
|
|
|
+ })
|
|
|
+ })
|
|
|
+ },
|
|
|
+ handleAvatarSuccess(res, file) {
|
|
|
+ for (var i = 0; i < this.animalextends.length; i++) {
|
|
|
+ if (this.animalextends[i].Id == this.extendId) {
|
|
|
+ this.animalextends[i].FieldDefault = this.animalextends[i].FieldDefault +
|
|
|
+ `${this.uploadimg.url}/${this.uploadimg.fid}|`
|
|
|
+ }
|
|
|
+ }
|
|
|
+ this.imagefiles = ''
|
|
|
+ },
|
|
|
+ handleRemove(file, fileList) {
|
|
|
+ console.log(this.imagefilelist);
|
|
|
+ for (var i = 0; i < this.imagefilelist.length; i++) {
|
|
|
+ if (this.imagefilelist[i].uid != file.uid) {
|
|
|
+ this.imagenewlist = this.imagenewlist + this.imagefilelist[i].url.substring(7, 42) + `|`
|
|
|
+ }
|
|
|
+ }
|
|
|
+ for (var j = 0; j < this.animalextends.length; j++) {
|
|
|
+ if (this.animalextends[j].Id == this.extendId) {
|
|
|
+ this.animalextends[j].FieldDefault = this.imagenewlist
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ getGrouplist() {
|
|
|
+ let _this = this
|
|
|
+ _this.$axios.get('/samplesgroup/grouplist', {})
|
|
|
+ .then(res => {
|
|
|
+ _this.groupList = res.data
|
|
|
+ })
|
|
|
+ },
|
|
|
+ contains(strs, str) {
|
|
|
+ let arrs = strs.split(',')
|
|
|
+ for (let v in arrs) {
|
|
|
+ if (arrs[v] === (str + '')) return true
|
|
|
+ }
|
|
|
+ return false
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+</script>
|
|
|
+
|
|
|
+<style lang="scss">
|
|
|
+ .sampledetail .el-card__header {
|
|
|
+ padding: 5px 10px;
|
|
|
+ font-size: 10px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .sampledetail .el-button--mini {
|
|
|
+ padding: 2px
|
|
|
+ }
|
|
|
+
|
|
|
+ .ulbgcolor div {
|
|
|
+ float: left;
|
|
|
+ }
|
|
|
+
|
|
|
+ .hoverdiv:hover {
|
|
|
+ box-shadow: 0 0 4px rgba(0, 0, 0, .4);
|
|
|
+ transform: scale(1.15);
|
|
|
+ }
|
|
|
+
|
|
|
+ .tablebox {
|
|
|
+ .sampletablemanage {
|
|
|
+ margin-left: -60px;
|
|
|
+ border-collapse: collapse;
|
|
|
+
|
|
|
+ td {
|
|
|
+ width: 20px;
|
|
|
+ height: 20px;
|
|
|
+ }
|
|
|
+
|
|
|
+ td:hover {
|
|
|
+ box-shadow: 0 0 5px rgba(0, 0, 0, .4);
|
|
|
+ transform: scale(1.15);
|
|
|
+ }
|
|
|
+
|
|
|
+ .visibletd {
|
|
|
+ border: 2px solid #A2B5CD;
|
|
|
+ width: 20px;
|
|
|
+ height: 20px;
|
|
|
+ text-align: center;
|
|
|
+ background: url(/assets/img/yuan.png);
|
|
|
+ background-size: 100% 100%;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ width: 530px;
|
|
|
+ height: 440px;
|
|
|
+ position: relative;
|
|
|
+ display: inline-block;
|
|
|
+ float: left;
|
|
|
+ padding-left: 50px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .exbar {
|
|
|
+ margin: 25px 0px 25px 250px;
|
|
|
+
|
|
|
+ .bar1 {
|
|
|
+ width: 20px;
|
|
|
+ height: 20px;
|
|
|
+ background-color: #EAEAEA;
|
|
|
+ display: inline-block;
|
|
|
+ }
|
|
|
+
|
|
|
+ .bar2 {
|
|
|
+ width: 20px;
|
|
|
+ height: 20px;
|
|
|
+ background-color: #13CE66;
|
|
|
+ display: inline-block;
|
|
|
+ }
|
|
|
+
|
|
|
+ .bar3 {
|
|
|
+ width: 20px;
|
|
|
+ height: 20px;
|
|
|
+ background-color: #FF4949;
|
|
|
+ display: inline-block;
|
|
|
+ }
|
|
|
+
|
|
|
+ .bar4 {
|
|
|
+ width: 20px;
|
|
|
+ height: 20px;
|
|
|
+ background-color: #D1EEEE;
|
|
|
+ display: inline-block;
|
|
|
+ }
|
|
|
+
|
|
|
+ .bar5 {
|
|
|
+ width: 20px;
|
|
|
+ height: 20px;
|
|
|
+ background-color: #20A0FF;
|
|
|
+ display: inline-block;
|
|
|
+ }
|
|
|
+
|
|
|
+ .bar6 {
|
|
|
+ width: 20px;
|
|
|
+ height: 20px;
|
|
|
+ background-color: #1E90FF;
|
|
|
+ display: inline-block;
|
|
|
+ }
|
|
|
+
|
|
|
+ .bar7 {
|
|
|
+ width: 20px;
|
|
|
+ height: 20px;
|
|
|
+ background-color: #000080;
|
|
|
+ display: inline-block;
|
|
|
+ }
|
|
|
+
|
|
|
+ .text0 {
|
|
|
+ width: 60px;
|
|
|
+ height: 20px;
|
|
|
+ display: inline-block;
|
|
|
+ }
|
|
|
+
|
|
|
+ .text1 {
|
|
|
+ width: 110px;
|
|
|
+ height: 20px;
|
|
|
+ display: inline-block;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .image {
|
|
|
+ width: 32px;
|
|
|
+ height: 32px;
|
|
|
+ display: block;
|
|
|
+ position: absolute;
|
|
|
+ padding-left: 5px;
|
|
|
+ margin-top: -17px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .divdcgnull {
|
|
|
+ width: 32px;
|
|
|
+ height: 32px;
|
|
|
+ display: block;
|
|
|
+ position: absolute;
|
|
|
+ padding-left: 5px;
|
|
|
+ margin-top: -17px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .fridge {
|
|
|
+ width: 576px;
|
|
|
+ height: 110px;
|
|
|
+ margin-left: 13px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .tdborder {
|
|
|
+ border: 1px solid #A2B5CD;
|
|
|
+ }
|
|
|
+
|
|
|
+ .tdtopborder {
|
|
|
+ border-top: 5px solid #A2B5CD;
|
|
|
+ }
|
|
|
+
|
|
|
+ .tdleftborder {
|
|
|
+ border-left: 5px solid #A2B5CD;
|
|
|
+ }
|
|
|
+
|
|
|
+ .tdrightborder {
|
|
|
+ border-right: 5px solid #A2B5CD;
|
|
|
+ }
|
|
|
+
|
|
|
+</style>
|
|
|
+<style type="text/css">
|
|
|
+ .attach-uploader .el-upload {
|
|
|
+ border: 1px dashed #63B8FF;
|
|
|
+ cursor: pointer;
|
|
|
+ position: relative;
|
|
|
+ overflow: hidden;
|
|
|
+ margin-bottom: -17px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .attach-uploader .el-upload:hover {
|
|
|
+ border-color: #228B22;
|
|
|
+ }
|
|
|
+
|
|
|
+ .attach-uploader-icon {
|
|
|
+ font-size: 25px;
|
|
|
+ color: #63B8FF;
|
|
|
+ width: 50px;
|
|
|
+ height: 50px;
|
|
|
+ line-height: 50px;
|
|
|
+ text-align: center;
|
|
|
+ }
|
|
|
+
|
|
|
+ .attach-uploader-icon:hover {
|
|
|
+ color: #228B22;
|
|
|
+ }
|
|
|
+
|
|
|
+</style>
|