Ben Lin
2025-03-18 f3122a551bf69f6aed1467a6acc24805e6b469eb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
<template>
  <div>
    <BasicTable @register="registerTable">
      <template #toolbar>
        <a-button preIcon="OutR|svg" ghost color="success" @click="aoaToExcel"> 导出 </a-button>
      </template>
      <!-- <template #action="{ record }">
          <TableAction
            :actions="[
              {
                icon: 'clarity:note-edit-line',
                onClick: handleEdit.bind(null, record),
              },
              {
                icon: 'ant-design:delete-outlined',
                color: 'error',
                popConfirm: {
                  title: '是否确认删除?',
                placement: 'left',
                  confirm: handleDelete.bind(null, record),
                },
              },
            ]"
          />
        </template> -->
      <Loading :loading="compState.loading" :tip="compState.tip" />
    </BasicTable>
    <!-- <WmsItemDrawer @register="registerDrawer" @success="handleSuccess" /> -->
  </div>
</template>
<script lang="ts" setup>
  import { aoaToSheetXlsx } from '/@/components/Excel';
  import { reactive, ref } from 'vue';
  import { Loading } from '/@/components/Loading';
  import { BasicTable, useTable } from '/@/components/Table';
 
  import { columns, searchFormSchema } from './inventorySearch.data';
  import { getWmsItemListByPage } from '/@/api/tigerapi/wms/inventorySearch';
  import { useRoute } from 'vue-router';
  import { useTabs } from '/@/hooks/web/useTabs';
  import { useMessage } from '/@/hooks/web/useMessage';
  import { useI18n } from '/@/hooks/web/useI18n';
 
  const { t } = useI18n();
  const { createMessage } = useMessage();
  const compState = reactive({
    absolute: false,
    loading: false,
    tip: '加载中...',
  });
  const route = useRoute();
  const ItemCode = ref(route.params?.ItemCode);
  const ITEM_CODE = ItemCode.value == '' ? '' : ItemCode;
  const [registerTable, { reload, getForm, getPaginationRef }] = useTable({
    title: '库位库存查询列表',
    api: getWmsItemListByPage,
    columns,
    formConfig: {
      labelWidth: 120,
      schemas: searchFormSchema,
      model: { ITEM_CODE: ITEM_CODE },
    },
    useSearchForm: true,
    // showTableSetting: true,
    canColDrag: false,
    // ellipsis:true,
    canResize: true,
 
    bordered: true,
    showIndexColumn: false,
    // actionColumn: {
    //   width: 80,
    //   title: '操作',
    //   dataIndex: 'action',
    //   slots: { customRender: 'action' },
    //   fixed: undefined,
    // },
    searchInfo: { ITEM_CODE },
  });
  const { setTitle } = useTabs();
  //setTitle('实时库存' + (ItemCode.value==''?'':',料号:('+ItemCode.value+')'));
 
  console.log(ITEM_CODE);
  function handleSuccess() {
    reload();
  }
  function handleCreate() {
    reload();
  }
  let arr: any[] = [];
  function aoaToExcel() {
    const totals = getPaginationRef().total;
    if (totals < 30000) {
      arr = [];
      compState.loading = true;
      const col = getForm().getFieldsValue();
      getWmsItemListByPage(col).then((res) => {
        res.items.forEach((element) => {
          arr.push({
            仓库: element.WH_CODE,
            据点: element.AUTH_ORG,
            储位: element.LOCATION_CODE,
            物料代码: element.ITEM_CODE,
            数量: element.QTY,
            物料名称: element.ITEM_NAME,
          });
        });
        const arrHeader = columns.map((column) => column.title);
        const arrData = arr.map((item) => {
          return Object.keys(item).map((key) => item[key]);
        });
        // 保证data顺序与header一致
        if (arr.length < 30000000) {
          aoaToSheetXlsx({
            data: arrData,
            header: arrHeader,
            filename: '库位库存查询报表.xlsx',
          });
        } else {
          createMessage.error(t('导出数据不能超过三万条,如需要更多的请联系管理员'));
        }
        compState.loading = false;
      });
    } else {
      createMessage.error(t('导出数据不能超过三万条,如需要更多的请联系管理员'));
    }
  }
</script>