瀏覽代碼

容器设置界面样式修改

shihang 6 年之前
父節點
當前提交
09536a3051
共有 1 個文件被更改,包括 1041 次插入0 次删除
  1. 1041 0
      src/dashoo.cn/frontend_web/src/pages/equipment/_opera/shelfset_new.vue

+ 1041 - 0
src/dashoo.cn/frontend_web/src/pages/equipment/_opera/shelfset_new.vue

@@ -0,0 +1,1041 @@
+<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>容器设置 【{{ename}}】</el-breadcrumb-item>
+        </el-breadcrumb>
+        <span style="float: right;">
+          <el-button size="mini" type="primary" class="el-button--small" style="margin-left: 5px"
+            @click="opforequip(0)">冻存架添加</el-button>
+          <el-button size="mini" type="primary" class="el-button--small" style="margin-left: 5px"
+            @click="opforequip(2)">修改</el-button>
+          <el-button size="mini" type="primary" class="el-button--small" style="margin-left: 5px"
+            @click="deletedata(0)">删除</el-button>
+          <el-button size="mini" type="primary" class="el-button--small" style="margin-left: 5px"
+            @click="moveforequip(0)">移动</el-button>
+          <el-button size="mini" type="primary" class="el-button--small" style="margin-left: 5px"
+            @click="copyforequip(0)">复制到</el-button>
+          <el-button size="mini" type="primary" class="el-button--small" style="margin-left: 15px"
+            @click="opforequip(1)">冻存盒添加</el-button>
+          <el-button size="mini" type="primary" class="el-button--small" style="margin-left: 5px"
+            @click="opforequip(3)">修改</el-button>
+          <el-button size="mini" type="primary" class="el-button--small" style="margin-left: 5px"
+            @click="deletedata(1)">删除</el-button>
+          <el-button size="mini" type="primary" class="el-button--small" style="margin-left: 5px"
+            @click="moveforequip(1)">移动</el-button>
+          <el-button size="mini" type="primary" class="el-button--small" style="margin-left: 5px"
+            @click="copyforequip(1)">复制到</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">
+        <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%)
+      </div>
+      <!--冰箱-->
+      <el-row v-loading="downloading" element-loading-text="数据拼命读取中,请稍候。。。">
+        <el-col :span="12">
+          <div>
+            <el-row :gutter="20">
+              <el-col :span="20">
+                <table cellspacing="0" cellpadding="0">
+                  <thead>
+                    <th></th>
+                    <th v-for="ind in colorTableWidth" :key="ind">{{ind}}</th>
+                  </thead>
+                  <tbody>
+                    <tr v-for=" (xcolorTable,k1) in colorTableHeight" :key="xcolorTable">
+                      <td style="text-align:center;font-size:20px;">{{numtoengs[xcolorTable-1]}}</td>
+                      <td v-for="(ycolorTable,k2) in colorTableWidth" :key="ycolorTable"
+                        v-bind:class="{ 'tdborder': true, 'tdleftborder': k2 === 0, 'tdtopborder': k1 === 0, 'tdrightborder': k2 === colorTableWidth-1 }"
+                        @click="shelfclk(k2+1, k1+1)">
+                        <div class="ulbgcolor"
+                          v-bind:style="{ width: unitwidth/colorTableWidth + 'px', height: unitheight/colorTableHeight + 'px' }">
+                          <div v-for="(shelfitem, index) in samplelist" :key="index">
+                            <div v-if="samplelist[index].XStation === k2+1 && samplelist[index].YStation === k1+1">
+                              <div class="hoverdiv" v-for="rowindex in samplelist[index].RowNum" :key="rowindex">
+                                <div
+                                  v-bind:style="{ 
+                                          width: (unitwidth/colorTableWidth-2.5) + 'px',
+                                          height: (unitheight/colorTableHeight/samplelist[index].RowNum-2.5) + 'px',
+                                          backgroundColor: ycolor == rowindex && xidx == k1+1 && yidx == k2+1 ? COLORARR[7] : COLORARR[0]}"
+                                  style="margin: 1px" @click="getEquipPosition(rowindex-1, k1+1, k2+1)">
+                                </div>
+                              </div>
+                            </div>
+                          </div>
+                        </div>
+                      </td>
+                    </tr>
+                  </tbody>
+                </table>
+                <div>
+                  <img :src="fridgebottomimg" class="fridge">
+                </div>
+              </el-col>
+              <el-col :span="4" style="margin-top: 20px">
+                <div class="ulbgcolor" v-for="g in shelfs.ColumnNum" :key="g"
+                  style="width:150px;float:left;margin-left:1px">
+                  <div class="hoverdiv" v-bind:style="{ 
+                          backgroundColor: xcolor == g && ycolor == ycolor && 
+                          xidx == shelfs.YStation && yidx == shelfs.XStation ? COLORARR[2] :                          
+                          (shelfs[numtoengs[ycolor-1]+g] == -2 ? COLORARR[0] : 
+                          (shelfs[numtoengs[ycolor-1]+g] == -1 ? COLORARR[1] : 
+                          (shelfs[numtoengs[ycolor-1]+g] > 0 && 
+                          shelfs[numtoengs[ycolor-1]+g] <= 25 ? COLORARR[3] : 
+                          (shelfs[numtoengs[ycolor-1]+g] > 25 && 
+                          shelfs[numtoengs[ycolor-1]+g] <= 50 ? COLORARR[4] : 
+                          (shelfs[numtoengs[ycolor-1]+g] > 50 && 
+                          shelfs[numtoengs[ycolor-1]+g] <= 75 ? COLORARR[5] : 
+                          (shelfs[numtoengs[ycolor-1]+g] > 75 ? COLORARR[6] : 
+                          COLORARR[7])))))) }" @click="handleclk(g-1, ycolor-1, shelfs.YStation, shelfs.XStation)"
+                    style="margin: 1px;width:50px; height:20px;">
+                  </div>
+                </div>
+              </el-col>
+            </el-row>
+          </div>
+        </el-col>
+
+        <el-col :span="12">
+          <div class="tablebox">
+            <table class="sampletable" v-bind:style="{ width: 10*TableWidth + '%', height: 10*TableHeight + '%' }">
+              <thead>
+                <th></th>
+                <th v-for="ind in TableWidth" :key="ind">{{ind}}</th>
+              </thead>
+              <tbody>
+                <tr class="index" v-for=" yindex in TableHeight" :key="yindex">
+                  <td style="width:3px;text-align:center;font-size:20px;">{{numtoengs[yindex-1]}}</td>
+                  <td v-for="xindex in TableWidth" :key="xindex" class="visibletd">
+                    <div v-for="(sdata, sindex) in boxSample" :key="sindex">
+                      <span v-if="sdata.Position.split(';')[0]==xindex && sdata.Position.split(';')[1]==yindex">
+                        <div v-if="sdata.IState === 5">
+                          <img :src="imghost + '/static/img/sampletypeimg/zhanwei.png'" class="image">
+                        </div>
+                        <span v-for="(type, tindex) in option" :key="tindex" v-else>
+                          <div v-if="sdata.SampleType == type.value">
+                            <img :src="imghost + type.photo" class="image">
+                          </div>
+                        </span>
+                      </span>
+                    </div>
+                  </td>
+                </tr>
+              </tbody>
+            </table>
+          </div>
+        </el-col>
+      </el-row>
+    </el-card>
+
+    <!--添加冻存盒用的对话框-->
+    <el-dialog :title="dialogtitle" :visible.sync="boxVisible">
+      <el-form>
+        <el-form-item label="冻存盒位置" :label-width="labelWidth">
+          <el-col :span="10">
+            <el-input-number v-model="operationform.xshelf" :min="1" disabled style="width: 100%"></el-input-number>
+          </el-col>
+          <el-col :span="2" class="positionblk" style="text-align:center;">层</el-col>
+          <el-col :span="10">
+            <el-input-number v-model="operationform.yshelf" :min="1" disabled style="width: 100%"></el-input-number>
+          </el-col>
+          <el-col :span="2" class="positionblk" style="text-align:center;">列</el-col>
+        </el-form-item>
+        <el-form-item label="条形码" required :label-width="labelWidth">
+          <el-input v-model="operationform.barcode"></el-input>
+        </el-form-item>
+        <el-form-item label="冻存盒大小" required :label-width="labelWidth">
+          <el-col :span="10">
+            <el-input-number v-model="operationform.boxxvalue" :min="1" :disabled="disableop2" style="width: 100%">
+            </el-input-number>
+          </el-col>
+          <el-col :span="2" class="positionblk" style="text-align:center;">行</el-col>
+          <el-col :span="10">
+            <el-input-number v-model="operationform.boxyvalue" :min="1" :disabled="disableop2" style="width: 100%">
+            </el-input-number>
+          </el-col>
+          <el-col :span="2" class="positionblk" style="text-align:center;">列</el-col>
+        </el-form-item>
+        <el-form-item label="样本类型" :label-width="labelWidth">
+          <div class="deviceaddsamptype">
+            <el-checkbox-group v-model="checkedsampetype" @change="handlecheckedsampetypeChange">
+              <el-checkbox v-for="v in option" :label="v.value" :key="v.label">{{v.label}}</el-checkbox>
+            </el-checkbox-group>
+          </div>
+          <el-checkbox :indeterminate="issampetypecheckedall" v-model="boxCheckAll" @change="handleCheckAllChange">全选
+          </el-checkbox>
+        </el-form-item>
+      </el-form>
+      <div slot="footer">
+        <el-button type="primary" @click="savedata()">确定</el-button>
+        <el-button @click="boxVisible = false">取消</el-button>
+      </div>
+    </el-dialog>
+    <!--添加冻存架用的对话框-->
+    <el-dialog :title="dialogtitle" :visible.sync="shelfVisible">
+      <el-form>
+        <el-form-item label="冻存架位置" :label-width="labelWidth">
+          <el-col :span="10">
+            <el-input-number v-model="operationform.yshelf" :min="1" disabled style="width: 100%"></el-input-number>
+          </el-col>
+          <el-col :span="2" class="positionblk" style="text-align:center;">层</el-col>
+          <el-col :span="10">
+            <el-input-number v-model="operationform.xshelf" :min="1" disabled style="width: 100%"></el-input-number>
+          </el-col>
+          <el-col :span="2" class="positionblk" style="text-align:center;">列</el-col>
+        </el-form-item>
+        <el-form-item label="条形码" required :label-width="labelWidth">
+          <el-input v-model="operationform.barcode"></el-input>
+        </el-form-item>
+        <el-form-item label="冻存架大小" :label-width="labelWidth">
+          <el-col :span="10">
+            <el-input-number v-model="operationform.ybox" :min="1" :disabled="disableop" style="width: 100%">
+            </el-input-number>
+          </el-col>
+          <el-col :span="2" class="positionblk" style="text-align:center;">层</el-col>
+          <el-col :span="10">
+            <el-input-number v-model="operationform.xbox" :min="1" :disabled="disableop" style="width: 100%">
+            </el-input-number>
+          </el-col>
+          <el-col :span="2" class="positionblk" style="text-align:center;">列</el-col>
+        </el-form-item>
+        <el-form-item label="样本类型" :label-width="labelWidth">
+          <div class="deviceaddsamptype">
+            <el-checkbox-group v-model="checkedsampetype" @change="handlecheckedsampetypeChange">
+              <el-checkbox v-for="stype in option" :label="stype.value" :key="stype.label">{{stype.label}}</el-checkbox>
+            </el-checkbox-group>
+          </div>
+          <el-checkbox :indeterminate="issampetypecheckedall" v-model="shelfCheckAll" @change="handleCheckAllChange">全选
+          </el-checkbox>
+        </el-form-item>
+      </el-form>
+      <div slot="footer">
+        <el-button type="primary" @click="savedata()">确定</el-button>
+        <el-button @click="shelfVisible = false">取消</el-button>
+      </div>
+    </el-dialog>
+    <!--复制对话框-->
+    <el-dialog :title="copydialogtitle" :visible.sync="copyVisible">
+      <div class="deviceaddsamptype">
+        <el-checkbox-group v-model="selectedsb" @change="handlecheckedsampetypeChange">
+          <el-checkbox v-for="stype in sblist" :label="stype.id" :key="stype.id">第{{stype.y}}行, 第{{stype.x}}列
+          </el-checkbox>
+        </el-checkbox-group>
+      </div>
+      <el-checkbox :indeterminate="issbcheckall" v-model="sbCheckAll" @change="handleCheckAllChange">全选</el-checkbox>
+      <el-checkbox v-model="iscopybox" v-if="copydialogtitle == '复制冻存架'">同步复制冻存盒</el-checkbox>
+      <div slot="footer">
+        <el-button type="primary" @click="savecopy()">确定</el-button>
+        <el-button @click="copyVisible = false">取消</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+  export default {
+    name: 'shelfset',
+    components: {},
+    data() {
+      return {
+        downloading: true,
+        imghost: '',
+        fridgebottomimg: '',
+        ename: '',
+        option: [], // 样本类型列表
+        option2: [], // 辅助全选框样本类型
+        tableColumnWidth: '200',
+        dialogFormVisible: false,
+        // 冰箱面板
+        unitwidth: 400, // 整个冰箱的尺寸
+        unitheight: 378,
+        dchxtable: -1, // 对勾所在位置
+        dchytable: -1,
+        xidx: -1, // 选中的冻存盒的位置
+        yidx: -1,
+        xcolor: -1, //  选中的冻存架的位置
+        ycolor: -1,
+        xtable: 4, // 样本所在冻存盒内位置
+        ytable: 4,
+        xcolorTable: 4,
+        ycolorTable: 4,
+        xshelf: -1, // 点击空冻存架
+        yshelf: -1,
+        shelfs: [], //选中冻存架
+        colorTableWidth: 0, //  冰箱的相对尺寸
+        colorTableHeight: 0,
+        TableWidth: 0, // 每个冻存盒的尺寸
+        TableHeight: 0,
+        // 冻存架/盒
+        dialogtitle: '',
+        shelfVisible: false,
+        copyShelfVisible: false,
+        boxVisible: false,
+        copyBoxVisible: false,
+        boxCheckAll: false, // 添加冻存盒
+        checkedsampetype: [],
+        operationform: {
+          xshelf: '',
+          yshelf: '',
+          xbox: '', // 为box的位置或尺寸
+          ybox: '',
+          boxxvalue: 1,
+          boxyvalue: 1,
+          barcode: '',
+          sampletype: '',
+          eid: ''
+        },
+        shelfCheckAll: false, // 添加冻存架
+        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'
+        ],
+        samplelist: [], // 新增,新的冰箱list和冻存盒/架list以及冻存盒样本list
+        selectedBox: {},
+        selectedShelf: {},
+        disableop: false,
+        disableop2: false,
+        boxSample: [],
+        equipid: 0, // 新增,设备id
+        COLORARR: ['#EAEAEA', '#13CE66', '#FF4949', '#D1EEEE', '#20A0FF', '#836FFF', '#000080', '#FF7777'],
+        ishavedch: true,
+        issampetypecheckedall: true, // 全选框
+        copyVisible: false, // 复制
+        copydialogtitle: '',
+        sblist: [],
+        selectedsb: [],
+        sbCheckAll: false, // 复制全选框
+        issbcheckall: false,
+        sbcheckalllist: [],
+        iscopybox: true // 复制冻存架是是否同步复制冻存盒
+      }
+    },
+    created() {
+      this.imghost = process.env.imgserverhost
+      let eid = this.$route.params.opera
+      this.operationform.eid = eid + ''
+      this.equipid = eid
+      this.initData(eid)
+      this.getfridgeimg(eid)
+      this.getType()
+    },
+    watch: {},
+    methods: {
+      initData(eid) {
+        let _this = this
+        // 获取冻存架信息
+        _this.$axios.get('/shelfset/equipmentdraw/' + eid, {})
+          .then(res => {
+            _this.samplelist = res.data.items
+            _this.colorTableHeight = res.data.dimension[1]
+            _this.colorTableWidth = res.data.dimension[0]
+            _this.downloading = false
+          })
+          .catch(err => {
+            _this.downloading = false
+            console.error(err)
+          })
+      },
+      getfridgeimg(eid) {
+        let _this = this
+        // 获取容器信息
+        _this.$axios.get('/equipment/getmodel/' + eid, {})
+          .then(res => {
+            _this.ename = res.data.Name
+            if (res.data && (res.data.DItem === 4)) {
+              _this.fridgebottomimg = _this.imghost + '/static/img/sampletypeimg/bottomydg.png'
+            } else {
+              _this.fridgebottomimg = _this.imghost + '/static/img/sampletypeimg/bottombx.png'
+            }
+          })
+          .catch({})
+      },
+      getType() {
+        let _this = this
+        _this.$axios.get('/sampleinput/slist/' + this.equipid, {})
+          .then(res => {
+            _this.option = []
+            _this.option2 = []
+            for (var i = 0; i < res.data.currentItemCount; i++) {
+              _this.option.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 + ''
+              })
+              _this.option2.push(res.data.items[i].Id + '')
+            }
+          })
+      },
+      handleclk(xindex, yindex, xcolorTable, ycolorTable) {
+        let _this = this
+        var inputstr = _this.equipid + ',' + ycolorTable + ',' + xcolorTable + ',' + (xindex + 1) + ',' + (yindex + 1)
+        _this.$axios.get('/shelfset/boxdraw/' + inputstr, {})
+          .then(res => {
+            _this.selectedShelf = res.data.Shelfbox
+            _this.selectedBox = res.data.Boxshelf
+            _this.boxSample = res.data.Boxsample
+            _this.TableHeight = _this.selectedBox.RowNum
+            _this.TableWidth = _this.selectedBox.ColumnNum
+            if (_this.TableWidth === 0) {
+              _this.ishavedch = false
+            } else {
+              _this.ishavedch = true
+            }
+          })
+          .catch(err => {
+            console.error(err)
+          })
+        // 修改坐标
+        this.xidx = xcolorTable
+        this.yidx = ycolorTable
+        this.xcolor = xindex + 1
+        this.ycolor = yindex + 1
+        this.dchxtable = -1
+        this.dchytable = -1
+      },
+      shelfclk(x, y) {
+        for (var i = 0; i < this.samplelist.length; i++) {
+          if (x === this.samplelist[i].XStation && y === this.samplelist[i].YStation) {
+            this.yshelf = -1
+            this.xshelf = -1
+            return
+          }
+        }
+        this.yshelf = y
+        this.xshelf = x
+        this.xidx = -1
+        this.yidx = -1
+        this.xcolor = -1
+        this.ycolor = -1
+        this.shelfs = []
+      },
+      // 获取冰箱冻存架点击坐标
+      getEquipPosition(ycolor, xidx, yidx) {
+        let index = (xidx - 1) * this.colorTableWidth + yidx - 1
+        this.shelfs = this.samplelist[index]
+        this.xidx = xidx
+        this.yidx = yidx
+        this.ycolor = ycolor + 1
+        this.xcolor = -1
+      },
+      
+      opforequip(seed) {
+        // seed----1:添加冻存盒;0:添加冻存架;2:编辑冻存架;3:编辑冻存盒
+        if (seed === 1) {
+          if (this.xidx === -1 && this.yidx === -1) {
+            this.$message({
+              type: 'warning',
+              message: '请先添加冻存架!'
+            })
+          } else if (this.TableHeight === 0 && this.TableWidth === 0) {
+            this.dialogtitle = '添加冻存盒'
+            this.boxCheckAll = true
+            this.boxVisible = true
+            this.disableop = false
+            this.operationform.xshelf = this.yidx
+            this.operationform.yshelf = this.xidx
+            this.operationform.xbox = this.xcolor
+            this.operationform.ybox = this.ycolor
+            this.operationform.eid = this.equipid + '_' + seed
+            this.checkedsampetype = this.option2
+            this.operationform.barcode = 'FF201710271533'
+          } else {
+            this.$message({
+              type: 'warning',
+              message: '所选位置已存在冻存盒!'
+            })
+          }
+        } else if (seed === 0) {
+          if (this.xshelf !== -1 && this.yshelf !== -1) {
+            this.dialogtitle = '添加冻存架'
+            this.shelfCheckAll = true
+            this.shelfVisible = true
+            this.disableop = false
+            this.operationform.xshelf = this.xshelf //列
+            this.operationform.yshelf = this.yshelf //层
+            this.operationform.eid = this.equipid + '_' + seed
+            this.checkedsampetype = this.option2
+            this.operationform.barcode = 'FF201710271534'
+          } else {
+            this.$message({
+              type: 'warning',
+              message: '请选择合适位置!'
+            })
+          }
+        } else if (seed === 2) {
+          if (this.xidx !== -1 && this.yidx !== -1) {
+            this.dialogtitle = '编辑冻存架'
+            this.shelfVisible = true
+            this.disableop = true
+            this.operationform.xshelf = this.selectedShelf.XStation
+            this.operationform.yshelf = this.selectedShelf.YStation
+            this.operationform.xbox = this.selectedShelf.ColumnNum
+            this.operationform.ybox = this.selectedShelf.RowNum
+            this.operationform.barcode = this.selectedShelf.BarCode
+            this.operationform.eid = this.equipid + '_' + seed
+            this.checkedsampetype = this.selectedShelf.SampleType.split(',')
+            this.shelfCheckAll = this.checkedsampetype.length === this.option.length
+            this.issampetypecheckedall = !this.shelfCheckAll
+          } else {
+            this.$message({
+              type: 'warning',
+              message: '请选择合适位置!'
+            })
+          }
+        } else {
+          if (this.ishavedch) {
+            this.dialogtitle = '编辑冻存盒'
+            this.boxVisible = true
+            this.disableop = true
+            this.disableop2 = this.boxSample.length !== 0
+            this.operationform.xshelf = this.yidx
+            this.operationform.yshelf = this.xidx
+            this.operationform.xbox = this.xcolor
+            this.operationform.ybox = this.ycolor
+            this.operationform.boxxvalue = this.selectedBox.RowNum
+            this.operationform.boxyvalue = this.selectedBox.ColumnNum
+            this.operationform.barcode = this.selectedBox.BarCode
+            this.operationform.eid = this.equipid + '_' + seed + '_' + this.selectedBox.ShelfId + '_' + this
+              .selectedShelf
+              .XStation + '_' + this.selectedShelf.YStation
+            this.checkedsampetype = this.selectedBox.SampleType.split(',')
+            this.boxCheckAll = this.checkedsampetype.length === this.option.length
+            this.issampetypecheckedall = !this.boxCheckAll
+          } else {
+            this.$message({
+              type: 'warning',
+              message: '请先选择冻存盒!'
+            })
+          }
+        }
+      },
+      savedata() {
+        let _this = this
+        if (this.disableop) { // 根据是否disable某些选项来判断为编辑或添加
+          _this.operationform.sampletype = _this.checkedsampetype.join(',')
+          _this.$axios.put('/shelfset/editforequip', _this.operationform)
+            .then(res => {
+              if (res.data.code === 0) {
+                this.$message({
+                  type: 'success',
+                  message: res.data.message
+                })
+                _this.boxVisible = false
+                _this.shelfVisible = false
+                _this.handleclk(this.xcolor - 1, this.ycolor - 1, this.xidx, this.yidx)
+              } else {
+                this.$message({
+                  type: 'warning',
+                  message: res.data.message
+                })
+              }
+            })
+            .catch(err => {
+              console.error(err)
+            })
+        } else {
+          if (this.operationform.barcode !== '' && this.operationform.xbox !== '' && this.operationform.ybox !== '') {
+            _this.operationform.sampletype = _this.checkedsampetype.join(',')
+            _this.$axios.post('/shelfset', _this.operationform)
+              .then(res => {
+                if (res.data.code === 0) {
+                  this.$message({
+                    type: 'success',
+                    message: res.data.message
+                  })
+                  _this.boxVisible = false
+                  _this.shelfVisible = false
+                  _this.yshelf = -1
+                  _this.xshelf = -1
+                  _this.initData(_this.equipid)
+                  _this.handleclk(this.xcolor - 1, this.ycolor - 1, this.xidx, this.yidx)
+                } else {
+                  this.$message({
+                    type: 'warning',
+                    message: res.data.message
+                  })
+                }
+              })
+              .catch(err => {
+                console.error(err)
+              })
+          } else {
+            this.$message({
+              type: 'warning',
+              message: '请输入必填项!'
+            })
+          }
+        }
+      },
+      havesample(val) {
+        for (var i = 0; i < this.samplelist.length; i++) {
+          if (this.selectedShelf.Id === this.samplelist[i].ShelfId) {
+            if (val) { // 删除冻存盒
+              if (this.samplelist[i][this.numtoengs[this.ycolor - 1] + this.xcolor] !== -1 &&
+                this.samplelist[i][this.numtoengs[this.ycolor - 1] + this.xcolor] !== -2 &&
+                this.xcolor !== -1 && this.ycolor !== -1) {
+                return true
+              } else {
+                return false
+              }
+            } else { // 删除冻存架
+              // 检查每个方格的颜色值
+              for (var j = 0; j < this.selectedShelf.RowNum; j++) {
+                for (var k = 1; k <= this.selectedShelf.ColumnNum; k++) {
+                  if (this.samplelist[i][this.numtoengs[j] + k] !== -1 &&
+                    this.samplelist[i][this.numtoengs[j] + k] !== -2 && this.xcolor !== -1 && this.ycolor !== -1) {
+                    return true
+                  }
+                }
+              }
+              return false
+            }
+          }
+        }
+      },
+      moveforequip(seed) {
+        // seed: 0---冻存架; 1---冻存盒
+        if (!seed) {
+          if (this.xidx !== -1 && this.yidx !== -1) {
+            window.location.href = '/equipment/devicemove?id=' + this.equipid + '&x=' + this.yidx + '&y=' + this.xidx +
+              '&type=' + seed
+          } else if (this.xshelf !== -1 && this.yshelf !== -1) {
+            this.$message({
+              type: 'warning',
+              message: '冻存架为空!'
+            })
+          } else {
+            this.$message({
+              type: 'warning',
+              message: '请选择冻存架!'
+            })
+          }
+        } else {
+          if (this.xcolor === -1 && this.ycolor === -1) {
+            this.$message({
+              type: 'warning',
+              message: '请先添加冻存架!'
+            })
+          } else if (this.selectedBox.RowNum === 0 && this.selectedBox.ColumnNum === 0) {
+            this.$message({
+              type: 'warning',
+              message: '无法移动空冻存盒!'
+            })
+          } else {
+            window.location.href = '/equipment/devicemove?id=' + this.equipid + '&x=' + this.xcolor + '&y=' + this
+              .ycolor +
+              '&type=' + seed + '&xshelf=' + this.yidx + '&yshelf=' + this.xidx
+          }
+        }
+      },
+      copyforequip(seed) {
+        // seed: 0---冻存架; 1---冻存盒
+        if (!seed) {
+          if (this.yidx === -1 && this.xidx === -1) {
+            this.$message({
+              type: 'warning',
+              message: '请选择冻存架!'
+            })
+          } else if (this.xshelf !== -1 && this.yshelf !== -1) {
+            this.$message({
+              type: 'warning',
+              message: '请先添加冻存架!'
+            })
+          } else if (this.samplelist.length === this.colorTableHeight * this.colorTableWidth) {
+            this.$message({
+              type: 'warning',
+              message: '冰箱已满!'
+            })
+          } else {
+            this.copyVisible = true
+            this.copydialogtitle = '复制冻存架'
+            var empty;
+            this.sblist = [];
+            this.sbcheckalllist = []
+            for (var i = 1; i <= this.colorTableHeight; i++) {
+              for (var j = 1; j <= this.colorTableWidth; j++) {
+                empty = true
+                for (var k = 0; k < this.samplelist.length; k++) {
+                  if (j === this.samplelist[k].XStation && i === this.samplelist[k].YStation) {
+                    empty = false
+                  }
+                }
+                if (empty) {
+                  this.sblist.push({
+                    id: this.sblist.length,
+                    x: j,
+                    y: i
+                  })
+                  this.sbcheckalllist.push(this.sbcheckalllist.length)
+                }
+              }
+            }
+          }
+        } else {
+          if (this.xshelf !== -1 && this.yshelf !== -1) {
+            this.$message({
+              type: 'warning',
+              message: '请先添加冻存架!'
+            })
+          } else if (this.xcolor === -1 && this.ycolor === -1) {
+            this.$message({
+              type: 'warning',
+              message: '请选择冻存盒!'
+            })
+          } else if (this.selectedBox.RowNum === 0 && this.selectedBox.ColumnNum === 0) {
+            this.$message({
+              type: 'warning',
+              message: '请先添加冻存盒!'
+            })
+          } else {
+            var num = 0;
+            this.sblist = [];
+            this.sbcheckalllist = []
+            for (var l = 0; l < this.samplelist.length; l++) {
+              if (this.selectedShelf.Id === this.samplelist[l].ShelfId) {
+                for (var m = 0; m < this.samplelist[l].RowNum; m++) {
+                  for (var n = 1; n <= this.samplelist[l].ColumnNum; n++) {
+                    if (this.samplelist[l][this.numtoengs[m] + n] !== -2) {
+                      num++
+                    } else {
+                      this.sblist.push({
+                        id: this.sblist.length,
+                        x: n,
+                        y: m + 1
+                      })
+                      this.sbcheckalllist.push(this.sbcheckalllist.length)
+                    }
+                  }
+                }
+                break
+              }
+            }
+            if (num === this.selectedShelf.RowNum * this.selectedShelf.ColumnNum) {
+              this.$message({
+                type: 'warning',
+                message: '冻存架已满!'
+              })
+            } else {
+              this.copyVisible = true
+              this.copydialogtitle = '复制冻存盒'
+            }
+          }
+        }
+      },
+      savecopy() {
+        if (this.copydialogtitle === '复制冻存架') {
+          if (this.selectedsb.length === 0) {
+            this.$message({
+              type: 'warning',
+              message: '请选择冻存架!'
+            })
+          } else {
+            var copytostr = ''
+            for (var i = 0; i < this.selectedsb.length; i++) {
+              copytostr += this.sblist[this.selectedsb[i]].x + ';' + this.sblist[this.selectedsb[i]].y + ','
+            }
+            copytostr = copytostr.substring(0, copytostr.length - 1)
+            let _this = this
+            _this.$axios.put('/shelfset/shelfcopy/' + this.equipid + '_' + copytostr + '_' + this.iscopybox + '_' +
+                this.yidx + '_' + this.xidx, {})
+              .then(res => {
+                if (res.data.code === 0) {
+                  this.$message({
+                    type: 'success',
+                    message: res.data.message
+                  })
+                  _this.initData(_this.equipid)
+                  _this.selectedsb = []
+                  _this.copyVisible = false
+                } else {
+                  this.$message({
+                    type: 'warning',
+                    message: res.data.message
+                  })
+                }
+              })
+              .catch(err => {
+                console.error(err)
+              })
+          }
+        } else {
+          if (this.selectedsb.length === 0) {
+            this.$message({
+              type: 'warning',
+              message: '请选择冻存盒!'
+            })
+          } else {
+            var copytostr2 = ''
+            for (var j = 0; j < this.selectedsb.length; j++) {
+              copytostr2 += this.sblist[this.selectedsb[j]].x + ';' + this.sblist[this.selectedsb[j]].y + ','
+            }
+            copytostr2 = copytostr2.substring(0, copytostr2.length - 1)
+            let _this = this
+            _this.$axios.put('/shelfset/boxcopy/' + this.equipid + '_' + this.yidx + '_' + this.xidx + '_' + this
+                .xcolor +
+                '_' + this.ycolor + '_' + copytostr2, {})
+              .then(res => {
+                if (res.data.code === 0) {
+                  this.$message({
+                    type: 'success',
+                    message: res.data.message
+                  })
+                  _this.initData(_this.equipid)
+                  _this.selectedsb = []
+                  _this.copyVisible = false
+                } else {
+                  this.$message({
+                    type: 'warning',
+                    message: res.data.message
+                  })
+                }
+              })
+              .catch(err => {
+                console.error(err)
+              })
+          }
+        }
+      },
+      deletedata(val) {
+        // val--- 0: 删除冻存架;1:删除冻存盒
+        let _this = this
+        if (this.havesample(val)) {
+          this.$message({
+            type: 'warning',
+            message: '含有样本不能删除!'
+          })
+          return
+        }
+        if (val === 0) {
+          if (this.xidx !== -1 && this.yidx !== -1) {
+            _this.$confirm('此操作将永久删除该冻存架, 是否继续?', '提示', {
+              confirmButtonText: '确定',
+              cancelButtonText: '取消',
+              type: 'warning'
+            }).then(() => {
+              _this.$axios.delete('shelfset/deleteforequip/' + val + '_' + _this.selectedShelf.XStation + '_' +
+                  _this.selectedShelf.YStation + '_' + _this.equipid, {})
+                .then(res => {
+                  if (res.data.code === 0) {
+                    this.$message({
+                      type: 'success',
+                      message: res.data.message
+                    })
+                    _this.initData(_this.equipid)
+                  } else {
+                    this.$message({
+                      type: 'warning',
+                      message: res.data.message
+                    })
+                  }
+                })
+                .catch(err => {
+                  console.error(err)
+                })
+            }).catch(() => {})
+          } else {
+            this.$message({
+              type: 'warning',
+              message: '空冻存架不能删除!'
+            })
+          }
+        } else {
+          if (this.TableHeight !== 0 && this.TableWidth !== 0) {
+            _this.$confirm('此操作将永久删除该冻存盒, 是否继续?', '提示', {
+              confirmButtonText: '确定',
+              cancelButtonText: '取消',
+              type: 'warning'
+            }).then(() => {
+              _this.$axios.delete('shelfset/deleteforequip/' + val + '_' + _this.xcolor + '_' + _this.ycolor + '_' +
+                  _this.equipid + '_' + _this.yidx + '_' + _this.xidx, {})
+                .then(res => {
+                  if (res.data.code === 0) {
+                    this.$message({
+                      type: 'success',
+                      message: res.data.message
+                    })
+                    _this.initData(_this.equipid)
+                    _this.handleclk(this.xcolor - 1, this.ycolor - 1, this.xidx, this.yidx)
+                  } else {
+                    this.$message({
+                      type: 'warning',
+                      message: res.data.message
+                    })
+                  }
+                })
+                .catch(err => {
+                  console.error(err)
+                })
+            }).catch(() => {})
+          } else {
+            this.$message({
+              type: 'warning',
+              message: '空冻存盒不能删除!'
+            })
+          }
+        }
+      },
+      // 全选框控制
+      handleCheckAllChange(val) {
+        this.checkedsampetype = val ? this.option2 : []
+        this.selectedsb = val ? this.sbcheckalllist : []
+        this.issampetypecheckedall = false
+        this.issbcheckall = false
+      },
+      handlecheckedsampetypeChange(value) {
+        let checkedCount = value.length
+        this.shelfCheckAll = checkedCount === this.option2.length
+        this.boxCheckAll = checkedCount === this.option2.length
+        this.sbCheckAll = checkedCount === this.sblist.length
+        this.issampetypecheckedall = checkedCount > 0 && checkedCount < this.option2.length
+        this.issbcheckall = checkedCount > 0 && checkedCount < this.sblist.length
+      },
+      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
+            }
+          })
+          this.$router.go(-1)
+        } else {
+          this.$router.go(-1)
+        }
+      }
+    }
+  }
+
+</script>
+
+<style lang="scss" scoped>
+  .ulbgcolor div {
+    float: left;
+  }
+
+  .hoverdiv:hover {
+    box-shadow: 0 0 4px rgba(0, 0, 0, .4);
+    transform: scale(1.15);
+  }
+
+  .tablebox {
+    .sampletable {
+      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 black;
+        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;
+  }
+
+  .image {
+    width: 32px;
+    height: 32px;
+    display: block;
+    position: absolute;
+    padding-left: 8px;
+    margin-top: -17px;
+  }
+
+  .fridge {
+    width: 425px;
+    height: 110px;
+    margin-left: 13px;
+  }
+
+  .worklisticolist {
+    font-size: 14px;
+    margin-bottom: 12px;
+  }
+
+  .worklisticolist i:not(:first-child) {
+    margin-left: 4px;
+  }
+
+  .worklisticolist i {
+    margin-right: 3px;
+  }
+
+  .tdborder {
+    border: 1px solid #B4CDCD;
+  }
+
+  .tdtopborder {
+    border-top: 5px solid #A3A3A3;
+  }
+
+  .tdleftborder {
+    border-left: 5px solid #A3A3A3;
+  }
+
+  .tdrightborder {
+    border-right: 5px solid #A3A3A3;
+  }
+
+  .deviceaddsamptype {
+    margin-top: 2px;
+    margin-left: 1px;
+    border: 1px #CCCCCC solid;
+    overflow: auto;
+    height: 110px;
+    padding: 1px;
+
+    .el-checkbox {
+      margin-left: 4px;
+    }
+  }
+
+  .el-form-item__content .deviceaddsamptype {
+    line-height: 15px;
+  }
+
+</style>