<template>
    <Dialog title="实时库存"  v-model="dialogVisible" width="80%">
<el-card class="hl-card">

    <ContentWrap class="borderxx">
         <el-form class="-mb-15px" :model="queryParams" ref="queryFormRef" :inline="true" label-width="120px">
      <el-form-item label="物料名称" prop="matName" >
        <el-input v-model="queryParams.matName" placeholder="物料名称" clearable @keyup.enter="handleQuery" class="!w-240px" />
      </el-form-item>


      <el-form-item >
        <el-button @click="handleQuery" type="primary">
          <Icon icon="ep:search" class="mr-5px" /> 搜索
        </el-button>
        <el-button @click="resetQuery">
          <Icon icon="ep:refresh" class="mr-5px" /> 重置
        </el-button>
      </el-form-item>
    </el-form>
  </ContentWrap>

  <!-- 列表 -->
  <ContentWrap>
    <el-table
ref="multipleTableRef" v-loading="loading" :data="list" :stripe="true"
    @row-click="clickRow"   @selection-change="handleCurrentChange" :show-overflow-tooltip="true" class="hl-table">
                       <el-table-column
                        type="selection"
                    width="55"/>
      <el-table-column type="index" width="100" fixed label="序号" align="center" />
      <el-table-column label="物料编码" align="center" prop="matCode" fixed min-width="120" />
      <el-table-column label="物料名称" align="center" prop="matName" fixed min-width="120"/>
      <el-table-column label="物料类型" align="center" prop="matType" min-width="120"/>
      <el-table-column label="物料简称" align="center" prop="shortName" min-width="120"/>
      <el-table-column label="规格/型号" align="center" prop="matSpec" min-width="120"/>
      <el-table-column label="品牌" align="center" prop="matBrand" min-width="120"/>
      <el-table-column label="仓库" align="center" prop="whName" min-width="120"/>
      <el-table-column label="库区" align="center" prop="rgName" min-width="120"/>
      <el-table-column label="库位" align="center" prop="pnName" min-width="120"/>
      <el-table-column label="批次号" align="center" prop="lotNo" min-width="120" v-if="false"/>
      <el-table-column label="库存数量" align="center" prop="storageOkQty" min-width="120"/>
	  <el-table-column label="金额(元)" align="center" prop="sumKcMoney" min-width="120"/>
      <el-table-column label="库存单位" align="center" prop="matUnit" min-width="120"/>
    </el-table>
    <!-- 分页 -->
    <Pagination
:total="total" v-model:page="queryParams.pageNo" v-model:limit="queryParams.pageSize"
      @pagination="getList" />
  </ContentWrap>
</el-card>
    <template #footer>
      <span class="dialog-footer">
        <el-button @click="dialogVisible = false">取消</el-button>
        <el-button type="primary" @click="success">
          确认
        </el-button>
      </span>
    </template>
</Dialog>
    <printDialog ref="printref" :minAmount="minAmount" :formData="formData" />
</template>

<script setup lang="ts">
import download from '@/utils/download'
import * as StorageLogApi from '@/api/heli/storagelog'

import { getIntDictOptions, DICT_TYPE } from '@/utils/dict'

import * as WarehouseApi from '@/api/heli/warehouse'
import * as RgApi from '@/api/heli/rg'
import * as PnApi from '@/api/heli/pn'
defineOptions({ name: 'StorageLog' })
const printref = ref()
const whList = ref([])
const rgList = ref([])
const pnList = ref([])
const dialogVisible = ref(false)
const rgCurrentList = ref([])
const pnCurrentList = ref([])

const message = useMessage() // 消息弹窗
const { t } = useI18n() // 国际化

const loading = ref(true) // 列表的加载中
const list = ref([]) // 列表的数据
const total = ref(0) // 列表的总页数
const queryParams = reactive({
  pageNo: 1,
  pageSize: 10,
  matCode: undefined,
  matName: undefined,
  matType: undefined,
  lotNo: undefined,
  whId: undefined,
  rgId:undefined,
  pnId: undefined,
  headerNo: undefined,
})


const queryFormRef = ref() // 搜索的表单

const currentRow = ref()
const multipleTableRef = ref()
/** 查询列表 */
const getList = async () => {
  loading.value = true
  try {
    const data = await StorageLogApi.getStorageNowPage(queryParams)
    list.value = data.list
    total.value = data.total
  } finally {
    loading.value = false
  }
}
const clickItem = ref([])
const handleCurrentChange = (val) => {

  clickItem.value = val;
  if(val.length > 1){
      multipleTableRef.value!.clearSelection()
   multipleTableRef.value!.toggleRowSelection(val.pop())
  }

}
const clickRow = (row) => {
              // 单选选中行
              if (  clickItem.value[0] == row) {
                // 取消
                 clickItem.value = [];
      multipleTableRef.value!.clearSelection()
              } else {
                // 选择
                  clickItem.value.push(row);
              multipleTableRef.value!.clearSelection()
                multipleTableRef.value!.toggleRowSelection(row, true);
            }
         }

/** 搜索按钮操作 */
const handleQuery = () => {
  queryParams.pageNo = 1
  getList()
}
const printfClick = () =>{
  if(clickItem.value == null || clickItem.value.length == 0){
     message.error("至少选择一项后，打印!")
     return
  }
  printref.value.open(clickItem.value.storageOkQty)
}
/** 重置按钮操作 */
const resetQuery = () => {
  queryFormRef.value.resetFields()
  handleQuery()
}

const handleWh = async (wid) => {
  queryParams.rgId = undefined
  queryParams.pnId = undefined

  rgCurrentList.value =[]
  pnCurrentList.value =[]
  rgCurrentList.value = rgList.value.filter( (item) => { return  item.wh_id == wid})

}
const rowid = ref()
const open = async (rowids,matCode) => {
  clickItem.value = null;
  //multipleTableRef.value!.clearSelection()
  dialogVisible.value = true
  queryParams.matName = matCode;
  rowid.value = rowids
  await getList();

}
defineExpose({ open }) // 提供 open 方法，用于打开弹窗
const emit = defineEmits(['success'])
//  emit('success', multipleSelection.value)
const success = () =>{
  dialogVisible.value = false;
  console.log(clickItem.value)
  emit('success',rowid.value,clickItem.value[0].storageOkQty,clickItem.value[0].id,clickItem.value[0].matCode,clickItem.value[0].matName)
}
const handleRg = async (rgid) => {
  pnCurrentList.value =[]
  pnCurrentList.value = pnList.value.filter( (item) => { return  item.rg_id == rgid})
}
//仓库列表
const init_page_wh = (async ()=>{
  whList.value = await WarehouseApi.getSimpList()
})
//库区列表
const init_page_rg = (async ()=>{
  rgList.value = await RgApi.getSimpList()
})
//库位列表
const init_page_pn = (async ()=>{
  pnList.value = await PnApi.getSimpList()
})

/** 初始化 **/
onMounted(async () => {
  await init_page_wh()
  await init_page_rg()
  await init_page_pn()
  await getList()
})
</script>
