licp
2024-10-14 ae8b90c76912a7796b7c23c78f1a59bac434457d
src/components/view/b1-sample.vue
@@ -156,6 +156,9 @@
  .custom-tree-node:hover .el-button {
    opacity: 1;
  }
  >>>.el-loading-mask {
    z-index: 10;
  }
</style>
<template>
@@ -163,7 +166,7 @@
    <div style="width: 100%;height: 100%;" v-if="!isDetail">
      <div>
        <el-row class="title">
          <el-col :span="12" style="padding-left: 20px;">样品管理</el-col>
          <el-col :span="12" style="padding-left: 20px;text-align: left;">样品管理</el-col>
          <el-col :span="12" style="text-align: right;">
            <el-button size="small" type="primary" @click="storageVisible=true">入库</el-button>
            <el-button size="small" type="primary" @click="exportVisible=true">出库</el-button>
@@ -192,7 +195,7 @@
        <div class="search_thing">
          <div class="search_label">样品编号:</div>
          <div class="search_input">
            <el-input placeholder="请输入样品编号" v-model="searchSampleCode" size="small">
            <el-input placeholder="请输入样品编号" v-model="searchSampleCode" size="small" autocomplete="off">
              <el-button slot="append" icon="el-icon-search" @click="handleSearch"></el-button>
            </el-input>
          </div>
@@ -209,7 +212,7 @@
        </div>
      </div>
      <div class="table" v-loading="tableLoading">
        <table border="1" class="tables" cellpadding="10" style="table-layout:fixed;">
        <table border="1" class="tables" cellpadding="10" style="table-layout:fixed;" v-if="tableList.length>0">
          <tbody>
            <tr v-for="(item,index) in tableList" :key="index">
              <td v-for="(m,i) in item" :key="i" class="content">
@@ -219,7 +222,7 @@
                  effect="dark"
                  placement="top"
                  v-for="(n,j) in m.samples"
                  :key="j" :disabled="`${n.sample}${n.model}`.length<10">
                  :key="j" :disabled="`${n.sample}${n.model}`.length<5">
                    <div slot="content"><span>{{ n.sample }}</span>
                      <span>&nbsp;({{ n.model }})&nbsp;[{{ n.sampleCode }}]</span></div>
                    <li class="green"
@@ -239,19 +242,20 @@
            </tr>
          </tbody>
        </table>
        <span v-else style="color: rgb(144, 147, 153);display: inline-block;position: absolute;top: 60%;left: 50%;transform: translate(-50%,-50%);">暂无数据</span>
      </div>
    </div>
    <Detail v-else @hanldeBack="isDetail=false" :id="currentId" />
    <el-dialog title="样品入库" :visible.sync="storageVisible" width="350px">
      <div class="shaoma">
      <!-- <div class="shaoma">
        <img src="../../../static/img/扫码.svg" alt="" style="margin-right: 5px;">
        <span>扫码入库</span>
      </div>
      </div> -->
      <el-row>
        <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="sampleCode" size="small"></el-input>
            <el-input v-model="sampleCode" size="small" @change="sampleCodeChange"></el-input>
          </div>
        </el-col>
      </el-row>
@@ -275,15 +279,15 @@
      </span>
    </el-dialog>
    <el-dialog title="样品出库" :visible.sync="exportVisible" width="350px">
      <div class="shaoma">
      <!-- <div class="shaoma">
        <img src="../../../static/img/扫码.svg" alt="" style="margin-right: 5px;">
        <span>扫码出库</span>
      </div>
      </div> -->
      <el-row>
        <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="sampleCode" size="small"></el-input>
            <el-input v-model="sampleCode" size="small" @change="sampleCodeChange"></el-input>
          </div>
        </el-col>
      </el-row>
@@ -292,7 +296,7 @@
        <el-button type="primary" @click="confirmExport" :loading="upLoadExport">确 定</el-button>
      </span>
    </el-dialog>
    <el-dialog title="库位维护" :visible.sync="keepVisible" width="350px">
    <el-dialog title="库位维护" :visible.sync="keepVisible" width="350px" :append-to-body="true">
      <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"
@@ -302,7 +306,7 @@
            <el-col :span="20">
              <span><i
                  :class="`node_i ${node.level<2 ? 'el-icon-folder-opened': 'el-icon-tickets'}`"></i>
                {{ data.name }}{{ node.level }}</span>
                {{ data.name }}</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)">
@@ -315,7 +319,7 @@
      </el-tree>
      <span slot="footer" class="dialog-footer">
        <el-button @click="keepVisible = false">取 消</el-button>
        <el-button type="primary" @click="confirmKeep" :loading="upLoadKeep">确 定</el-button>
        <el-button type="primary" @click="keepVisible = false" >确 定</el-button>
      </span>
    </el-dialog>
    <el-dialog :title="isEdit?'仓库修改':'仓库新增'" :visible.sync="warehouseVisible" width="350px">
@@ -362,6 +366,7 @@
        <el-button type="primary" @click="confirmShelves" :loading="upLoadShelves">确 定</el-button>
      </span>
    </el-dialog>
    <input type="password" id="ScanCodeInfo" v-model="codeInfo" @keyup.enter="keyup" style="opacity: 0;height: 0px;margin: 0px;padding: 0px;position: absolute;top: 0;"></input>
  </div>
</template>
@@ -378,6 +383,7 @@
          shelfId: null
        },
        warehouse: [],
        startTime: null,
        shelf: [],
        storageList:[],
        storageVisible: false,
@@ -387,463 +393,9 @@
        shelvesVisible: false,
        upLoadStorage: false,
        upLoadExport: false,
        upLoadKeep: false,
        upLoadWarehouse: false,
        upLoadShelves: false,
        tableList: [
          [{
              title: '1-1-4',
              list: [{
                  name: '原材料',
                  specs: '规格1',
                  num: 20,
                  type: 0,
                },
                {
                  name: '原材料',
                  specs: '规格2',
                  num: 20,
                  type: 1,
                },
              ]
            },
            {
              title: '1-2-4',
              list: [{
                  name: '原材料',
                  specs: '规格1',
                  num: 20,
                  type: 0,
                },
                {
                  name: '原材料',
                  specs: '规格2',
                  num: 20,
                  type: 1,
                },
              ]
            },
            {
              title: '1-3-4',
              list: [{
                  name: '原材料',
                  specs: '规格1',
                  num: 20,
                  type: 0,
                },
                {
                  name: '原材料',
                  specs: '规格2',
                  num: 20,
                  type: 1,
                },
              ]
            },
            {
              title: '1-4-4',
              list: [{
                  name: '原材料',
                  specs: '规格1',
                  num: 20,
                  type: 0,
                },
                {
                  name: '原材料',
                  specs: '规格2',
                  num: 20,
                  type: 1,
                },
              ]
            },
            {
              title: '1-5-4',
              list: [{
                  name: '原材料',
                  specs: '规格1',
                  num: 20,
                  type: 0,
                },
                {
                  name: '原材料',
                  specs: '规格2',
                  num: 20,
                  type: 1,
                },
              ]
            },
            {
              title: '1-6-4',
              list: [{
                  name: '原材料',
                  specs: '规格1',
                  num: 20,
                  type: 0,
                },
                {
                  name: '原材料',
                  specs: '规格2',
                  num: 20,
                  type: 1,
                },
              ]
            },
            {
              title: '1-7-4',
              list: [{
                  name: '原材料',
                  specs: '规格1',
                  num: 20,
                  type: 0,
                },
                {
                  name: '原材料',
                  specs: '规格2',
                  num: 20,
                  type: 1,
                },
              ]
            },
          ],
          [{
              title: '1-1-3',
              list: [{
                  name: '原材料',
                  specs: '规格1',
                  num: 20,
                  type: 0,
                },
                {
                  name: '原材料',
                  specs: '规格2',
                  num: 20,
                  type: 1,
                },
              ]
            },
            {
              title: '1-2-3',
              list: [{
                  name: '原材料',
                  specs: '规格1',
                  num: 20,
                  type: 0,
                },
                {
                  name: '原材料',
                  specs: '规格2',
                  num: 20,
                  type: 1,
                },
              ]
            },
            {
              title: '1-3-3',
              list: [{
                  name: '原材料',
                  specs: '规格1',
                  num: 20,
                  type: 0,
                },
                {
                  name: '原材料',
                  specs: '规格2',
                  num: 20,
                  type: 1,
                },
              ]
            },
            {
              title: '1-4-3',
              list: [{
                  name: '原材料',
                  specs: '规格1',
                  num: 20,
                  type: 0,
                },
                {
                  name: '原材料',
                  specs: '规格2',
                  num: 20,
                  type: 1,
                },
              ]
            },
            {
              title: '1-5-3',
              list: [{
                  name: '原材料',
                  specs: '规格1',
                  num: 20,
                  type: 0,
                },
                {
                  name: '原材料',
                  specs: '规格2',
                  num: 20,
                  type: 1,
                },
              ]
            },
            {
              title: '1-6-3',
              list: [{
                  name: '原材料',
                  specs: '规格1',
                  num: 20,
                  type: 0,
                },
                {
                  name: '原材料',
                  specs: '规格2',
                  num: 20,
                  type: 1,
                },
              ]
            },
            {
              title: '1-7-3',
              list: [{
                  name: '原材料',
                  specs: '规格1',
                  num: 20,
                  type: 0,
                },
                {
                  name: '原材料',
                  specs: '规格2',
                  num: 20,
                  type: 1,
                },
              ]
            },
          ],
          [{
              title: '1-1-2',
              list: [{
                  name: '原材料',
                  specs: '规格1',
                  num: 20,
                  type: 0,
                },
                {
                  name: '原材料',
                  specs: '规格2',
                  num: 20,
                  type: 1,
                },
              ]
            },
            {
              title: '1-2-2',
              list: [{
                  name: '原材料',
                  specs: '规格1',
                  num: 20,
                  type: 0,
                },
                {
                  name: '原材料',
                  specs: '规格2',
                  num: 20,
                  type: 1,
                },
              ]
            },
            {
              title: '1-3-2',
              list: [{
                  name: '原材料',
                  specs: '规格1',
                  num: 20,
                  type: 0,
                },
                {
                  name: '原材料',
                  specs: '规格2',
                  num: 20,
                  type: 1,
                },
              ]
            },
            {
              title: '1-4-2',
              list: [{
                  name: '原材料',
                  specs: '规格1',
                  num: 20,
                  type: 0,
                },
                {
                  name: '原材料',
                  specs: '规格2',
                  num: 20,
                  type: 1,
                },
              ]
            },
            {
              title: '1-5-2',
              list: [{
                  name: '原材料',
                  specs: '规格1',
                  num: 20,
                  type: 0,
                },
                {
                  name: '原材料',
                  specs: '规格2',
                  num: 20,
                  type: 1,
                },
              ]
            },
            {
              title: '1-6-2',
              list: [{
                  name: '原材料',
                  specs: '规格1',
                  num: 20,
                  type: 0,
                },
                {
                  name: '原材料',
                  specs: '规格2',
                  num: 20,
                  type: 1,
                },
              ]
            },
            {
              title: '1-7-2',
              list: [{
                  name: '原材料',
                  specs: '规格1',
                  num: 20,
                  type: 0,
                },
                {
                  name: '原材料',
                  specs: '规格2',
                  num: 20,
                  type: 1,
                },
              ]
            },
          ],
          [{
              title: '1-1-1',
              list: [{
                  name: '原材料',
                  specs: '规格1',
                  num: 20,
                  type: 0,
                },
                {
                  name: '原材料',
                  specs: '规格2',
                  num: 20,
                  type: 1,
                },
              ]
            },
            {
              title: '1-2-1',
              list: [{
                  name: '原材料',
                  specs: '规格1',
                  num: 20,
                  type: 0,
                },
                {
                  name: '原材料',
                  specs: '规格2',
                  num: 20,
                  type: 1,
                },
              ]
            },
            {
              title: '1-3-1',
              list: [{
                  name: '原材料',
                  specs: '规格1',
                  num: 20,
                  type: 0,
                },
                {
                  name: '原材料',
                  specs: '规格2',
                  num: 20,
                  type: 1,
                },
              ]
            },
            {
              title: '1-4-1',
              list: [{
                  name: '原材料',
                  specs: '规格1',
                  num: 20,
                  type: 0,
                },
                {
                  name: '原材料',
                  specs: '规格2',
                  num: 20,
                  type: 1,
                },
              ]
            },
            {
              title: '1-5-1',
              list: [{
                  name: '原材料',
                  specs: '规格1',
                  num: 20,
                  type: 0,
                },
                {
                  name: '原材料',
                  specs: '规格2',
                  num: 20,
                  type: 1,
                },
              ]
            },
            {
              title: '1-6-1',
              list: [{
                  name: '原材料',
                  specs: '规格1',
                  num: 20,
                  type: 0,
                },
                {
                  name: '原材料',
                  specs: '规格2',
                  num: 20,
                  type: 1,
                },
              ]
            },
            {
              title: '1-7-1',
              list: [{
                  name: '原材料',
                  specs: '规格1',
                  num: 20,
                  type: 0,
                },
                {
                  name: '原材料',
                  specs: '规格2',
                  num: 20,
                  type: 1,
                },
              ]
            },
          ]
        ],
        tableList: [],
        rowList: [],
        value: '',
        name:'',
@@ -853,19 +405,67 @@
        isEdit: false, //弹框--是否是修改,默认为false
        isDetail: false, //详情--是否展示为详情页面,默认为false
        currentEdit:null,//当前要维护的信息
        tableLoading:true,
        tableLoading:false,
        sampleCode:'',
        currentId:null,
        searchSampleCode:''
        searchSampleCode:'',
        codeInfo:null,
      }
    },
    watch:{
      storageVisible(newVal){
        if(newVal){
            // this.$message.success('扫码:打开')
            let input = document.getElementById('ScanCodeInfo');
            input.focus();
            this.startTime = setInterval(()=>{
                input.focus()
            },1000)
        }else{
            // this.$message.warning('扫码:关闭')
            clearInterval(this.startTime)
        }
      },
      exportVisible(newVal){
        if(newVal){
            // this.$message.success('扫码:打开')
            let input = document.getElementById('ScanCodeInfo');
            input.focus();
            this.startTime = setInterval(()=>{
                input.focus()
            },1000)
        }else{
            // this.$message.warning('扫码:关闭')
            clearInterval(this.startTime)
        }
      },
    },
    mounted() {
      this.selectList()
    },
    methods: {
      keyup(e){
        var code = ''
        try{
            code = JSON.parse(this.codeInfo)
            if(code==null||code==undefined||code==''){
                this.$message.error('该二维码有误')
            }else{
                this.sampleCode = code
            }
        }catch(e){
            this.$message.error('该二维码有误')
        }
        this.codeInfo = null
      },
      selectList() {
        this.$axios.get(this.$api.warehouse.selectWarehouse).then(res => {
          this.warehouse = res.data
          if(res.data.length==0){
            this.entity.warehouseId = '';
            this.entity.shelfId = '';
            this.tableList = []
          }
          this.storageList = this.HaveJson(res.data).map(item=>{
            item.warehouseShelfList&&item.warehouseShelfList.length>0&&item.warehouseShelfList.map(m=>{
              let warehouseShelfList = [];
@@ -894,6 +494,16 @@
            if(this.shelf.length>0){
              this.entity.shelfId = this.shelf[0].id
              this.handleShelf(this.entity.shelfId)
            }else{
              this.tableList = []
            }
          }else if(this.warehouse.length>0){
            this.warehouseChange(this.entity.warehouseId)
            if(this.shelf.length>0){
              this.entity.shelfId = this.shelf[0].id
              this.handleShelf(this.entity.shelfId)
            }else{
              this.tableList = []
            }
          }
        })
@@ -956,10 +566,6 @@
            this.handleShelf(this.entity.shelfId)
          })
      },
      // 维护
      confirmKeep() {
        this.upLoadKeep = true;
      },
      // 添加/修改仓库
      confirmWarehouse() {
        if (!this.name) {
@@ -979,6 +585,7 @@
            }).then(res => {
            this.upLoadWarehouse = false;
            this.warehouseVisible = false
            // this.keepVisible = false
            this.currentEdit = null;
            if (res.code == 201) {
              this.$message.error('修改失败')
@@ -986,6 +593,8 @@
            }
            this.$message.success('修改成功')
            this.selectList()
            this.name = ''
            this.warehouseChange(this.entity.warehouseId)
          })
        }else{
          // 新增仓库
@@ -1000,10 +609,10 @@
            }
            this.$message.success('添加成功')
            this.selectList()
            this.name = ''
            this.warehouseChange(this.entity.warehouseId)
          })
        }
        this.name = ''
        this.warehouseChange(this.entity.warehouseId)
      },
      // 添加/修改货架
      confirmShelves() {
@@ -1031,11 +640,12 @@
            }).then(res => {
            this.upLoadShelves = false;
            this.shelvesVisible = false
            // this.keepVisible = false
            if (res.code == 201) {
              this.$message.error('添加失败')
              this.$message.error('修改失败')
              return
            }
            this.$message.success('添加成功')
            this.$message.success('修改成功')
            this.selectList()
            this.currentEdit ={};
          })
@@ -1070,6 +680,7 @@
      },
      nodeOpen(data, node, el) {
        $($(el.$el).find('.node_i')[0]).attr('class', 'node_i el-icon-folder-opened')
        this.selectTree[node.level-1] = data.id;
      },
      nodeClose(data, node, el) {
        $($(el.$el).find('.node_i')[0]).attr('class', 'node_i el-icon-folder')
@@ -1134,6 +745,7 @@
        this.isDetail = true;
      },
      warehouseChange(val) {
        this.tableList = []
        let map = this.warehouse.find(a => {
          return a.id === val ? a : null
        })
@@ -1141,33 +753,37 @@
        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)
        if(e){
          this.tableLoading = true;
          this.$axios.get(this.$api.warehouse.getWarehouse+'?shelfId='+e).then(res => {
            this.tableLoading = false;
            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{
                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} 列`)
            }
          }).catch(e=>{
            this.tableLoading = false;
          })
          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){
@@ -1181,6 +797,11 @@
              this.isDetail = true;
            }
          })
      },
      sampleCodeChange(e){
        if(e){
          this.sampleCode = e.replaceAll('"','')
        }
      }
    }
  }