<template>
  <view>
    <uni-card spacing="0">
      <view style="height: 72vh">
        <zb-table
          ref="zbTableRef"
          isShowLoadMore
          stripe
          :fit="false"
          :columns="column"
          :cellStyle="setCellStyle"
          :cellHeaderStyle="setCellHeaderStyle"
          :data="listData"
          @detail="handleDetail"
          @pullUpLoading="pullUpLoadingAction"
        ></zb-table>
      </view>
    </uni-card>
    <borrow-detail-popup :show="detailShow" :checkInfo="checkInfo" @close="detailShow = false" />
  </view>
</template>

<script setup>
import { ref, reactive, onMounted, watch, computed } from 'vue'
import { onLoad } from '@dcloudio/uni-app'
import { setCellHeaderStyle, setCellStyle } from '@/nx/config/zbTable'
import BorrowDetailPopup from './detail.vue'
import { borrowList } from '@/nx/api/deviceInfo'
import { useListData } from '@/nx/hooks/usePageListData'
import nx from '@/nx'

const column = reactive([
  {
    label: '借用人',
    name: 'borrowOper',
    width: 120
  },
  {
    label: '借用部门',
    name: 'borrowDept',
    width: 140
  },
  {
    label: '借用日期',
    name: 'borrowDate',
    width: 120
  },
  {
    label: '借用原因',
    name: 'borrowReason',
    width: 180
  },
  {
    label: '计划归还日期',
    name: 'planGivebackDate',
    width: 140
  },
  {
    label: '备注',
    name: 'remark',
    width: 140
  },
  {
    name: 'operation',
    type: 'operation',
    label: '操作',
    renders: [{ name: '详情', func: 'detail' }]
  }
])
const deviceId = ref('')
const deviceText = ref('')

onMounted(() => {
  const { id, deviceName } = nx.$store('biz').deviceInfo
  deviceId.value = id
  deviceText.value = deviceName
  getInitData()
})
const searchParams = computed(() => ({
  deviceBusInfoId: deviceId.value,
  borrowStatus: '已借出'
}))
const { listData, loadingData, scrollToLower, loadStatus, getInitData } = useListData({
  searchParams,
  api: borrowList
})
const zbTableRef = ref()
function pullUpLoadingAction() {
  if (loadingData.value) return
  if (loadStatus.value === 'nomore') {
    zbTableRef.value.pullUpCompleteLoading('ok')
  } else {
    scrollToLower()
  }
}

const detailShow = ref(false)
const checkInfo = ref({})
function handleDetail(row) {
  checkInfo.value = row
  detailShow.value = true
}
</script>

<style lang="scss" scoped>
:deep(.zb-table uni-button[type='primary']) {
  background-color: $uni-color-primary !important;
}
</style>
