<template>
|
<BasicModal width="1400px" :height=600 v-bind="$attrs" @register="register" :title="t('汇总盘点明细列表')" @ok="handleSubmit">
|
<!-- <div class="pt-3px pr-3px">
|
<BasicForm @register="registerForm" :model="model" />
|
</div> -->
|
<div>
|
<!-- <a-button type="primary" class="mr-4" @click="handleSelect"> {{ t('搜索') }} </a-button> -->
|
<BasicTable @register="registerTable"
|
ref="tableRef"
|
:canResize="canResize"
|
:loading="loading"
|
:striped="striped"
|
:bordered="border"
|
showTableSetting>
|
<template #toolbar>
|
<a-button ghost color="success" preIcon="OutR|svg" @click="aoaToExcel"> 导出 </a-button>
|
</template>
|
</BasicTable>
|
|
</div>
|
</BasicModal>
|
</template>
|
<script lang="ts">
|
import { aoaToSheetXlsx } from '/@/components/Excel';
|
import { defineComponent, ref, unref } from 'vue';
|
import { BasicModal, useModalInner } from '/@/components/Modal';
|
import { BasicForm, FormSchema, useForm } from '/@/components/Form/index';
|
//import { getTreeList } from '/@/api/tigerapi/dept';
|
import { BasicTable, TableAction, TableActionType, useTable } from '/@/components/Table';
|
import { SumColumns } from './inventory.data';
|
import { getSumListByPage, getSumListByPageOut, optionsListApiSumResult } from '/@/api/tigerapi/wms/inventory';
|
import { iWMS_COUNT_MDTL } from '/@/api/tigerapi/model/warehoueseModel';
|
import { useI18n } from '/@/hooks/web/useI18n';
|
import { useLocale } from '/@/locales/useLocale';
|
import { useMessage } from '/@/hooks/web/useMessage';
|
|
const { createMessage } = useMessage();
|
const { getLocale } = useLocale();
|
const { t } = useI18n('WMS.Count');
|
const schemas: FormSchema[] = [
|
{
|
field: 'ITEM_CODE',
|
component: 'Input',
|
label: t('物料编码'),
|
colProps: {
|
span: 12,
|
},
|
},
|
{
|
field: 'COUNT_NO',
|
component: 'Input',
|
label: t('单据编码'),
|
colProps: {
|
span: 12,
|
},
|
show: false,
|
},
|
{
|
field: 'RESULT',
|
label: t('结果'),
|
component: 'ApiSelect',
|
colProps: { span: 8 },
|
componentProps: {
|
api: optionsListApiSumResult,
|
resultField: 'Data',
|
labelField: unref(getLocale) == 'zh_CN' ? 'Desc' : 'Name',
|
valueField: 'Value',
|
// onChange: (e, v) => {
|
// alert(e)
|
// console.log('ApiSelect====>:', e, v);
|
// },
|
},
|
}
|
];
|
export default defineComponent({
|
components: { BasicModal, BasicForm, BasicTable, TableAction },
|
props: {
|
userData: { type: Object },
|
},
|
emit: ['success', 'register'],
|
setup(_, { emit }) {
|
const modelRef = ref({});
|
const tableRef = ref<Nullable<TableActionType>>(null);
|
const canResize = ref(false);
|
const loading = ref(true);
|
const striped = ref(true);
|
const border = ref(true);
|
//const pagination = ref<any>(false);
|
// const [
|
// registerForm,
|
// {
|
// setFieldsValue,
|
// validateFields
|
// // setProps
|
// //updateSchema,
|
// //validate
|
// },
|
// ] = useForm({
|
// labelWidth: 120,
|
// schemas,
|
// showActionButtonGroup: false,
|
// actionColOptions: {
|
// span: 24,
|
// },
|
// });
|
const checkedKeys = ref<Array<string | number>>([]);
|
let COUNT_NO = ref('');
|
const [registerTable, { reload, getForm }] = useTable({
|
title: t('物料列表'),
|
api: getSumListByPage,
|
columns: SumColumns,
|
formConfig: {
|
labelWidth: 120,
|
schemas: schemas,
|
},
|
useSearchForm: true,
|
showTableSetting: true,
|
bordered: true,
|
//canResize: true,
|
showIndexColumn: false,
|
rowKey: 'ITEM_CODE',
|
searchInfo: { COUNT_NO },
|
rowSelection: {
|
selectedRowKeys: checkedKeys,
|
|
type: 'checkbox',
|
// getCheckboxProps(record: Recordable) {
|
// // Demo: 第一行(id为0)的选择框禁用
|
// if (record.id === '0') {
|
// return { disabled: true };
|
// } else {
|
// return { disabled: false };
|
// }
|
// },
|
onSelect: onSelect,
|
onSelectAll: onSelectAll,
|
},
|
//bordered: true,
|
});
|
const [register, { setModalProps, closeModal }] = useModalInner((data) => {
|
setModalProps({ confirmLoading: false });
|
data && onDataReceive(data);
|
});
|
var Sum_Data = ref([] as iWMS_COUNT_MDTL[])
|
async function onDataReceive(data) {
|
//pagination.value = { pageSize: 50 };
|
console.log('Data Received', data);
|
COUNT_NO.value = data.data.COUNT_NO;
|
//方式1;
|
// setFieldsValue({
|
// COUNT_NO: data.data.COUNT_NO,
|
// });
|
//Sum_Data.value = await getSumListByPage(data.data.COUNT_NO)
|
// if (Sum_Data.value != null) {
|
// loading.value = false
|
// }
|
// // 方式2
|
//modelRef.value = { field2: data.data, field1: data.info };
|
// const treeData = await getTreeList();
|
// updateSchema([
|
// {
|
// field: 'USER_PWD',
|
// show: !unref(false),
|
// },
|
// {
|
// field: 'ORG_CODE',
|
// componentProps: { treeData },
|
// },
|
// ]);
|
// setProps({
|
// model:{ field2: data.data, field1: data.info }
|
// })
|
}
|
|
// function handleVisibleChange(v) {
|
// v && props.userData && nextTick(() => onDataReceive(props.userData));
|
// }
|
|
async function handleSubmit() {
|
try {
|
|
// var values = '';
|
// values=checkedKeys.value.join(',')
|
closeModal();
|
emit('success', {
|
isUpdate: unref(false),
|
//values: { values, id: 0 },
|
});
|
|
} finally {
|
setModalProps({ confirmLoading: false });
|
}
|
}
|
function onSelect(record, selected) {
|
if (selected) {
|
checkedKeys.value = [...checkedKeys.value, record.ITEM_CODE];
|
} else {
|
checkedKeys.value = checkedKeys.value.filter((ITEM_CODE) => ITEM_CODE !== record.ITEM_CODE);
|
}
|
}
|
function onSelectAll(selected, selectedRows, changeRows) {
|
const changeIds = changeRows.map((item) => item.ITEM_CODE);
|
if (selected) {
|
checkedKeys.value = [...checkedKeys.value, ...changeIds];
|
} else {
|
checkedKeys.value = checkedKeys.value.filter((ITEM_CODE) => {
|
return !changeIds.includes(ITEM_CODE);
|
});
|
}
|
}
|
|
async function handleSelect() {
|
//var data = await validateFields();
|
//Sum_Data.value = (await getSumListByPage(data)).items
|
}
|
let arr: any[] = [];
|
|
function aoaToExcel() {
|
//const totals = getPaginationRef().total
|
//if (totals < 30000) {
|
arr = []
|
var col = getForm().getFieldsValue();
|
col.COUNT_NO = COUNT_NO.value;
|
getSumListByPageOut(col).then((res) => {
|
res.forEach(element => {
|
|
let result = ''
|
switch (element.RESULT) {
|
case 0:
|
result = '无结果';
|
break;
|
case 1:
|
result = '平帐';
|
break;
|
case 2:
|
result = '盘盈';
|
break;
|
case 3:
|
result = '盘亏';
|
break;
|
default:
|
break;
|
}
|
arr.push({
|
'物料编码': element.ITEM_CODE,
|
'物料名称': element.ITEM_NAME,
|
'操作时间': element.UPDATE_TIME,
|
'结果': result,
|
'ERP仓库': element.ERP_WH,
|
'库存数量': element.QTY,
|
'盘点数量': element.ACT_QTY,
|
'差异数量': element.NOT_QTY,
|
'ERP数量': element.ERP_QTY,
|
'条码库存数量': element.SN_QTY,
|
'条码盘点数量': element.ACT_SN_QTY,
|
'ERP与库存差异数量': element.ERP_NOT_QTY,
|
});
|
});
|
//dataDtl()
|
const arrHeader = SumColumns.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('导出数据不能超过三万条,如需要更多的请联系管理员'));
|
//}
|
})
|
|
|
//}
|
//else {
|
//createMessage.error(t('导出数据不能超过三万条,如需要更多的请联系管理员'));
|
//}
|
|
}
|
return {
|
register,
|
schemas,
|
//registerForm,
|
model: modelRef,
|
handleSubmit,
|
registerTable,
|
onSelect,
|
onSelectAll,
|
//setFieldsValue,
|
handleSelect,
|
//validateFields,
|
Sum_Data,
|
tableRef,
|
//pagination,
|
canResize,
|
loading,
|
striped,
|
border,
|
t,
|
aoaToExcel
|
};
|
},
|
});
|
</script>
|