381 lines
16 KiB
Vue
Raw Normal View History

2025-03-10 13:48:17 +08:00
<!--
功能功能描述 出入库报表
作者陶庆峰
-->
<template>
<div class="vue-element-page-wrap" ref="tableContainer">
<el-row class="page-search" justify="space-between" align="bottom">
<el-form ref="queryFormRef" :model="queryParams" label-width="60px" label-position="left">
<el-row :gutter="24" class="form-row">
<el-col :span="4">
<el-form-item label="作业类型" prop="UNDOID">
<el-select multiple filterable v-model="queryParams.RECEIVEREQUESTNAMETYPE" placeholder="选择单据类型"
style="width: 240px" default-first-option>
<el-option v-for="item in state.ReceiveList" :key="item.VALUE" :label="item.LABEL"
:value="item.VALUE" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item label="物料号" prop="MATERIALSPECNAME">
<el-Input v-model="queryParams.MATERIALSPECNAME" clearable />
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item label="库位状态" prop="STOCKSTATE">
<el-Input v-model="queryParams.STOCKSTATE" clearable />
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item label="仓库编码" prop="ERPLOCATION" label-width="65px">
<el-Input v-model="queryParams.ERPLOCATION" clearable />
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item label="到货单号" prop="RECEIVEREQUESTNAME">
<el-Input v-model="queryParams.RECEIVEREQUESTNAME" clearable />
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item label="出库单号" prop="SHIPREQUESTNAME">
<el-Input v-model="queryParams.SHIPREQUESTNAME" clearable />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="24" class="form-row">
<el-col :span="4">
<el-form-item label="批次" prop="CHARGE">
<el-Input v-model="queryParams.CHARGE" clearable />
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item label="开始时间" prop="FROMDATE">
<el-date-picker v-model="queryParams.FROMDATE" value-format="YYYY/MM/DD HH:mm:ss" type="datetime"
placeholder="Pick a day" />
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item label="结束时间" prop="TODATE">
<el-date-picker v-model="queryParams.TODATE" value-format="YYYY/MM/DD HH:mm:ss" type="datetime"
placeholder="Pick a day" />
</el-form-item>
</el-col>
</el-row>
</el-form>
<div class="page-search-btns">
<el-button type="primary" @click="handleQueryInfo">搜索</el-button>
<el-button type="primary" @click="exportExcel">导出</el-button>
<el-button @click="resetQuery">重置</el-button>
</div>
</el-row>
<div class="vue-element-page-table">
<div class="page-table-operate">
<div class="page-table-title">
<div class="page-table-title-left">
<span>标签信息</span>
</div>
</div>
<div class="page-table-operateBtns">
<el-popover :persistent="false" placement="right" popper-class="config-table-wrap" trigger="click">
<template #reference>
<el-button class="operateBtns-setting">
<svg-icon icon-class="table_title" width="16px" height="16px" />
</el-button>
</template>
<ConfigTable :list="materialTableConfig.column" @updateList="updateList" />
</el-popover>
</div>
</div>
<el-table border v-loading="loading" :data="list" highlight-current-row row-key="id" show-summary style="width: 100%" :height="tableHeight">
<el-table-column
type="index"
width="50"
label="序号"
>
</el-table-column>
<template v-for="(col, index) in materialTableConfig.column" :key="index">
<el-table-column v-if="!col.hide" :label="col.header" :width="col.width" show-overflow-tooltip>
<template #default="scope">
<span>{{ scope.row[col.field] }}</span>
</template>
</el-table-column>
</template>
</el-table>
<pagination v-if="page.total" :total="page.total" v-model:pageNumTo="page.pageNum"
v-model:pageSizeTo="page.pageSize" @pagination="handleQuery" />
<div>
<el-row :gutter="24">
<el-col :span="5">
<el-form-item label="标签数量" >
<el-Input v-model="state.AllNumber" placeholder="标签数量总和" clearable />
</el-form-item>
</el-col>
<el-col :span="5">
<el-form-item label="物料总和" >
<el-Input v-model="state.UnitNumber" placeholder="标签数量总和" autosize clearable />
</el-form-item>
</el-col>
</el-row>
</div>
</div>
</div>
</template>
<script lang="ts">
export default {
name: "StockTransaction"
};
</script>
<script lang="ts" setup>
import { reactive, ref, onMounted, toRefs, getCurrentInstance } from "vue";
import { ElForm, ElMessageBox, ElTable } from 'element-plus';
import { getQueryPageList, getQueryList } from '@/api/common';
import exportDataToExcel from '@/utils/export-excel';
import { bTableHeight } from "../../../../composables/calcTableHeight";
const { tableContainer, tableHeight, updateTableHeight, handleResize } = bTableHeight(155);
const { proxy }: any = getCurrentInstance();
const queryFormRef = ref(ElForm);
const materialTableConfig = ref({
loading: false,
column: [] as any,
data: [],
})
const state = reactive({
ERPFACTORY: '',
AllNumber: 0,//标签总数量
UnitNumber: 0,//各单位数量
radio1: '出库',
CHARGE: '',
ReceiveList: [{ value: '', label: '' }, { value: '45', label: 'DH 到货单入库' }, { value: 'SC46', label: 'AC 生产入库' }, { value: 'ZK4A', label: 'SA 转库入库' },
{ value: '4C', label: 'DN 销售出库' }, { value: '4E', label: '4E 其他出库' }, { value: '4Y', label: 'TF 调拨出库' }
] as any,
queryParams: {
MATERIALSPECNAME: '',
RECEIVEREQUESTNAMETYPE: '',
UNDOID: '',
STOCKSTATE: '',
ERPLOCATION: '',
FROMDATE: '',
TODATE: '',
CHARGE: '',
SITENAME: '',
ERPFACTORY: '',
SHIPREQUESTNAME: '',
RECEIVEREQUESTNAME: '',
REQUESTNAME: '',
},
page: {
pageNum: 1,
pageSize: 10,
total: 0
},
loading: false,
list: [],
column: [] as any,
});
const { ERPFACTORY,loading, list, column, queryParams, page } = toRefs(state)
onMounted(() => {
materialTableConfig.value.column = [
{ header: "标签编号", field: "MATERIALPACKINGNAME", hide: false, width: '320px' },
{ header: "批次", field: "CHARGE", hide: false, width: '200px' },
{ header: "组织", field: "ERPFACTORYDESC", hide: false, width: '250px' },
{ header: "仓库", field: "LOCATIONDESC", hide: false, width: '200px' },
{ header: "物料", field: "MATERIALSPECNAME", hide: false , width: '100px'},
{ header: "数量", field: "MATERIALQUANTITY", hide: false, width: '100px' },
{ header: "物料凭证", field: "UNDOID", hide: false, width: '120px' },
{ header: "凭证日期", field: "UNDODATE", hide: false, width: '100px' },
{ header: "制造日期", field: "MAKEDATE", hide: false, width: '150px' },
{ header: "制造日期", field: "MAKEDATE", hide: false, width: '150px' },
// { header: "标签类型", field: "MATERIALPACKINGTYPE", hide: false },
{ header: "品质等级", field: "PACKINGGRADE", hide: false, width: '100px' },
{ header: "到货单号", field: "RECEIVEREQUESTNAME", hide: false, width: '100px' },
{ header: "出库单号", field: "SHIPREQUESTNAME", hide: false, width: '100px' },
// { header: "入库单", field: "RECEIVEACTNO", hide: false, width: '100px' },
{ header: "最后操作时间", field: "LASTEVENTTIME", hide: false , width: '150px' },
{ header: "最后操作人员", field: "LASTEVENTUSER", hide: false, width: '120px' },
{ header: "供应商名称", field: "SUPPLIERNAME", hide: false , width: '120px'},
{ header: "客户", field: "CUSTOMERNAME", hide: false, width: '120px' },
// { header: "关联客户", field: "", hide: false },
{ header: "最后操作名称", field: "DESCRIPTION", hide: false, width: '120px' },
// { header: "SDK规格", field: "SPECNAME", hide: false },
{ header: "操作备注", field: "OPTREMARK", hide: false },
]
getPRINTLIST()
handleQuery()
updateTableHeight();
window.addEventListener('resize', handleResize);
let orgNo: any = localStorage.getItem('orgNo');
// state.orgNo = JSON.parse(pwd).orgNo;
state.ERPFACTORY = JSON.parse(orgNo);
console.log(11111111111,state.ERPFACTORY)
});
const updateList = (col: any) => {
materialTableConfig.value.column = col
}
function getPRINTLIST() {
getQueryList({
queryId: "getInvoiceLIST",
version: "00001",
params: {
},
}).then((res: any) => {
state.ReceiveList = res.data
})
}
function handleQueryInfo() {
state.page.pageNum = 1
handleQuery()
}
function handleQuery() {
Object.keys(state.queryParams).forEach((key) => {
if (state.queryParams[key] && state.queryParams[key].length === 0) {
state.queryParams[key] = ''
}
});
state.list = [];
state.page.total = 0;
let loactionString = ''
for (let i = 0; i < state.queryParams.RECEIVEREQUESTNAMETYPE.length; i++) {
loactionString = loactionString + state.queryParams.RECEIVEREQUESTNAMETYPE[i] + ','
}
state.loading = true
queryFormRef.value.validate((isValid: boolean) => {
if (isValid) {
getQueryPageList({
queryId: "GetMaterialBoxInformationRow",
version: "WEB0004",
params: {
userId: localStorage.getItem('userId'),
// ...state.queryParams
MATERIALSPECNAME: state.queryParams.MATERIALSPECNAME ? state.queryParams.MATERIALSPECNAME.split(',') : '',
UNDOID: state.queryParams.UNDOID,
STOCKSTATE: state.queryParams.STOCKSTATE,
ERPLOCATION: state.queryParams.ERPLOCATION,
FROMDATE: state.queryParams.FROMDATE,
TODATE: state.queryParams.TODATE,
SITENAME: '',
ERPFACTORY: state.ERPFACTORY,
CHARGE: state.queryParams.CHARGE,
RECEIVEREQUESTNAMETYPE: loactionString,
// CHARGE: state.CHARGE,
RECEIVEREQUESTNAME: state.queryParams.RECEIVEREQUESTNAME,
SHIPREQUESTNAME: state.queryParams.SHIPREQUESTNAME,
},
pageNum: state.page.pageNum,
pageSize: state.page.pageSize,
}).then((res: any) => {
if(res.data.list.length == 0){
ElMessageBox.alert('查无数据', '提醒框', {
confirmButtonText: 'OK',
})
state.loading = false
} else {
state.list = res.data.list;
state.page.total = res.data.total;
state.AllNumber = 0
state.UnitNumber = 0
getQueryList({
queryId: "GetMaterialBoxInformationRow",
version: "WEB00041",
params: {
userId: localStorage.getItem('userId'),
// ...state.queryParams
MATERIALSPECNAME: state.queryParams.MATERIALSPECNAME ? state.queryParams.MATERIALSPECNAME.split(',') : '',
UNDOID: state.queryParams.UNDOID,
STOCKSTATE: state.queryParams.STOCKSTATE,
ERPLOCATION: state.queryParams.ERPLOCATION,
FROMDATE: state.queryParams.FROMDATE,
TODATE: state.queryParams.TODATE,
SITENAME: '',
ERPFACTORY: '',
CHARGE: state.queryParams.CHARGE,
RECEIVEREQUESTNAMETYPE: loactionString,
// CHARGE: state.CHARGE,
RECEIVEREQUESTNAME: state.queryParams.RECEIVEREQUESTNAME,
SHIPREQUESTNAME: state.queryParams.SHIPREQUESTNAME,
},
})
.then((res: any) => {
for (let i = 0; i < res.data.length; i++) {
let number = res.data[i].PACKINGNUMBER == null ? 0 : res.data[i].PACKINGNUMBER
let Qty = res.data[i].UNITNUMBER == null ? 0 : res.data[i].UNITNUMBER
state.AllNumber = state.AllNumber + parseFloat(number)
state.UnitNumber = state.UnitNumber + Qty
}
})
state.loading = false
}
});
}
});
}
function exportExcel() {
Object.keys(state.queryParams).forEach((key) => {
if (state.queryParams[key] && state.queryParams[key].length === 0) {
state.queryParams[key] = ''
}
});
let loactionString = ''
for (let i = 0; i < state.queryParams.RECEIVEREQUESTNAMETYPE.length; i++) {
loactionString = loactionString + state.queryParams.RECEIVEREQUESTNAMETYPE[i] + ','
}
state.loading = true
getQueryList({
queryId: "GetMaterialBoxInformationRow",
version: "00022",
params: {
userId: localStorage.getItem('userId'),
// ...state.queryParams
MATERIALSPECNAME: state.queryParams.MATERIALSPECNAME ? state.queryParams.MATERIALSPECNAME.split(',') : '',
UNDOID: state.queryParams.UNDOID,
STOCKSTATE: state.queryParams.STOCKSTATE,
ERPLOCATION: state.queryParams.ERPLOCATION,
FROMDATE: state.queryParams.FROMDATE,
TODATE: state.queryParams.TODATE,
SITENAME: '',
ERPFACTORY: '',
CHARGE: state.queryParams.CHARGE,
RECEIVEREQUESTNAMETYPE: loactionString,
// CHARGE: state.CHARGE,
RECEIVEREQUESTNAME: state.queryParams.RECEIVEREQUESTNAME,
SHIPREQUESTNAME: state.queryParams.SHIPREQUESTNAME
}
}).then((res: any) => {
if (res.data.length > 0) {
state.loading = false
exportDataToExcel(res.data, '库存查询')
} else {
state.loading = false
proxy.$ElMessage.warning('当前查询没有数据可以导出');
}
});
}
function resetQuery() {
queryFormRef.value.resetFields();
handleQuery();
}
</script>
<style scoped lang="scss">
.form-row {
padding-right: 100px;
margin-bottom: 7px;
}
.form-row2 {
padding-right: 30px;
margin-bottom: 30px;
}
</style>