<template>
  <div class="main-contain">
     <div class="app-container" style="padding-left:0px;margin: 0px;"
        v-loading="loading"
        element-loading-text="拼命加载中">
        <div style="justify-content: space-between;margin: 0px 0 12px 0;display: flex;align-items: center;">
         <div>
          <span style="font-size:14px;color:#606266">仓库:</span>
          <el-select v-model="storehouse_id" style="width:200px;margin-right:10px;" placeholder="请选择"
          filterable
           @change="changeStorehouseName">
            <el-option
              v-for="item in houseList"
              :key="item.id"
              :label="item.storehouse_name"
              :value="item.id">
            </el-option>
          </el-select>
          <span style="font-size:14px;color:#606266">库存预警:</span>
          <el-select v-model="good_type" style="width:250px;margin-right:10px;" placeholder="请选择"
          filterable
           @change="changeGoodName">
            <el-option
              v-for="item in goodList"
              :key="item.id"
              :label="item.name"
              :value="item.id">
            </el-option>
          </el-select>
          <el-input v-model="keyword" style="width:200px" placeholder="请输入耗材名称或生产厂商" ></el-input>
          <el-button  type="primary" icon="el-icon-search" @click="seach">搜索</el-button>
         </div>
          <div>
            <!-- <el-button size="small" type="primary" @click="toClickTwo">脚本</el-button> -->
            <el-button size="small" type="primary" @click="exportList">导出</el-button>
            <el-button size="small" type="primary" @click="toPrint">打印</el-button>
          </div>
        </div>

           <el-table
            :row-style="{ color: '#303133' }"
            :header-cell-style="{
              backgroundColor: 'rgb(245, 247, 250)',
              color: '#606266'
            }"
            :data="tableList"
            :class="signAndWeighBoxPatients"
            border
           :cell-class-name="cellStyle"
          >
          <el-table-column label="耗材编码" align="center" v-if="org_id ==9956 || org_id == 0">
              <template slot-scope="scope">
                 {{ scope.row.good_number?scope.row.good_number:"" }}
              </template>
            </el-table-column>
            <el-table-column label="医保等级" align="center" v-if="org_id ==10697 || org_id == 0">
              <template slot-scope="scope">
                <span>{{getMedicalInsuranceLeve(scope.row.medical_insurance_level)?getMedicalInsuranceLeve(scope.row.medical_insurance_level):"" }}</span> 
              </template>
            </el-table-column>
            <el-table-column label="耗材类型" align="center">
              <template slot-scope="scope">
                {{getGoodTypeName(scope.row.good_type_id)}}
              </template>
            </el-table-column>
            <el-table-column label="耗材名称" align="center">
              <template slot-scope="scope">
                 {{scope.row.good_name}}
              </template>
            </el-table-column>
            <el-table-column label="规格&单位" align="center">
                <template slot-scope="scope">
                  {{scope.row.specification_name}}/{{scope.row.packing_unit}}
                </template>
            </el-table-column>
            <el-table-column label="生产厂商" align="center" v-if="org_id!=10679">
              <template slot-scope="scope">
                  {{getManufacturName(scope.row.manufacturer)}}
              </template>
            </el-table-column>
            <el-table-column label="经销商" align="center" v-if="org_id ==10485">
              <template slot-scope="scope">
                  {{getDearName(scope.row.dealer)}}
              </template>
            </el-table-column>
            <el-table-column label="批准文号" align="center">
              <template slot-scope="scope">
                 {{scope.row.number}}
              </template>
            </el-table-column>
            <el-table-column label="国家编码" align="center">
              <template slot-scope="scope">
                {{scope.row.social_security_directory_code}}
              </template>
            </el-table-column>
            <el-table-column label="仓库名称" align="center">
              <template slot-scope="scope">
                <tr style="background: none" v-for="(item,index) in scope.row.xt_good_stock_info" :key="index">
                  <td style="border-right: none; border-inline-end: none;text-align: center" >
                      {{getHouseName(item.storehouse_id)}}
                  </td>
                </tr>
              </template>
            </el-table-column>
        
            <el-table-column label="入库数量" align="center">
              <template slot-scope="scope">
                <tr style="background: none" v-for="(item,index) in scope.row.xt_good_stock_info" :key="index">
                  <td style="border-right: none; border-inline-end: none;text-align: center">
                    {{getGoodIn(scope.row.xt_good_stock,item.storehouse_id)}}
                  </td>
                </tr>
               </template>
            </el-table-column>
          
            <el-table-column label="出库数量" align="center">
              <template slot-scope="scope">
                <span>
                  <tr style="background: none" v-for="(item,index) in scope.row.xt_good_stock_info" :key="index">
                    <td style="border-right: none; border-inline-end: none;text-align: center">
                      <span> 
                         {{getGoodAct(scope.row.xt_good_stock,item.storehouse_id)}}
                      </span>
                    </td>
                  </tr>
              </span>
             </template>
            </el-table-column>

            <el-table-column label="退库数量" align="center">
              <template slot-scope="scope">
                  <tr style="background: none" v-for="(item,index) in scope.row.xt_good_stock_info" :key="index">
                    <td style="border-right: none; border-inline-end: none;text-align: center">
                      {{getGoodCancel(scope.row.xt_good_stock,item.storehouse_id)}}
                    </td>
                  </tr>

              </template>
            </el-table-column>

             <el-table-column label="实际出库" align="center">
              <template slot-scope="scope">
              
                <span>
                  <tr style="background: none" v-for="(item,index) in scope.row.xt_good_stock_info" :key="index">
                    <td style="border-right: none; border-inline-end: none;text-align: center">
                    
                      <span style="color:#0099FF" @click="toDialogClick(scope.row.id,scope.row.good_name,scope.row.specification_name,item.storehouse_id)">
                         {{getGoodOut(scope.row.xt_good_stock,item.storehouse_id)}} 
                       </span>
                    </td>
                  </tr>
               </span>
             </template>
            </el-table-column>

            <el-table-column label="剩余库存" align="center">
              <template slot-scope="scope">
                
                <span>
                  <tr style="background: none" v-for="(item,index) in scope.row.xt_good_stock_info" :key="index">
                    <td style="border-right: none; border-inline-end: none;text-align: center">
                      {{getGoodFlush(scope.row.xt_good_stock,item.storehouse_id)}}
                    </td>
                  </tr>
                </span>
              </template>
            </el-table-column>

            <el-table-column label="总库存量" align="center">
              <template slot-scope="scope">
              
                <span>
                   <span v-if="getOverFlushInfo(scope.row.xt_warehouse_info) <= scope.row.stock_warn_count" style="color:red">
                     {{getSumCount(scope.row.xt_good_stock,scope.row.id)}}
                     <i class="el-icon-warning"></i>
                    </span>
                   <span v-if="getOverFlushInfo(scope.row.xt_warehouse_info) > scope.row.stock_warn_count">
                      {{getSumCount(scope.row.xt_good_stock,scope.row.id)}}
                    </span>
                </span>
               </template>
            </el-table-column>
           
            <el-table-column label="操作" align="center" width="200px">
             
              <template slot-scope="scope">
                <el-button
                  size="small"
                  type="primary"
                  @click="toClick(scope.row)"
                >库存流水
                </el-button>
                <el-button
                  size="small"
                  type="primary"
                  @click="toClickOne(scope.row)"
                >批次
                </el-button>

                <!-- <el-button
                  size="small"
                  type="primary"
                  @click="handleCheckBatch(scope.row)"
                >自查
                </el-button> -->
               </template>
            </el-table-column>
          </el-table>
           <el-pagination
            @size-change="handleSizeChange"
            @current-change="handleCurrentChange"
            :page-sizes="[10, 50, 100,200,300,400,500,1000]"
            :page-size="10"
            background
            align="right"
            style="margin-top:20px;"
            layout="total, sizes, prev, pager, next, jumper"
            :total="total"
          >
            </el-pagination>
     </div>



    <el-dialog
      title="出库详情"
      :visible.sync="dialogVisible"
      width="70%">
      <span>
        耗材名称:{{good_name}}
        规格&单位:{{specification_name}}
        查询日期:
          <el-date-picker
            size="small"
            v-model="start_first_time"
            prefix-icon="el-icon-date"
            :editable="false"
            style="width: 150px;"
            type="date"
            placeholder="选择日期时间"
            align="right"
            format="yyyy-MM-dd"
            value-format="yyyy-MM-dd"
            @change="startFirstTimeChange"
           ></el-date-picker> 
            <span>-</span> 
            <el-date-picker
              size="small"
              v-model="end_first_time"
              prefix-icon="el-icon-date"
              :editable="false"
              style="width: 150px;"
              type="date"
              placeholder="选择日期时间"
              align="right"
              format="yyyy-MM-dd"
              value-format="yyyy-MM-dd"
              @change="endEndTimeChange"
          ></el-date-picker>
      </span>
      <el-divider></el-divider>
       <el-table
          :row-style="{ color: '#303133' }"
          :header-cell-style="{
            backgroundColor: 'rgb(245, 247, 250)',
            color: '#606266'
          }"
          :data="tableData"
          :class="signAndWeighBoxPatients"
          border
          >
          <el-table-column label="序号" align="center">
            <template slot-scope="scope">
              {{scope.$index + 1}}
            </template>
          </el-table-column>
          <el-table-column label="单据编号" align="center">
            <template slot-scope="scope">
              {{scope.row.warehouse_out_order_number}}
            </template>
          </el-table-column>
          <el-table-column label="操作时间" align="center">
            <template slot-scope="scope">
              {{getTimeOne(scope.row.ctime)}}
            </template>
          </el-table-column>
          <el-table-column label="出库数量" align="center">
              <template slot-scope="scope">
                {{scope.row.count}}{{scope.row.GoodInfo.packing_unit}}
              </template>
          </el-table-column>
          <el-table-column label="库存数量" align="center">
            <template slot-scope="scope">
              {{scope.row.over_count}}
              
            </template>
          </el-table-column>
          <el-table-column label="使用人" align="center">
            <template slot-scope="scope">
              {{getName(scope.row.patient_id)}}
            </template>
          </el-table-column>
          <el-table-column label="备注" align="center">
            <template slot-scope="scope">
              {{scope.row.remark}}
            </template>
          </el-table-column>
       </el-table>
       <el-pagination
            @size-change="handleSizeChangeOne"
            @current-change="handleCurrentChangeOne"
            :page-sizes="[10, 50, 100,200,500,1000]"
            :page-size="10"
            background
            align="right"
            style="margin-top:20px;"
            layout="total, sizes, prev, pager, next, jumper"
            :total="totalone"
          >
            </el-pagination>
      <span slot="footer" class="dialog-footer">
        <el-button @click="dialogVisible = false">取 消</el-button>
        <el-button type="primary" @click="dialogVisible = false">确 定</el-button>
      </span>
    </el-dialog>


   <el-dialog
    title="自查数据"
    :visible.sync="checkdialogVisible"
    width="50%">
    <span>
      <span>ID: {{good_id}}</span>
      <el-table
        :data="checkData"
        border
        style="width: 100%">
        <el-table-column prop="date" label="开药日期" width="180" align="center">
          <template slot-scope="scope" >
              {{ getTime(scope.row.record_date) }}
          </template>
        </el-table-column>
        <el-table-column prop="date" label="时间搓" width="180" align="center">
          <template slot-scope="scope" >
              {{scope.row.record_date}}
          </template>
        </el-table-column>
        <el-table-column prop="name" label="开药数量" width="180" align="center">
          <template slot-scope="scope" >
              {{ scope.row.check_count }}
          </template>
        </el-table-column>
        <el-table-column prop="address" label="出库数量" align="center">
          <template slot-scope="scope" >
             {{getGoodCount(scope.row.record_date)}}
          </template>
        </el-table-column>

        <el-table-column prop="address" label="是否异常" align="center">
          <template slot-scope="scope" >
             <span v-if="scope.row.check_count==getGoodCount(scope.row.record_date)">否</span>
             <span v-if="scope.row.check_count!=getGoodCount(scope.row.record_date)" style="color:red">是</span>
          </template>
        </el-table-column>
      </el-table>
    </span>
    <span slot="footer" class="dialog-footer">
      <el-button @click="checkdialogVisible = false">取 消</el-button>
      <el-button type="primary" @click="checkdialogVisible = false">确 定</el-button>
    </span>
  </el-dialog>

  </div>
</template>
<script>
import { getStorehouseList,getGoodNewQuery,getGoodWarehouseOutInfoById,toSendGoodInfomation,getCheckGoodBatchList } from "@/api/drug/drug"
import {
  getStockDrugCount
} from "@/api/stock";
import { uParseTime } from '@/utils/tools'
const moment = require('moment')
export default {

  data(){
    return{
     tableList:[],
     goodList:[
      {id:1,name:"全部耗材"},
      {id:2,name:"库存预警"},
      {id:3,name:"库存为零"},
      {id:4,name:"库存不为零"},
     ],
     houseList:[],
     storehouse_id:0,
     good_type:1,
     multipleSelection: [],
     signAndWeighBoxPatients: "sign-and-weigh-box-patients",
     manufacturerList:[],
     limit:10,
     page:1,
     total:0,
     limitone:10,
     pageone:1,
     totalone:0,
     keyword:"",
     goodTypeList:[],
     start_time:"",
     end_time:"",
     countList:[],
     outCountList:[],
     autoCountList:[],
     cancelCountList:[],
     org_id:this.$store.getters.xt_user.org_id,
     dialogVisible:false,
     start_first_time:moment().startOf('month').format("YYYY-MM-DD"),
     end_first_time:moment().endOf('month').format("YYYY-MM-DD"),
     tableData:[],
     good_id:0,
     patientList:[],
     good_name:"",
     specification_name:"",
     loading:false,
     warehouseInfoByList:[],
     cancelStockInfoByList:[],
     warehouseOutByList:[],
     flushList:[],
     type_name:0,
     storehouseId:0,
     dealerList:[],
     checkdialogVisible:false,
     checkData:[],
     outData:[],
     medicalInsuranceLevelList:[],
    }
  
  },
  methods:{
    getMedicalInsuranceLeve(id){
      var name = ""
      for(let i=0;i<this.medicalInsuranceLevelList.length;i++){
         if(id == this.medicalInsuranceLevelList[i].value){
            name = this.medicalInsuranceLevelList[i].name
         }
      }
      return name
    },
    changeStorehouseName(){
      this.getlist()
    },
    changeGoodName(){
      this.getlist()
    },
    toClick(val){
       var manufacturer_name = ""
       var specification_name = ""
       for(let i=0;i<this.manufacturerList.length;i++){
          if(val.manufacturer == this.manufacturerList[i].id){
            manufacturer_name = this.manufacturerList[i].manufacturer_name
          }
       }
      specification_name = val.specification_name + "/" + val.packing_unit
      var overCount  = this.getOverplus(val.xt_warehouse_info)
      // window.sessionStorage.setItem('start_time',this.start_time)
      // window.sessionStorage.setItem('end_time',this.end_time)
      this.$router.push({path:"/stock/in/stockflow?id="+val.id+"&manufacturer="+manufacturer_name+"&packing_unit="+val.packing_unit+"&overCount="+overCount})
    },
    toClickOne(val){
    
      var manufacturer_name = ""
      var specification_name = ""
      for(let i=0;i<this.manufacturerList.length;i++){
          if(val.manufacturer == this.manufacturerList[i].id){
            manufacturer_name = this.manufacturerList[i].manufacturer_name
          }
       }
      specification_name = val.specification_name + "/" + val.packing_unit
      var overCount  = this.getOverplus(val.xt_warehouse_info)
      // window.sessionStorage.setItem('start_time',this.start_time)
      // window.sessionStorage.setItem('end_time',this.end_time)
      this.$router.push({path:"/stock/in/stockbatchnumber?id="+val.id+"&manufacturer="+manufacturer_name+"&packing_unit="+val.packing_unit+"&overCount="+overCount})
    },

    getStorehouseList(){
      getStorehouseList().then(response=>{
         if(response.data.state == 1){
           var houseList = response.data.data.list
           var obj = {id:0,storehouse_name:"全部"}
           this.houseList.push(obj)
           for(let i=0;i<houseList.length;i++){
             this.houseList.push(houseList[i])
           }
           this.manufacturerList = response.data.data.manufacturerList
           this.goodTypeList = response.data.data.goodTypeList
           this.patientList = response.data.data.patientList
           this.dealerList = response.data.data.dealerList
         }
      })
    },
    getlist(){
       this.loading = true
       if(this.org_id == 10679){
           this.page =1
           this.limit =100
       }
        var params = {
          storehouse_id:this.storehouse_id,
          good_type:this.good_type,
          keyword:this.keyword,
          page:this.page,
          limit:this.limit,
          start_time:this.start_time,
          end_time:this.end_time,
        }
      getGoodNewQuery(params).then(response=>{
         if(response.data.state == 1){
            // var list = response.data.data.list
            var list =  response.data.data.stockList
            this.loading = false
            this.tableList = list
            this.total = response.data.data.total
            this.medicalInsuranceLevelList = response.data.data.medicalInsuranceLevelList
           
         }
      })
    },
    getManufacturName(id){
      var manufacturer_name = ""
      for(let i=0;i<this.manufacturerList.length;i++){
        if(id == this.manufacturerList[i].id){
           manufacturer_name = this.manufacturerList[i].manufacturer_name
        }
      }
      return manufacturer_name
    },
    getDearName(id){
      var dear_name = ""
      for(let i=0;i<this.dealerList.length;i++){
        if(id == this.dealerList[i].id){
          dear_name = this.dealerList[i].dealer_name
        }
      }
      return dear_name
    },
    handleSizeChange(val) {
      this.limit = val;
      this.getlist()
    },
    handleCurrentChange(val) {
      this.page = val;
      this.getlist()
    },
    handleSizeChangeOne(val) {
      this.limitone = val;
      this.toDialogClick(this.good_id,this.good_name,this.specification_name,this.storehouseId)
    },
    handleCurrentChangeOne(val) {
      this.pageone = val;
      this.toDialogClick(this.good_id,this.good_name,this.specification_name,this.storehouseId)
    },
   seach(){
    this.getlist()
   },
   getGoodTypeName(id){
     var type_name = ""
     for(let i=0;i<this.goodTypeList.length;i++){
       if(id == this.goodTypeList[i].id){
         type_name = this.goodTypeList[i].type_name
       }
     }
     return type_name
   },
   getHouseName(id){
     var storehouse_name = ""
     for(let i=0;i<this.houseList.length;i++){
       if(id == this.houseList[i].id){
         storehouse_name = this.houseList[i].storehouse_name
       }
     }
     return storehouse_name
   },
   getWareInfoCount(val,storehouse_id){
     var count = 0
     if(val!=null&&val.length > 0){
       for(let i=0;i<val.length;i++){
         if(val[i].storehouse_id == storehouse_id){
             count +=val[i].warehousing_count
         }
       }
     }
     if(count > 0){
       return count
     }else{
       return ""
     }
   },
   getStockDrugCount(){
        var params ={
           keywords: this.keywords,
           start_time:this.start_time,
           end_time:this.end_time,
        }
      getStockDrugCount(params).then(response=>{
         if(response.data.state == 1){
           var outlist = response.data.data.outList
           this.outCountList = outlist
           var autoCount = response.data.data.autoCount
           this.autoCountList = autoCount
           var totalCount = response.data.data.totalCount
           this.cancelCountList = totalCount
         }
      })
    },
    getWareInfoCountOne(val,storehouse_id){
     var count = 0
     if(val!=null&&val.length > 0){
       for(let i=0;i<val.length;i++){
         if(val[i].storehouse_id == storehouse_id){
             count +=val[i].stock_count
         }
       }
     }
     if(count > 0){
       return count
     }else{
       return ""
     }
   },
   getOutCount(id){
      var count = 0
      for(let i=0;i<this.outCountList.length;i++){
         if(id == this.outCountList[i].good_id){
           count = this.outCountList[i].count
         }
      }
     return count
   },
   getAutoCount(id){
     var count= 0
     for(let i=0;i<this.autoCountList.length;i++){
       if(id == this.autoCountList[i].good_id){
         count = this.autoCountList[i].count
       }
     }
     return count
   },
   getCancelCount(id){
     var count = 0
     for(let i=0;i<this.cancelCountList.length;i++){
       if(id == this.cancelCountList[i].good_id){
          count = this.cancelCountList[i].count
       }
     }
     return count
   },
   getCancelCountInfo(cancel_stock_info,storehouse_id){
     var count = 0 
     if(cancel_stock_info!=null && cancel_stock_info.length >0){
        for(let i=0;i<cancel_stock_info.length;i++){
          if(cancel_stock_info[i].storehouse_id == storehouse_id){
              count += cancel_stock_info[i].count
          }
        }
     }
     return count
   },
   getWareOutInfoCount(warehouse_out_info,storehouse_id){
     var count = 0
     if(warehouse_out_info!=null && warehouse_out_info.length > 0){
       for(let i=0;i<warehouse_out_info.length;i++){
         if(storehouse_id == warehouse_out_info[i].storehouse_id){
            count +=warehouse_out_info[i].count
         }
       }
     }
     return count
   },
   getInCount(id){
      var count= 0
     for(let i=0;i<this.countList.length;i++){
      if(id == this.countList[i].good_id){
          count = this.countList[i].count
      }
     }
     return count
    },
    getOutCount(id){
      var count = 0
      for(let i=0;i<this.outCountList.length;i++){
         if(id == this.outCountList[i].good_id){
           count = this.outCountList[i].count
         }
      }
     return count
   },
   getAutoCount(id){
     var count= 0
     for(let i=0;i<this.autoCountList.length;i++){
       if(id == this.autoCountList[i].good_id){
         count = this.autoCountList[i].count
       }
     }
     return count
   },
   getCancelCount(id){
     var count = 0
     for(let i=0;i<this.cancelCountList.length;i++){
       if(id == this.cancelCountList[i].good_id){
          count = this.cancelCountList[i].count
       }
     }
     return count
   },
   getStockCount(id){
     var stock_count = 0
     for(let i=0;i<this.countList.length;i++){
       if(id == this.countList[i].good_id){
         stock_count = this.countList[i].stock_count
       }
     }
     return stock_count
   },
   getWareInfo(arr){
     var total = 0
     if(arr.length > 0){
       for(let i=0;i<arr.length;i++){
         total += parseInt(arr[i].warehousing_count)
       }
     }else{
       total = ""
     }
     return total
   },
   getOverplus(arr){
     var total = 0
     if(arr.length > 0){
      for(let i=0;i<arr.length;i++){
        total += arr[i].stock_count
      }
     }else{
       total = ""
     }
     return total
   },
   getCancelInfo(arr){
     var total = 0
     if(arr.length > 0){
      for(let i=0;i<arr.length;i++){
        total += arr[i].count
      }
     }else{
       total = ""
     }
     return total
   },
   getOverFlushInfo(arr){
     var total = 0
     if(arr!=null&&arr.length >0){
      for(let i=0;i<arr.length;i++){
        total += arr[i].stock_count
      }
     }
     return total
   },
   toDialogClick(id,good_name,specification_name,storehouse_id){
   
    this.good_id = id
    this.good_name = good_name
    this.specification_name = specification_name
    this.storehouseId = storehouse_id
     var params = {
       good_id:id,
       limit:this.limitone,
       page:this.pageone,
       start_first_time:this.start_first_time,
       end_first_time:this.end_first_time,
       storehouse_id:storehouse_id,
     }
     getGoodWarehouseOutInfoById(params).then(response=>{
       if(response.data.state == 1){
         this.dialogVisible = true
         var list = response.data.data.list
         this.tableData = list
         this.totalone = response.data.data.total
      
        //  this.flushList =  response.data.data.flushList
        
       }
     })
   
   },
   startFirstTimeChange(){
    this.toDialogClick(this.good_id,this.good_name,this.specification_name,this.storehouseId)
   },
   endEndTimeChange(){
    this.toDialogClick(this.good_id,this.good_name,this.specification_name,this.storehouseId)
   },
  getTime(val) {
    if(val < 0){
      return ""
    }
   if(val == ""){
     return ""
   }else {
    return uParseTime(val, '{y}-{m}-{d}')
   }
   },
   getTimeOne(val) {
    if(val < 0){
      return ""
    }
   if(val == ""){
     return ""
   }else {
    return uParseTime(val, '{y}-{m}-{d} {h}:{i}')
   }
   },
  getName(id){
    var name = ""
    for(let i=0;i<this.patientList.length;i++){
      if(id == this.patientList[i].id){
        name = this.patientList[i].name
      }
    }
    return name
  },
  getCount(ctime){
   var arr = []
   var arrOut = []
   var total_in = 0
   var total_out = 0
   for(let i=0;i<this.warehouseInfoByList.length;i++){
      if(ctime >= this.warehouseInfoByList[i].ctime){
         arr.push(this.warehouseInfoByList[i])
      }
   }
   if(arr.length > 0){
    for(let i=0;i<arr.length;i++){
      total_in +=arr[i].warehousing_count
    }
   }
   for(let i=0;i<this.warehouseOutByList.length;i++){
     if(ctime <=this.warehouseOutByList[i].ctime){
       arrOut.push(this.warehouseOutByList[i])
     }
   }
   if(arrOut.length >0){
    for(let i=0;i<arrOut.length;i++){
      total_out +=arrOut[i].count
    }
   }
   console.log("total23323223",total_in)
   return total_in - total_out
  },
  getStockCountOne(warehouse_out_id,good_id,patient_id,sys_record_time){
    var flush_count = 0
    if(this.flushList!=null && this.flushList.length > 0){
     for(let i=0;i<this.flushList.length;i++){
      if(warehouse_out_id == this.flushList[i].warehouse_out_id && good_id == this.flushList[i].good_id && patient_id == this.flushList[i].patient_id && sys_record_time == this.flushList[i].system_time){
         flush_count = this.flushList[i].flush_count
      }
     }
    }
    return flush_count
  },
   // 合并单元格样式
  cellStyle({ row, column, rowIndex, columnIndex }) {
    let arr = [5,6, 7, 8, 9,10,11];
    if (arr.indexOf(columnIndex) > -1) {
      return "spanClass";
    }
   },
   exportList(){
      import('@/vendor/Export2Excel').then(excel => {
      
        if(this.org_id!=0 && this.org_id!=9956){
          if(this.tableList!=null && this.tableList.length > 0){
          for(let i=0;i<this.tableList.length;i++){
            this.tableList[i].index = i+1
            this.tableList[i].type_name =  this.getGoodTypeName(this.tableList[i].good_type_id)
            this.tableList[i].spec = this.tableList[i].specification_name +"/"+ this.tableList[i].packing_unit
            this.tableList[i].manufacturer_name = this.getManufacturName(this.tableList[i].manufacturer)
            this.tableList[i].dealer_name = this.getDearName(this.tableList[i].dealer)
            this.tableList[i].stock_in_count = this.GetExportStockInCount(this.tableList[i].xt_good_stock,this.tableList[i].id)
            this.tableList[i].stock_out_count =this.getExportStockOutCount(this.tableList[i].xt_good_stock,this.tableList[i].id) 
            this.tableList[i].stock_cancel_count = this.getExportCancelStockInfo(this.tableList[i].xt_good_stock,this.tableList[i].id)
            this.tableList[i].act_out_count  = this.getExportActStockOutCount(this.tableList[i].xt_good_stock,this.tableList[i].id) 
            this.tableList[i].over_count = this.getExportOverCount(this.tableList[i].xt_good_stock,this.tableList[i].id) 
            this.tableList[i].sum_count =  this.getOverCount(this.tableList[i].xt_warehouse_info) 

          }
         }
         

         const tHeader = ['序号','耗材类型', '耗材名称', '规格&单位','生产厂商','经销商','批准文号','国家编码','入库数量','出库数量','退库数量','实际出库','剩余库存','总库存']
         const filterVal = ['index','type_name', 'good_name', 'spec','manufacturer_name','dealer_name','number','social_security_directory_code','stock_in_count','act_out_count','stock_cancel_count','stock_out_count','over_count','sum_count']
        
         const data = this.formatJson(filterVal, this.tableList)
         
         excel.export_json_to_excel({
           header: tHeader,
           data,
           filename: '库存查询'
         })
          this.downloadLoading = false
        }

        if(this.org_id == 0 || this.org_id == 9956){
         
          if(this.tableList!=null && this.tableList.length > 0){
          for(let i=0;i<this.tableList.length;i++){
            this.tableList[i].index = i+1
            this.tableList[i].type_name =  this.getGoodTypeName(this.tableList[i].good_type_id)
            this.tableList[i].spec = this.tableList[i].specification_name +"/"+ this.tableList[i].packing_unit
            this.tableList[i].manufacturer_name = this.getManufacturName(this.tableList[i].manufacturer)
            this.tableList[i].dealer_name = this.getDearName(this.tableList[i].dealer)
            this.tableList[i].stock_in_count = this.GetExportStockInCount(this.tableList[i].xt_good_stock,this.tableList[i].id)
            this.tableList[i].stock_out_count =this.getExportStockOutCount(this.tableList[i].xt_good_stock,this.tableList[i].id) 
            this.tableList[i].stock_cancel_count = this.getExportCancelStockInfo(this.tableList[i].xt_good_stock,this.tableList[i].id)
            this.tableList[i].act_out_count  = this.getExportActStockOutCount(this.tableList[i].xt_good_stock,this.tableList[i].id) 
            this.tableList[i].over_count = this.getExportOverCount(this.tableList[i].xt_good_stock,this.tableList[i].id) 
            this.tableList[i].sum_count =  this.getOverCount(this.tableList[i].xt_warehouse_info) 

          }
         }
         

         const tHeader = ['序号','耗材编码','耗材类型', '耗材名称', '规格&单位','生产厂商','经销商','批准文号','国家编码','入库数量','出库数量','退库数量','实际出库','剩余库存','总库存']
         const filterVal = ['index','good_number','type_name', 'good_name', 'spec','manufacturer_name','dealer_name','number','social_security_directory_code','stock_in_count','act_out_count','stock_cancel_count','stock_out_count','over_count','sum_count']
        
         const data = this.formatJson(filterVal, this.tableList)
         
         excel.export_json_to_excel({
           header: tHeader,
           data,
           filename: '库存查询'
         })
          this.downloadLoading = false
        }
   
       })
      },
      formatJson(filterVal, jsonData) {
        return jsonData.map(v => filterVal.map(j => v[j]));
      },
      toPrint(){
        this.$router.push("/good/new/query/print?start_time="+this.start_time+"&end_time="+this.end_time+"&keyword="+this.keyword+"&storehouse_id="+this.storehouse_id+"&page="+this.page+"&limit="+this.limit+"&good_type="+this.good_type)
      },
      getCancelSotckInfo(arr){
        var cancle_toal = 0
        if(arr.length >0){
         for(let z=0;z<arr.length;z++){
           cancle_toal += arr[z].count
         }
        }
        return cancle_toal
      },
     getStockOutFlow(arr,storehouse_id){
       var count = 0
       if(arr!=null && arr.length > 0){
         for(let i=0;i<arr.length;i++){
          if(arr[i].storehouse_id == storehouse_id){
            count +=arr[i].count
          }
         
         }
       }
       if(count > 0){
          return count
       }else{
         return  0
       }
     },
     GetStockInCount(val){
       var count = 0
       if(val!=null && val.length >0){
        for(let i=0;i<val.length;i++){
          count +=val[i].warehousing_count
        }
       }
       if(count > 0){
         return count
       }else{
         return  0
       }

     },
     getStockOutCount(val){
       var count = 0
       if(val!=null && val.length >0){
        for(let i=0;i<val.length;i++){
          count +=val[i].count
        }
       }
       if(count > 0){
         return count
       }else{
         return  0
       }
     },
     getCancelStockInfo(val){
       var count = 0
       if(val!=null && val.length >0){
        for(let i=0;i<val.length;i++){
          count +=val[i].count
        }
       }
       if(count > 0){
         return count
       }else{
         return  0
       }
     },
     getOverCount(val){
       var count = 0
       if(val!=null && val.length >0){
        for(let i=0;i<val.length;i++){
          count +=val[i].stock_count
        }
       }
       if(count > 0){
         return count
       }else{
         return  0
       }
     },

    //  修改后接口
    getGoodIn(val,storehouse_id){
      var sum_count = 0
      if(val!=null && val!=undefined){
        for(let i=0;i<val.length;i++){
          if(storehouse_id == val[i].storehouse_id){
             sum_count = val[i].stock_in_count
          }
        }
      }
      if(sum_count > 0){
         return sum_count
      }else{
        return  0
      }
    },
    getGoodOut(val,storehouse_id){
      var sum_count = 0
      if(val!=null && val!=undefined){
        for(let i=0;i<val.length;i++){
          if(storehouse_id == val[i].storehouse_id){
             sum_count = val[i].stock_out_count
          }
        }
      }
      if(sum_count > 0){
         return sum_count
      }else{
        return  0
      }
    },
    getGoodCancel(val,storehouse_id){
      var sum_count = 0
      if(val!=null && val!=undefined){
        for(let i=0;i<val.length;i++){
          if(storehouse_id == val[i].storehouse_id){
             sum_count = val[i].stock_cancel_count
          }
        }
      }
      if(sum_count > 0){
         return sum_count
      }else{
        return  0
      }
    },
    getGoodAct(val,storehouse_id){
      var sum_count = 0
      if(val!=null && val!=undefined){
        for(let i=0;i<val.length;i++){
          if(storehouse_id == val[i].storehouse_id){
             sum_count = val[i].stock_act_out_count
          }
        }
      }
      if(sum_count > 0){
         return sum_count
      }else{
        return  0
      }
    },
    getGoodFlush(val,storehouse_id){
      var sum_count = 0
      if(val!=null && val!=undefined){
        for(let i=0;i<val.length;i++){
          if(storehouse_id == val[i].storehouse_id){
             sum_count = val[i].flush_count
          }
        }
      }
      if(sum_count > 0){
         return sum_count
      }else{
        return  0
      }
    },
    getSumCount(val,good_id){
      var sum_count = 0
      var arr = []
      if(val!=null && val!=undefined){
        for(let i=0;i<val.length;i++){
          if(good_id == val[i].good_id){
            arr.push(val[i])
          }
        }
      }
      for(let i=0;i<arr.length;i++){
        sum_count +=arr[i].flush_count
      }
      if(sum_count > 0){
         return sum_count
      }else{
        return  0
      }
    },
    toClickTwo(){
      toSendGoodInfomation().then(response=>{
        if(response.data.state == 1){
          var msg = response.data.data.msg
          console.log("脚本保存成功!")
        }
      })
    },

    //导出
    GetExportStockInCount(val,id){
      var sum_count = 0
      var arr = []
      if(val!=null && val.length > 0){
        for(let i=0;i<val.length;i++){
          if(val[i].good_id == id){
              arr.push(val[i])
          }
        }
      }
      for(let i=0;i<arr.length;i++){
        sum_count +=arr[i].stock_in_count
      }
      if(sum_count > 0){
        return sum_count
      }else{
        return 0
      }
    },
    getExportStockOutCount(val,id){
      var sum_count = 0
      var arr = []
      if(val!=null && val.length > 0){
        for(let i=0;i<val.length;i++){
          if(val[i].good_id == id){
              arr.push(val[i])
          }
        }
      }
      for(let i=0;i<arr.length;i++){
        sum_count +=arr[i].stock_out_count
      }
      if(sum_count > 0){
        return sum_count
      }else{
        return 0
      }
    },
    getExportCancelStockInfo(val,id){
      var sum_count = 0
      var arr = []
      if(val!=null && val.length > 0){
        for(let i=0;i<val.length;i++){
          if(val[i].good_id == id){
              arr.push(val[i])
          }
        }
      }
      for(let i=0;i<arr.length;i++){
        sum_count +=arr[i].stock_cancel_count
      }
      if(sum_count > 0){
        return sum_count
      }else{
        return 0
      }
    },
    getExportActStockOutCount(val,id){
      var sum_count = 0
      var arr = []
      if(val!=null && val.length > 0){
        for(let i=0;i<val.length;i++){
          if(val[i].good_id == id){
              arr.push(val[i])
          }
        }
      }
      for(let i=0;i<arr.length;i++){
        sum_count +=arr[i].stock_act_out_count
      }
      if(sum_count > 0){
        return sum_count
      }else{
        return 0
      }
    },
    getExportOverCount(val,id){
     var sum_count = 0
      var arr = []
      if(val!=null && val.length > 0){
        for(let i=0;i<val.length;i++){
          if(val[i].good_id == id){
              arr.push(val[i])
          }
        }
      }
      for(let i=0;i<arr.length;i++){
        sum_count +=arr[i].flush_count
      }
      if(sum_count > 0){
        return sum_count
      }else{
        return 0
      }
    },
    handleCheckBatch(val){
       this.good_id = val.id 
      getCheckGoodBatchList(val.id).then(response=>{
         if(response.data.state ==1){
           var projectList = response.data.data.projectList
           if (projectList.length> 0)  {
              for(let i=0;i<projectList.length;i++){
                let dataInfoOne = {}
                projectList.forEach((item, index) => {
                let { record_date } = item
                  if (!dataInfoOne[record_date]) {
                    dataInfoOne[record_date] = {
                      record_date:item.record_date,
                      check_count:0,
                      child:[]
                    }
                  }
                })
                let hisarr = Object.values(dataInfoOne)
                for(let i=0;i<hisarr.length;i++){
                  for(let j=0;j<projectList.length;j++){
                     if(hisarr[i].record_date == projectList[j].record_date){
                         hisarr[i].child.push(projectList[j])
                     }
                  }
                }

                for(let i=0;i<hisarr.length;i++){
                  for(let j=0;j<hisarr[i].child.length;j++){
                       hisarr[i].check_count += hisarr[i].child[j].count
                  }
                }

                this.checkData = []
                console.log("hia_arr",hisarr)
                this.checkData = hisarr
              }
           }
           var warehouseList = response.data.data.warehouseList

           if (warehouseList.length> 0)  {
              for(let i=0;i<warehouseList.length;i++){
                let dataInfoOne = {}
                warehouseList.forEach((item, index) => {
                let { sys_record_time } = item
                  if (!dataInfoOne[sys_record_time]) {
                    dataInfoOne[sys_record_time] = {
                      sys_record_time:item.sys_record_time,
                      check_count:0,
                      child:[]
                    }
                  }
                })
                let hisarr = Object.values(dataInfoOne)
                for(let i=0;i<hisarr.length;i++){
                  for(let j=0;j<warehouseList.length;j++){
                     if(hisarr[i].sys_record_time == warehouseList[j].sys_record_time){
                         hisarr[i].child.push(warehouseList[j])
                     }
                  }
                }

                for(let i=0;i<hisarr.length;i++){
                  for(let j=0;j<hisarr[i].child.length;j++){
                       hisarr[i].check_count += hisarr[i].child[j].count
                  }
                }
                this.outData=[]
                this.outData = hisarr
              }
              this.checkdialogVisible = true
           }
         }
      })
    },
    getGoodCount(sys_record_time){
      var count = 0
      for(let i=0;i<this.outData.length;i++){
        if(this.outData[i].sys_record_time == sys_record_time){
            count = this.outData[i].check_count
        }
      }
      return count
    }

  },
  created(){
    this.houseList = []
    this.getStorehouseList()
    this.getlist()
    
    // var org_id = this.$store.getters.xt_user.org_id
    // if(org_id == 9583 || org_id == 3907){
    //  this.getStockDrugCount()
    // }
 
  }
}
</script>

<style>
.app-container{
  /* padding-left: 0;
  margin-left: 0; */
}
.sign-and-weigh-box .sign-and-weigh-box-patients .cell {
  font-size: 12px;
}

.sign-and-weigh-box .sign-and-weigh-box-patients .current-row > td {
  background: #6fb5fa;
}

.count {
  color: #bd2c00;
}

.el-table td,
.el-table th.is-leaf,
.el-table--border,
.el-table--group {
  border-color: #d0d3da;
}

.el-table--border::after,
.el-table--group::after,
.el-table::before {
  background-color: #d0d3da;
}

/* 合并表格线样式 */
.spanClass .cell {
  padding: 0 !important;
}

.spanClass .cell tr {
  display: inline-block;
  width: 100%;
}

.spanClass .cell tr td {
  padding: 10px 0;
  border-bottom: 1px solid #ebeef5;
  display: block;
  width: 100%;
}
.spanClass .cell tr:last-of-type td {
  border-bottom: none;
}
</style>