<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: 'checkStrictly|svg',
|
tooltip: '延期天数',
|
ifShow: is_active,
|
onClick: handleCheckStrictlyEdit.bind(null, record),
|
},
|
]"
|
/>
|
</template>
|
<Loading :loading="compState.loading" :tip="compState.tip" />
|
</BasicTable>
|
<checkStrictlyDrawer @register="registerDrawer" @success="handleSuccess" />
|
<!-- <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, TableAction } from '/@/components/Table';
|
import { useDrawer } from '/@/components/Drawer';
|
import { columns, searchFormSchema } from './wms_item.data';
|
import { getWmsItemListByPage } from '/@/api/tigerapi/wms/wms_item';
|
import { useRoute } from 'vue-router';
|
import { useTabs } from '/@/hooks/web/useTabs';
|
import { useMessage } from '/@/hooks/web/useMessage';
|
import { useI18n } from '/@/hooks/web/useI18n';
|
import { useUserStore } from '/@/store/modules/user';
|
import checkStrictlyDrawer from './checkStrictlyDrawer.vue';
|
|
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 id = 'b87079a98deb456a9cfa506bfd1a7bc6';
|
const roles = useUserStore().getUserInfo.roles;
|
const is_active = roles.some((item) => item.MENU_CODE === id);
|
|
const [registerDrawer, { openDrawer }] = useDrawer();
|
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' },
|
// },
|
searchInfo: { ITEM_CODE },
|
});
|
const { setTitle } = useTabs();
|
//setTitle('实时库存' + (ItemCode.value==''?'':',料号:('+ItemCode.value+')'));
|
|
console.log(ITEM_CODE);
|
function handleSuccess() {
|
reload();
|
}
|
// function handleCreate() {
|
// reload();
|
// }
|
function handleCheckStrictlyEdit(record: Recordable) {
|
openDrawer(true, {
|
record,
|
isUpdate: true,
|
});
|
}
|
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) => {
|
let result = '';
|
switch (element.STATUS) {
|
case 0:
|
result = '不存在';
|
break;
|
case 10:
|
result = '送货中';
|
break;
|
case 20:
|
result = '待检验';
|
break;
|
case 30:
|
result = '待入库';
|
break;
|
case 40:
|
result = '在库中';
|
break;
|
case 50:
|
result = '已下架';
|
break;
|
case 60:
|
result = '已发料';
|
break;
|
case 70:
|
result = '已上料';
|
break;
|
case 80:
|
result = '已耗尽';
|
break;
|
case 90:
|
result = '已退料';
|
break;
|
case 100:
|
result = '已发货';
|
break;
|
default:
|
break;
|
}
|
arr.push({
|
物料代码: element.ITEM_CODE,
|
物料描述: element.ITEM_NAME,
|
条码: element.SN,
|
数量: element.QTY,
|
储存状态: result,
|
仓库: element.WH_CODE,
|
储区: element.REGION_CODE,
|
储位: element.LOCATION_CODE,
|
单位: element.UNIT,
|
生产日期: element.PROD_DATE,
|
首次入库日期: element.FIRST_IN_DATE,
|
业务编码: element.TRANS_CODE,
|
单据号码: element.TRANS_NO,
|
单据行号: element.TRANS_LINE,
|
供应商代码: element.SUPP_CODE,
|
供应商批次号: element.SUPP_LOTNO,
|
批次号: element.LOTNO,
|
箱号: element.CARTON_NO,
|
栈板号: element.PALLET_NO,
|
更新人: element.UPDATE_USER,
|
});
|
});
|
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 < 30000) {
|
aoaToSheetXlsx({
|
data: arrData,
|
header: arrHeader,
|
filename: '库存报表.xlsx',
|
});
|
} else {
|
createMessage.error(t('导出数据不能超过三万条,如需要更多的请联系管理员'));
|
}
|
|
compState.loading = false;
|
});
|
} else {
|
createMessage.error(t('导出数据不能超过三万条,如需要更多的请联系管理员'));
|
}
|
}
|
|
|
</script>
|