fix(MES对账SAP报表):新增

This commit is contained in:
liaohechuan 2025-03-29 13:45:33 +08:00
parent b119d7d56a
commit 7758aadecd
4 changed files with 474 additions and 1 deletions

View File

@ -0,0 +1,38 @@
import request from '@/router/axios'
import {iep} from '@/api/prefix'
// 工单分页查询
export function fetchShopOrderPage(query) {
return request({
url: iep('/shop-order/newPage'),
method: 'get',
params: query
})
}
// 检索主列表数据
export function readMesCompareSapReportCcList(query) {
return request({
url: iep('/zlotmaterialcompletetransaction/readMesCompareSapReportCcList'),
method: 'get',
params: query
})
}
// 检索产出明细列表数据
export function readMesCompareSapReportCcDetailList(query) {
return request({
url: iep('/zlotmaterialcompletetransaction/readMesCompareSapReportCcDetailList'),
method: 'get',
params: query
})
}
// 检索消耗明细列表数据
export function readMesCompareSapReportXhDetailList(query) {
return request({
url: iep('/zlotmaterialconsumptiontransaction/readMesCompareSapReportXhDetailList'),
method: 'get',
params: query
})
}

View File

@ -0,0 +1,425 @@
<template>
<!-- MES对账SAP报表 -->
<div class="execution">
<!-- 工单 开窗 -->
<input-select-dialog
:modal-obj.sync="shopOrderDialogObj"
:modal-show.sync="shopOrderDialogVisible"
:modal-fetch-fun="shopOrderListFun"
@inputDialogSelected="doOpenShopOrderSelected"
></input-select-dialog>
<!-- 二级弹出框 -->
<el-dialog
title="详细信息"
:visible.sync="twoFormObj.twoDialogVisible"
width="90%">
<!-- 按钮 -->
<c-top-bar :offset="50">
<el-button type="text" icon="el-icon-document" disabled>工单:{{twoFormObj.shopOrder}}</el-button>
<el-divider direction="vertical"></el-divider>
<el-button type="text" icon="el-icon-document" disabled>物料:{{twoFormObj.item}}</el-button>
<el-divider direction="vertical"></el-divider>
</c-top-bar>
<c-top-bar :offset="50">
<el-button type="text" icon="el-icon-search" @click="doTwoRetrieve">检索</el-button>
<el-divider direction="vertical"></el-divider>
<el-button type="text" icon="el-icon-circle-close" @click="doTwoClear">清除</el-button>
<el-divider direction="vertical"></el-divider>
<el-button type="text" icon="el-icon-export" @click="doTwoExport">导出</el-button>
<el-divider style="margin-top: 0px;"></el-divider>
</c-top-bar>
<!-- 表单 -->
<el-form ref="twoFormObj" :model="twoFormObj" label-width="80px">
<el-row :gutter="24">
<el-col :span="8">
<el-form-item label="数据匹配" prop="normal">
<el-select v-model="twoFormObj.normal" clearable>
<el-option v-for="item in normalOptions" :key="item.value" :label="item.label" :value="item.value">
</el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="24">
<el-col :span="24">
<el-table size="mini" :data="twoFormObj.twoTableList" border style="width: 100%" height="550px"
highlight-current-row>
<el-table-column type="index" label="序号">
<template slot-scope="scope">
<div>
{{ scope.$index + 1 }}
</div>
</template>
</el-table-column>
<el-table-column align="center" prop="sid" label="mesSID"></el-table-column>
<el-table-column align="center" prop="materialLot" label="mes卷号"></el-table-column>
<el-table-column align="center" prop="warehouseCode" label="mes存储地点"></el-table-column>
<el-table-column align="center" prop="sapBatchNo" label="mes批次"></el-table-column>
<el-table-column align="center" prop="productType" label="mes移动类型"></el-table-column>
<el-table-column align="center" prop="mainQty" label="mes数量"></el-table-column>
<el-table-column align="center" prop="mainUom" label="mes单位"></el-table-column>
<el-table-column align="center" prop="syncVoucherNo" label="mes物料凭证"></el-table-column>
<el-table-column align="center" prop="syncStatus" label="mes同步结果"></el-table-column>
<el-table-column align="center" prop="zsid" label="sapSID"></el-table-column>
<el-table-column align="center" prop="sapWarehouseCode" label="sap存储地点"></el-table-column>
<el-table-column align="center" prop="sSapBatchNo" label="sap批次"></el-table-column>
<el-table-column align="center" prop="sapProductType" label="sap移动类型"></el-table-column>
<el-table-column align="center" prop="sapMainQty" label="sap数量"></el-table-column>
<el-table-column align="center" prop="sapMainUom" label="sap单位"></el-table-column>
<el-table-column align="center" prop="sapSyncVoucherNo" label="sap物料凭证"></el-table-column>
</el-table>
</el-col>
</el-row>
</el-form>
</el-dialog>
<basic-container>
<!-- 搜尋框 -->
<el-form ref="searchForm" :model="searchForm" label-width="120px" label-suffix=":" :inline="true">
<el-row>
<el-col :span="6">
<el-form-item label="工单" prop="shopOrder" :rules="[{ required: true, message: '工单不能为空', trigger: 'change'}]">
<el-input v-model="searchForm.shopOrder" clearable>
<i
slot="suffix"
class="el-input__icon el-icon-copy-document"
@click.stop="showShopOrderDialog"
></i>
</el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-button type="primary" icon="el-icon-search" size="small" @click="search">检索</el-button>
<el-button type="primary" icon="el-icon-document" size="small" @click="doExport">导出</el-button>
<el-button icon="el-icon-delete" size="small" @click="searchReset">清空</el-button>
</el-col>
</el-row>
</el-form>
<el-tabs v-model="tabActiveNameCc">
<el-tab-pane label="产出" name="mesCompareSapReportCcTab">
<el-table ref="mesCompareSapReportCcData" :data="mesCompareSapReportCcData" tooltip-effect="dark" border style="width: 100%;"
:row-key="'handle'"
@row-click="handleMainRowClick"
:highlight-current-row="true"
stripe>
<el-table-column prop="shopOrder" label="mes工单" header-align="center">
<template slot-scope="scope">
<div>
{{ scope.row.shopOrder }}
</div>
</template>
</el-table-column>
<el-table-column prop="item" label="mes物料" header-align="center">
<template slot-scope="scope">
<div>
{{ scope.row.item }}
</div>
</template>
</el-table-column>
<el-table-column prop="mainUom" label="mes单位" header-align="center">
<template slot-scope="scope">
<div>
{{ scope.row.mainUom }}
</div>
</template>
</el-table-column>
<el-table-column prop="mainQty" label="mes数量" header-align="center">
<template slot-scope="scope">
<div>
{{ scope.row.mainQty }}
</div>
</template>
</el-table-column>
<el-table-column prop="sapShopOrder" label="sap工单" header-align="center">
<template slot-scope="scope">
<div>
{{ scope.row.sapShopOrder }}
</div>
</template>
</el-table-column>
<el-table-column prop="sapItem" label="sap物料" header-align="center">
<template slot-scope="scope">
<div>
{{ scope.row.sapItem }}
</div>
</template>
</el-table-column>
<el-table-column prop="sapMainUom" label="sap单位" header-align="center">
<template slot-scope="scope">
<div>
{{ scope.row.sapMainUom }}
</div>
</template>
</el-table-column>
<el-table-column prop="sapMainQty" label="sap数量" header-align="center">
<template slot-scope="scope">
<div>
{{ scope.row.sapMainQty }}
</div>
</template>
</el-table-column>
</el-table>
</el-tab-pane>
</el-tabs>
<el-tabs v-model="tabActiveNameXh">
<el-tab-pane label="消耗" name="mesCompareSapReportXhTab">
<el-table ref="mesCompareSapReportXhData" :data="mesCompareSapReportXhData" tooltip-effect="dark" border style="width: 100%;"
:row-key="'handle'"
@row-click="handleMainRowClick"
:highlight-current-row="true"
stripe>
<el-table-column prop="shopOrder" label="mes工单" header-align="center">
<template slot-scope="scope">
<div>
{{ scope.row.shopOrder }}
</div>
</template>
</el-table-column>
<el-table-column prop="item" label="mes物料" header-align="center">
<template slot-scope="scope">
<div>
{{ scope.row.item }}
</div>
</template>
</el-table-column>
<el-table-column prop="mainUom" label="mes单位" header-align="center">
<template slot-scope="scope">
<div>
{{ scope.row.mainUom }}
</div>
</template>
</el-table-column>
<el-table-column prop="mainQty" label="mes数量" header-align="center">
<template slot-scope="scope">
<div>
{{ scope.row.mainQty }}
</div>
</template>
</el-table-column>
<el-table-column prop="sapShopOrder" label="sap工单" header-align="center">
<template slot-scope="scope">
<div>
{{ scope.row.sapShopOrder }}
</div>
</template>
</el-table-column>
<el-table-column prop="sapItem" label="sap物料" header-align="center">
<template slot-scope="scope">
<div>
{{ scope.row.sapItem }}
</div>
</template>
</el-table-column>
<el-table-column prop="sapMainUom" label="sap单位" header-align="center">
<template slot-scope="scope">
<div>
{{ scope.row.sapMainUom }}
</div>
</template>
</el-table-column>
<el-table-column prop="sapMainQty" label="sap数量" header-align="center">
<template slot-scope="scope">
<div>
{{ scope.row.sapMainQty }}
</div>
</template>
</el-table-column>
</el-table>
</el-tab-pane>
</el-tabs>
</basic-container>
</div>
</template>
<script>
import {mapGetters} from 'vuex';
import {getStore} from '@/util/store';
import {
fetchShopOrderPage,
readMesCompareSapReportCcList,
readMesCompareSapReportCcDetailList,
readMesCompareSapReportXhDetailList
} from "@/api/mes/wip-nalinv/mesCompareSapReport";
import {hideLoading, showLoading} from "@/const/loading";
import {shopOrderDialogObj} from "@/views/mes/wip-nalinv/mesCompareSapReport/init";
export default {
name: 'mes-compare-sap-report',
data() {
return {
tabActiveNameCc: "mesCompareSapReportCcTab",
tabActiveNameXh: "mesCompareSapReportXhTab",
searchForm: {},
mesCompareSapReportCcData: [],
mesCompareSapReportXhData: [],
site: getStore({name: 'tenantId'}),
shopOrderDialogObj: {...shopOrderDialogObj}, // 工单
shopOrderListFun: fetchShopOrderPage,
shopOrderDialogVisible: false,
twoFormObj: {
shopOrder: '',
site: '',
item: '',
normal: '',
twoTableList: [],
twoDialogVisible: false,
},
normalOptions: [
{
label: '匹配',
value: 'Y'
},
{
label: '不匹配',
value: 'N'
}
],// 数据一致性下拉列表
flag: ''
}
},
created() {
this.searchForm = Object.assign({}, this.searchForm);
},
computed: {
//读取权限
...mapGetters(['permissions', 'userInfo']),
permissionList() {
return {
addBtn: false,
delBtn: false,
editBtn: false,
}
},
},
methods: {
// 主界面-单击事件
handleMainRowClick(row) {
this.twoFormObj.site = this.site;
this.twoFormObj.twoTableList = [];
this.twoFormObj.twoDialogVisible = true;
this.flag = row.flag;
let shopOrder = row.shopOrder;
let item = row.item;
if (!shopOrder || !item) {
shopOrder = row.sapShopOrder;
item = row.sapItem;
}
this.twoFormObj.shopOrder = shopOrder;
this.twoFormObj.item = item;
if (row.flag === 'CC') {
this.searchCcDetail(shopOrder, item);
} else if (row.flag === 'XH') {
this.searchXhDetail(shopOrder, item);
}
},
// 打开工单弹出框
showShopOrderDialog() {
this.shopOrderDialogVisible = true;
},
// 工单弹出框选择
doOpenShopOrderSelected(row) {
this.searchForm.shopOrder = row.shopOrder
this.searchForm = Object.assign({}, this.searchForm)
},
// 检索两个列表数据
search() {
if (!this.searchForm.shopOrder) {
return this.$message.error("请先输入工单!");
}
showLoading();
readMesCompareSapReportCcList({
site: this.site,
shopOrder: this.searchForm.shopOrder,
}).then((response) => {
hideLoading();
if (response.data.code !== 0) {
this.$message.error(response.data.message);
} else {
this.mesCompareSapReportCcData = response.data.data.ccList;
this.mesCompareSapReportXhData = response.data.data.xhList;
}
}).catch(() => {
hideLoading();
});
},
// 明细检索
doTwoRetrieve() {
if (this.flag === 'CC') {
this.searchCcDetail(this.twoFormObj.shopOrder, this.twoFormObj.item);
} else if (this.flag === 'XH') {
this.searchXhDetail(this.twoFormObj.shopOrder, this.twoFormObj.item);
}
},
// 明细清除
doTwoClear() {
this.twoFormObj.normal = '';
this.twoFormObj.twoTableList = [];
},
// 明细导出
doTwoExport() {
},
// 检索产出明细列表数据
searchCcDetail(shopOrder, item) {
showLoading();
readMesCompareSapReportCcDetailList({
site: this.site,
shopOrder: shopOrder,
item: item,
normal: this.twoFormObj.normal
}).then((response) => {
hideLoading();
if (response.data.code !== 0) {
this.$message.error(response.data.message);
} else {
this.twoFormObj.twoTableList = response.data.data;
}
}).catch(() => {
hideLoading();
});
},
// 检索消耗明细列表数据
searchXhDetail(shopOrder, item) {
showLoading();
readMesCompareSapReportXhDetailList({
site: this.site,
shopOrder: shopOrder,
item: item,
normal: this.twoFormObj.normal
}).then((response) => {
hideLoading();
if (response.data.code !== 0) {
this.$message.error(response.data.message);
} else {
this.twoFormObj.twoTableList = response.data.data;
}
}).catch(() => {
hideLoading();
});
},
// 导出
doExport() {},
// 清空事件
searchReset() {
this.searchForm = {};
this.mesCompareSapReportCcData = [];
this.mesCompareSapReportXhData = [];
},
},
}
</script>
<style lang="scss" scoped>
// 解决input框中添加disabled不可编辑属性后,改变字体颜色样式(主要解决:默认字体颜色为灰色)
::v-deep .el-input.is-disabled .el-input__inner {
color: black;
}
/* 禁用 el-input 时禁用图标和清除按钮 */
.el-input.is-disabled .el-input__icon,
.el-input.is-disabled .el-input__clear {
pointer-events: none;
}
</style>

View File

@ -0,0 +1,10 @@
export const shopOrderDialogObj = {
title: '工单',
callBackKey: "shopOrder",
regex: " ",
condition: "searchText",
tableColumn: [
{prop: "shopOrder", label: "工单"}
],
queryParam: {}
}

View File

@ -191,7 +191,7 @@ import {hideLoading, showLoading} from "@/const/loading";
import {lgortDialogObj, matnrDialogObj} from "@/views/mes/wms-nalinv/mesReferSapInvReport/init";
export default {
name: 'operation-out',
name: 'mes-refer-sap-inv-report',
data() {
return {
tabActiveName: "inventoryQueryReportDetailTab",