licp
2024-04-07 36181abc48c6d890efcc56b0e76d600f6d3ecb7f
完成样品管理接口对接
已修改4个文件
507 ■■■■ 文件已修改
src/assets/api/controller.js 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/do/b1-sample/detail.vue 85 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/view/b1-sample.vue 410 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/api/controller.js
@@ -188,4 +188,14 @@
const warehouse = {
  addWarehouse: "/warehouse/addWarehouse", //添加仓库
  selectWarehouse: "/warehouse/selectWarehouse", //查询仓库
  upWarehouse: "/warehouse/upWarehouse", //修改仓库
  delWarehouse: "/warehouse/delWarehouse", //删除仓库
  addShelf: "/warehouse/addShelf", //添加货架
  upShelf: "/warehouse/upShelf", //修改货架
  delShelf: "/warehouse/delShelf", //删除货架
  getWarehouse: "/warehouse/getWarehouse", //查询货架下的存放信息
  inWarehouse: "/warehouse/inWarehouse", //样品入库
  outWarehouse: "/warehouse/outWarehouse", //样品出库
  getSampleRecord: "/warehouse/getSampleRecord", //查询样品详细记录
  searchSampleId: "/warehouse/searchSampleId", //通过样品编号进行检索
}
src/components/do/b1-sample/detail.vue
@@ -13,14 +13,7 @@
        <div class="search_label">样品编号:</div>
        <div class="search_input">
          <el-input size="small" placeholder="请输入" clearable
                            v-model="entity.sample" disabled></el-input>
        </div>
      </div>
      <div class="search_thing">
        <div class="search_label">样品数量:</div>
        <div class="search_input">
          <el-input size="small" placeholder="请输入" clearable
                            v-model="entity.sample" disabled></el-input>
                            v-model="entity.sampleCode" disabled></el-input>
        </div>
      </div>
      <div class="search_thing">
@@ -31,67 +24,78 @@
        </div>
      </div>
      <div class="search_thing">
        <div class="search_label">样品数量:</div>
        <div class="search_input">
          <el-input size="small" placeholder="请输入" clearable
                            v-model="entity.num" disabled></el-input>
        </div>
      </div>
      <div class="search_thing">
        <div class="search_label">单位:</div>
        <div class="search_input">
          <el-input size="small" placeholder="请输入" clearable
                            v-model="entity.sample" disabled></el-input>
                            v-model="entity.unit" disabled></el-input>
        </div>
      </div>
      <div class="search_thing">
        <div class="search_label">入库时间:</div>
        <div class="search_input">
          <el-input size="small" placeholder="请输入" clearable
                            v-model="entity.sample" disabled></el-input>
                            v-model="entity.date" disabled></el-input>
        </div>
      </div>
      <div class="search_thing">
        <div class="search_label">入库人:</div>
        <div class="search_input">
          <el-input size="small" placeholder="请输入" clearable
                            v-model="entity.sample" disabled></el-input>
                            v-model="entity.user" disabled></el-input>
        </div>
      </div>
      <div class="search_thing">
      <div class="search_thing" >
        <div class="search_label">库位号:</div>
        <div class="search_input">
          <el-input size="small" placeholder="请输入" clearable
                            v-model="entity.sample" disabled></el-input>
                            v-model="entity.code" disabled style="min-width: 230px;"></el-input>
        </div>
      </div>
    </div>
    <h4>检验项目</h4>
    <div class="table">
      <el-table class="el-table" ref="productTable" :data="productList" height="380px" tooltip-effect="dark" border>
      <el-table class="el-table" ref="productTable" :data="products" height="380px" tooltip-effect="dark" border>
                <el-table-column type="index" align="center" label="序号" width="70" :key="Math.random()">
                </el-table-column>
                <el-table-column prop="inspectionItemSubclass" label="检验项" min-width="100"
                <el-table-column prop="inspectionItem" label="检验项" min-width="100"
                    show-overflow-tooltip></el-table-column>
                <el-table-column prop="sonLaboratory" label="检验项分类" min-width="100" show-overflow-tooltip></el-table-column>
                <el-table-column prop="method" label="实验室" min-min-width="100" show-overflow-tooltip></el-table-column>
                <el-table-column prop="inspectionItemSubclass" label="检验项分类" min-width="100" show-overflow-tooltip></el-table-column>
                <el-table-column prop="laboratory" label="实验室" min-min-width="100" show-overflow-tooltip></el-table-column>
                <el-table-column prop="unit" label="单位" min-width="100" show-overflow-tooltip></el-table-column>
                <el-table-column prop="price" label="设备" min-width="100" show-overflow-tooltip></el-table-column>
                <el-table-column prop="manDay" label="委托编号" min-width="100" show-overflow-tooltip></el-table-column>
                <el-table-column prop="manHourGroup" label="检验人" min-width="100" show-overflow-tooltip></el-table-column>
                <el-table-column prop="section" label="检验时间" min-width="100" show-overflow-tooltip></el-table-column>
                <el-table-column prop="ask" label="结论" min-width="100">
                <el-table-column prop="equipValue" label="设备" min-width="100" show-overflow-tooltip></el-table-column>
                <el-table-column prop="entrustCode" label="委托编号" min-width="100" show-overflow-tooltip></el-table-column>
                <el-table-column prop="updateUserName" label="检验人" min-width="100" show-overflow-tooltip></el-table-column>
                <el-table-column prop="updateTime" label="检验时间" min-width="100" show-overflow-tooltip></el-table-column>
                <el-table-column prop="insResult" label="结论" min-width="100">
                    <template slot-scope="scope">
            <el-tag
              :type="scope.row.type" size="medium">{{scope.row.label}}</el-tag>
              :type="scope.row.insResult==1?'success':'danger'" size="medium">{{scope.row.insResult==1?'合格':'不合格'}}</el-tag>
                    </template>
                </el-table-column>
            </el-table>
    </div>
    <h4>出入库历史</h4>
    <div class="table" style="margin-bottom: 20px;">
      <el-table class="el-table" ref="productTable" :data="productList" height="380px" tooltip-effect="dark" border>
      <el-table class="el-table" ref="productTable" :data="histories" height="380px" tooltip-effect="dark" border>
                <el-table-column type="index" align="center" label="序号" width="70" :key="Math.random()">
                </el-table-column>
                <el-table-column prop="inspectionItemSubclass" label="类型"
                    show-overflow-tooltip></el-table-column>
                <el-table-column prop="sonLaboratory" label="操作人"  show-overflow-tooltip></el-table-column>
                <el-table-column prop="method" label="操作时间"  show-overflow-tooltip></el-table-column>
                <el-table-column prop="unit" label="库位号" show-overflow-tooltip></el-table-column>
                <el-table-column prop="price" label="存放周期(h)" show-overflow-tooltip></el-table-column>
                <el-table-column prop="state" label="类型"
                    show-overflow-tooltip>
          <template slot-scope="scope">
            <el-tag :type="scope.row.state==1?'success':'danger'">{{ scope.row.state==1?'入库':'出库' }}</el-tag>
          </template>
        </el-table-column>
                <el-table-column prop="createUserName" label="操作人"  show-overflow-tooltip></el-table-column>
                <el-table-column prop="createTime" label="操作时间"  show-overflow-tooltip></el-table-column>
                <el-table-column prop="warehouseCode" label="库位号" show-overflow-tooltip></el-table-column>
                <!-- <el-table-column prop="price" label="存放周期(h)" show-overflow-tooltip></el-table-column> -->
            </el-table>
    </div>
  </div>
@@ -99,15 +103,32 @@
<script>
export default {
  props:['id'],
  data(vm) {
      return{
        entity:{},
        productList:[]
        entity:{
          num:1,
        },
        products:[],
        histories:[]
      }
  },
  mounted(){
    this.getInfo()
  },
  methods:{
    hanldeBack(){
      this.$emit('hanldeBack')
    },
    getInfo(){
      this.$axios.post(this.$api.warehouse.getSampleRecord, {
        id: this.id
      }).then(res => {
        let {histories,insSample,sampleHistory,products} = res.data;
        this.entity = {num:1,...insSample,...sampleHistory};
        this.histories = histories;
        this.products = products;
      })
    }
  }
}
src/components/view/b1-sample.vue
@@ -65,6 +65,8 @@
    vertical-align: top;
    border-color: rgb(192, 191, 191) !important;
    padding: 5px;
    box-sizing: border-box;
    height: 120px;
  }
  .tables ul {
@@ -82,6 +84,9 @@
    justify-content: start;
    color: #333333;
    cursor: pointer;
    overflow: hidden; /*超出部分隐藏*/
    white-space: nowrap; /*禁止换行*/
    text-overflow: ellipsis; /*省略号*/
  }
  .tables h4 {
@@ -99,15 +104,15 @@
    margin-right: 6px;
  }
  .blue {
  li:hover {
    background: rgba(58, 123, 250, 0.18);
  }
  .blue i {
  li:hover i {
    background: #3A7BFA;
  }
  .blue .num {
  li:hover .num {
    color: #3A7BFA;
  }
@@ -177,10 +182,18 @@
        <div class="search_thing">
          <div class="search_label">货架:</div>
          <div class="search_input">
            <el-select v-model="entity.shelfId" placeholder="选择货架" size="small">
            <el-select v-model="entity.shelfId" placeholder="选择货架" size="small" @change="handleShelf">
              <el-option v-for="item in shelf" :key="item.id" :label="item.name" :value="item.id">
              </el-option>
            </el-select>
          </div>
        </div>
        <div class="search_thing">
          <div class="search_label">样品编号:</div>
          <div class="search_input">
            <el-input placeholder="请输入样品编号" v-model="searchSampleCode" size="small">
              <el-button slot="append" icon="el-icon-search" @click="handleSearch"></el-button>
            </el-input>
          </div>
        </div>
        <!-- <div class="search_thing" style="padding-left: 30px;">
@@ -189,25 +202,33 @@
                </div> -->
        <div class="btns">
          <el-button size="small" style="color:#3A7BFA" @click="keepVisible=true">维护</el-button>
          <el-button size="small" style="color:#3A7BFA" @click="warehouseVisible=true">添加仓库</el-button>
          <el-button size="small" style="color:#3A7BFA" @click="shelvesVisible=true"
          <el-button size="small" style="color:#3A7BFA" @click="warehouseVisible=true,isEdit=false">添加仓库</el-button>
          <el-button size="small" style="color:#3A7BFA" @click="shelvesVisible=true,isEdit=false"
            :disabled="entity.warehouseId==null">添加货架</el-button>
        </div>
      </div>
      <div class="table">
        <table border="1" class="tables" cellpadding="10">
      <div class="table" v-loading="tableLoading">
        <table border="1" class="tables" cellpadding="10" style="table-layout:fixed;">
          <tbody>
            <tr v-for="(item,index) in tableList" :key="index">
              <td v-for="(m,i) in item" :key="i" class="content">
                <h4>{{ m.title }}</h4>
                <h4 v-if="m.row!=undefined">{{ m.row }} - {{ m.col }}</h4>
                <ul>
                  <li v-for="(n,j) in m.list" :key="j" :class="{blue:n.type==0,green:n.type==1}"
                    @click="handelDetail(n)">
                    <i></i>
                    <span>{{ n.name }}</span>
                    <span>&nbsp;({{ n.specs }})&nbsp;</span>
                    <span class="num">&nbsp;x{{ n.num }}</span>
                  </li>
                  <el-tooltip
                  effect="dark"
                  placement="top"
                  v-for="(n,j) in m.samples"
                  :key="j" :disabled="`${n.sample}${n.model}`.length<10">
                    <div slot="content"><span>{{ n.sample }}</span>
                      <span>&nbsp;({{ n.model }})&nbsp;[{{ n.sampleCode }}]</span></div>
                    <li class="green"
                      @click="handelDetail(n)">
                      <i></i>
                      <span>{{ n.sample }}</span>
                      <span>&nbsp;({{ n.model }})&nbsp;[{{ n.sampleCode }}]</span>
                      <!-- <span class="num">&nbsp;x{{ n.num }}</span> -->
                    </li>
                  </el-tooltip>
                </ul>
              </td>
            </tr>
@@ -219,7 +240,7 @@
        </table>
      </div>
    </div>
    <Detail v-else @hanldeBack="isDetail=false" />
    <Detail v-else @hanldeBack="isDetail=false" :id="currentId" />
    <el-dialog title="样品入库" :visible.sync="storageVisible" width="350px">
      <div class="shaoma">
        <img src="../../../static/img/扫码.svg" alt="" style="margin-right: 5px;">
@@ -229,19 +250,20 @@
        <el-col class="search_thing" :span="24">
          <div class="search_label"><span class="required-span">* </span>样品编号:</div>
          <div class="search_input">
            <el-input v-model="value" size="small"></el-input>
            <el-input v-model="sampleCode" size="small"></el-input>
          </div>
        </el-col>
      </el-row>
      <el-tree :data="list" ref="tree" :props="{ children: 'children', label: 'label' }" node-key="label"
      <el-tree :data="storageList" ref="tree" :props="{ children: 'warehouseShelfList', label: 'name' }" node-key="id"
        :filter-node-method="filterNode" @node-click="handleNodeClick" highlight-current @node-expand="nodeOpen"
        @node-collapse="nodeClose" :default-expanded-keys="expandedKeys" v-if="storageVisible">
        @node-collapse="nodeClose" :default-expanded-keys="expandedKeys" v-if="storageVisible"
        empty-text="暂无数据">
        <div class="custom-tree-node" slot-scope="{ node, data }">
          <el-row>
            <el-col :span="24">
              <span><i
                  :class="`node_i ${data.children != undefined ? 'el-icon-folder-opened' : 'el-icon-tickets'}`"></i>
                {{ data.code }} {{ data.label }}</span>
                  :class="`node_i ${data.warehouseShelfList != undefined ? 'el-icon-folder-opened' : 'el-icon-tickets'}`"></i>
                {{ data.name }}</span>
            </el-col>
          </el-row>
        </div>
@@ -260,7 +282,7 @@
        <el-col class="search_thing" :span="24">
          <div class="search_label"><span class="required-span">* </span>样品编号:</div>
          <div class="search_input">
            <el-input v-model="value" size="small"></el-input>
            <el-input v-model="sampleCode" size="small"></el-input>
          </div>
        </el-col>
      </el-row>
@@ -272,13 +294,14 @@
    <el-dialog title="库位维护" :visible.sync="keepVisible" width="350px">
      <el-tree :data="warehouse" ref="tree" :props="{ children: 'warehouseShelfList', label: 'name' }" node-key="id"
        :filter-node-method="filterNode" @node-click="handleNodeClick" highlight-current @node-expand="nodeOpen"
        @node-collapse="nodeClose" :default-expanded-keys="expandedKeys" v-if="keepVisible">
        @node-collapse="nodeClose" :default-expanded-keys="expandedKeys" v-if="keepVisible"
        empty-text="暂无数据">
        <div class="custom-tree-node" style="width: 100%;" slot-scope="{ node, data }">
          <el-row style="width: 100%;display: flex;align-items: center;">
            <el-col :span="20">
              <span><i
                  :class="`node_i ${data.children != undefined ? 'el-icon-folder-opened' : 'el-icon-tickets'}`"></i>
                {{ data.name }}</span>
                  :class="`node_i ${node.level<2 ? 'el-icon-folder-opened': 'el-icon-tickets'}`"></i>
                {{ data.name }}{{ node.level }}</span>
            </el-col>
            <el-col :span="4" v-if="node.level<3">
              <el-button type="text" size="mini" icon="el-icon-edit" @click.stop="handleEdit(data,node.level)">
@@ -299,7 +322,7 @@
        <el-col class="search_thing" :span="24">
          <div class="search_label"><span class="required-span">* </span>仓库名称:</div>
          <div class="search_input">
            <el-input v-model="value" size="small" @keyup.enter.native="confirmWarehouse"></el-input>
            <el-input v-model="name" size="small" @keyup.enter.native="confirmWarehouse"></el-input>
          </div>
        </el-col>
      </el-row>
@@ -313,7 +336,7 @@
        <el-col class="search_thing" :span="24">
          <div class="search_label"><span class="required-span">* </span>货架名称:</div>
          <div class="search_input">
            <el-input v-model="value" size="small"></el-input>
            <el-input v-model="shelves.name" size="small"></el-input>
          </div>
        </el-col>
      </el-row>
@@ -321,7 +344,7 @@
        <el-col class="search_thing" :span="24">
          <div class="search_label"><span class="required-span">* </span>货架层数:</div>
          <div class="search_input">
            <el-input v-model="value" size="small"></el-input>
            <el-input v-model="shelves.row" size="small"></el-input>
          </div>
        </el-col>
      </el-row>
@@ -329,7 +352,7 @@
        <el-col class="search_thing" :span="24">
          <div class="search_label"><span class="required-span">* </span>货架列数:</div>
          <div class="search_input">
            <el-input v-model="value" size="small"></el-input>
            <el-input v-model="shelves.col" size="small"></el-input>
          </div>
        </el-col>
      </el-row>
@@ -355,6 +378,7 @@
        },
        warehouse: [],
        shelf: [],
        storageList:[],
        storageVisible: false,
        exportVisible: false,
        keepVisible: false,
@@ -819,36 +843,19 @@
            },
          ]
        ],
        rowList: [
          '1列',
          '2列',
          '3列',
          '4列',
          '5列',
          '6列',
          '7列',
        ],
        rowList: [],
        value: '',
        list: [{
          code: 1,
          label: '父级',
          children: [{
            code: 1,
            label: '子级1',
            children: [{
              code: 1,
              label: '子级2',
              children: [{
                code: 1,
                label: '子级3',
              }]
            }]
          }]
        }],
        selectTree: null,
        name:'',
        shelves:{},
        selectTree: [],
        expandedKeys: [],
        isEdit: false, //弹框--是否是修改,默认为false
        isDetail: false, //详情--是否展示为详情页面,默认为false
        currentEdit:null,//当前要维护的信息
        tableLoading:true,
        sampleCode:'',
        currentId:null,
        searchSampleCode:''
      }
    },
    mounted() {
@@ -858,6 +865,36 @@
      selectList() {
        this.$axios.get(this.$api.warehouse.selectWarehouse).then(res => {
          this.warehouse = res.data
          this.storageList = this.HaveJson(res.data).map(item=>{
            item.warehouseShelfList&&item.warehouseShelfList.length>0&&item.warehouseShelfList.map(m=>{
              let warehouseShelfList = [];
              for (let i=1;i<m.row+1;i++){
                let warehouseShelfList0 = []
                for (let j=1;j<m.col+1;j++){
                  warehouseShelfList0.push({
                    name:j+' 列',
                    id:j,
                  })
                }
                warehouseShelfList.push({
                  name:i+' 层',
                  id:i,
                  warehouseShelfList:warehouseShelfList0
                })
              }
              m.warehouseShelfList = warehouseShelfList;
              return m;
            })
            return item;
          })
          if(!this.entity.warehouseId&&this.warehouse.length>0){
            this.entity.warehouseId = this.warehouse[0].id
            this.warehouseChange(this.entity.warehouseId)
            if(this.shelf.length>0){
              this.entity.shelfId = this.shelf[0].id
              this.handleShelf(this.entity.shelfId)
            }
          }
        })
      },
      selectStandardTreeList() {
@@ -870,88 +907,165 @@
          })
        })
      },
      refreshTable() {
        this.selectList()
      },
      refresh() {
        this.entity = this.HaveJson(this.entity)
      },
      handleClose() {
        this.upLoad = false;
      },
      // 入库
      confirmStorage() {
        if (!this.value) {
        if (!this.sampleCode) {
          this.$message.error('请填写样品编号')
          return
        }
        let trees = this.selectTree.split(" - ")
        if (trees.length < 4) {
          this.$message.error('未选择样品')
        if (this.selectTree.length < 4) {
          this.$message.error('请选择样品入库位置')
          return
        }
        this.upLoadStorage = true;
        this.$axios.post(this.$api.warehouse.inWarehouse, {
            trees: this.selectTree.join('-'),
            sampleCode:this.sampleCode
          }).then(res => {
            this.upLoadStorage = false;
            this.storageVisible = false
            this.sampleCode = '';
            this.selectTree = []
            if (res.code == 201) {
              this.$message.error('入库失败')
              return
            }
            this.$message.success('入库成功')
            this.handleShelf(this.entity.shelfId)
          })
      },
      // 出库
      confirmExport() {
        if (!this.value) {
        if (!this.sampleCode) {
          this.$message.error('请填写样品编号')
          return
        }
        this.upLoadExport = true;
        this.$axios.post(this.$api.warehouse.outWarehouse, {
            sampleCode:this.sampleCode
          }).then(res => {
            this.upLoadExport = false;
            this.exportVisible = false
            this.sampleCode = '';
            if (res.code == 201) {
              this.$message.error('出库失败')
              return
            }
            this.$message.success('出库成功')
            this.handleShelf(this.entity.shelfId)
          })
      },
      // 维护
      confirmKeep() {
        this.upLoadKeep = true;
      },
      // 添加仓库
      // 添加/修改仓库
      confirmWarehouse() {
        if (!this.value) {
        if (!this.name) {
          this.$message.error('请填写仓库名称')
          return
        }
        this.upLoadWarehouse = true;
        this.$axios.post(this.$api.warehouse.addWarehouse, {
          name: this.value
        }).then(res => {
          this.upLoadWarehouse = false;
          this.warehouseVisible = false
          if (res.code == 201) {
            this.$message.error('添加失败')
            return
          }
          this.$message.success('添加成功')
          this.selectList()
        })
        if(this.currentEdit&&this.currentEdit.id){
          // 修改仓库
          this.$axios.post(this.$api.warehouse.upWarehouse, {
            name: this.name,
            id:this.currentEdit.id
          }, {
                    headers: {
                        'Content-Type': 'application/json'
                    }
                }).then(res => {
            this.upLoadWarehouse = false;
            this.warehouseVisible = false
            this.currentEdit = null;
            if (res.code == 201) {
              this.$message.error('修改失败')
              return
            }
            this.$message.success('修改成功')
            this.selectList()
          })
        }else{
          // 新增仓库
          this.$axios.post(this.$api.warehouse.addWarehouse, {
            name: this.name
          }).then(res => {
            this.upLoadWarehouse = false;
            this.warehouseVisible = false
            if (res.code == 201) {
              this.$message.error('添加失败')
              return
            }
            this.$message.success('添加成功')
            this.selectList()
          })
        }
        this.name = ''
        this.warehouseChange(this.entity.warehouseId)
      },
      // 添加货架
      // 添加/修改货架
      confirmShelves() {
        if (!this.value) {
        if (!this.shelves.name) {
          this.$message.error('请填写货架名称')
          return
        }
        if (!this.shelves.row) {
          this.$message.error('请填写货架层数')
          return
        }
        if (!this.shelves.col) {
          this.$message.error('请填写货架列数')
          return
        }
        this.upLoadShelves = true;
        if(this.currentEdit&&this.currentEdit.id){
          // 修改
          this.$axios.post(this.$api.warehouse.upShelf, {
            id:this.currentEdit.id,...this.shelves
          }, {
                    headers: {
                        'Content-Type': 'application/json'
                    }
                }).then(res => {
            this.upLoadShelves = false;
            this.shelvesVisible = false
            if (res.code == 201) {
              this.$message.error('添加失败')
              return
            }
            this.$message.success('添加成功')
            this.selectList()
            this.currentEdit ={};
          })
        }else{
          // 新增
          this.$axios.post(this.$api.warehouse.addShelf, {
            warehouseId: this.entity.warehouseId,...this.shelves
          }, {
                    headers: {
                        'Content-Type': 'application/json'
                    }
                }).then(res => {
            this.upLoadShelves = false;
            this.shelvesVisible = false
            if (res.code == 201) {
              this.$message.error('添加失败')
              return
            }
            this.$message.success('添加成功')
            this.selectList()
            this.shelves = {}
          })
        }
        this.warehouseChange(this.entity.warehouseId)
      },
      filterNode(value, data) {
        if (!value) return true;
        return data.label.indexOf(value) !== -1;
      },
      handleNodeClick(val, node, el) { //树的值
        this.selectTree = ''
        this.getNodeParent(node)
        this.selectTree = this.selectTree.replace(' - ', '')
        let data = this.selectTree.split(' - ')
        let data2 = ''
        for (let index = data.length - 1; index >= 0; index--) {
          data2 += " - " + data[index]
        }
        this.selectTree = data2.replace(' - ', '')
      },
      getNodeParent(val) {
        if (val.parent != null) {
          this.selectTree += ' - ' + val.label
          this.getNodeParent(val.parent)
        }
        this.selectTree[node.level-1] = val.id;
      },
      nodeOpen(data, node, el) {
        $($(el.$el).find('.node_i')[0]).attr('class', 'node_i el-icon-folder-opened')
@@ -965,17 +1079,34 @@
          cancelButtonText: "取消",
          type: "warning"
        }).then(() => {
          this.$axios.post(this.$api.insOrder.delInsOrderTemplate, {
            id: row.id
          }).then(res => {
            if (res.code === 201) {
              return
            }
            this.$message.success('成功')
            // this.selectInsOrderTemplate()
          }).catch(e => {
            this.$message.error('失败')
          })
          if (level == 1) {
            // 删除仓库
            this.$axios.post(this.$api.warehouse.delWarehouse, {
              id: row.id
            }).then(res => {
              if (res.code === 201) {
                return
              }
              this.$message.success('成功')
              this.selectList()
            }).catch(e => {
              this.$message.error('失败')
            })
          }else{
            // 删除货架
            this.$axios.post(this.$api.warehouse.delShelf, {
              id: row.id
            }).then(res => {
              if (res.code === 201) {
                return
              }
              this.$message.success('成功')
              this.selectList()
            }).catch(e => {
              this.$message.error('失败')
            })
          }
          this.warehouseChange(this.entity.warehouseId)
        }).catch(() => {})
      },
      handleEdit(data, level) {
@@ -983,19 +1114,72 @@
        // 判断是第几层级,第一层级,修改仓库,第二层级修改货架
        if (level == 1) {
          this.warehouseVisible = true;
          this.currentEdit = data;
          this.name = data.name
        } else {
          this.shelvesVisible = true;
          this.currentEdit = data;
          this.shelves = {
            name:data.name,
            row:data.row,
            col:data.col,
            warehouseId:data.warehouseId
          }
        }
      },
      // 查看详情
      handelDetail(row) {
        this.currentId = row.id;
        this.isDetail = true;
      },
      warehouseChange(val) {
        let map = this.warehouse.find(a => {
          return a.id === val ? a : null
        })
        this.shelf = map.warehouseShelfList
        this.shelf = map.warehouseShelfList;
        this.entity.shelfId = '';
      },
      handleShelf(e){
        this.tableLoading = true;
        this.$axios.get(this.$api.warehouse.getWarehouse+'?shelfId='+e).then(res => {
          let data = res.data;
          let set =new Set()
          this.tableList = [];
          let arr = []
          data.forEach(m=>{
            set.add(m.col)
            if(arr.length>0){
              if(arr.find(n=>n.row==m.row)){
                arr.push(m)
              }else{
                this.tableList.push(arr)
                arr = []
                arr.push(m)
              }
            }else{
              arr.push(m)
            }
          })
          this.tableList.push(arr)
          this.rowList = [];
          for(let i=0;i<set.size;i++){
            this.rowList.push(`${i+1} 列`)
          }
          this.tableLoading = false;
        })
      },
      handleSearch(){
        if(!this.searchSampleCode){
          this.$message.error('请输入样品编号')
          return;
        }
        this.$axios.post(this.$api.warehouse.searchSampleId, {
          sampleCode: this.searchSampleCode}).then(res => {
            if(res.code==200){
              this.currentId = res.data;
              this.isDetail = true;
            }
          })
      }
    }
  }
src/main.js
@@ -13,7 +13,7 @@
//本地
Vue.prototype.LOCATIONVUE = "http://127.0.0.1:80";
const javaApi = 'http://192.168.0.161:8001';//李
const javaApi = 'http://192.168.0.24:8001';//李
// const javaApi = 'http://114.132.189.42:9006';//测试服
//胜云服务器
// Vue.prototype.LOCATIONVUE = "http://syxt.shxiao2.cn";