You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

562 lines
18 KiB
Vue

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="88px">
<el-form-item label="仓库" prop="whCode">
<el-input
v-model="queryParams.whCode"
placeholder="请输入仓库"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="库区" prop="waCode">
<el-input
v-model="queryParams.waCode"
placeholder="请输入库区"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="库位编码" prop="wlCode">
<el-input
v-model="queryParams.wlCode"
placeholder="请输入库位编码"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="物料号" prop="materialCode">
<el-input
v-model="queryParams.materialCode"
placeholder="请输入物料号"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="物料描述" prop="materialDesc">
<el-input
v-model="queryParams.materialDesc"
placeholder="请输入物料描述"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="总数量" prop="amount">
<el-input
v-model="queryParams.amount"
placeholder="请输入总数量"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="冻结数量" prop="storageAmount">
<el-input
v-model="queryParams.storageAmount"
placeholder="请输入冻结数量"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="占用数量" prop="occupyAmount">
<el-input
v-model="queryParams.occupyAmount"
placeholder="请输入占用数量"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="单位" prop="userDefined1">
<el-input
v-model="queryParams.userDefined1"
placeholder="请输入单位"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="工厂号" prop="factoryCode">
<el-input
v-model="queryParams.factoryCode"
placeholder="请输入工厂号"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['wms:matenews:export']"
>导出</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="info"
plain
icon="el-icon-printer"
size="mini"
:disabled="single"
@click="openPrintDialog"
v-hasPermi="['mes:pro:workorder:edit']"
>打印标识卡
</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="matenewsList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="唯一序列" align="center" prop="storageId" v-if="false" />
<el-table-column label="仓库" align="center" prop="whCode" />
<el-table-column label="库区" align="center" prop="waCode" />
<el-table-column label="库位编码" align="center" prop="wlCode" />
<el-table-column label="物料号" align="center" prop="materialCode" width="250">
<template slot-scope="scope">
<span>{{ formatProductCode(scope.row.materialCode) }}</span>
</template>
</el-table-column>
<el-table-column label="物料描述" align="center" prop="materialDesc" width="250"/>
<el-table-column label="工厂号" align="center" prop="factoryCode" />
<el-table-column label="非限制使用的库存" align="center" prop="amount" />
<el-table-column label="冻结数量" align="center" prop="storageAmount" />
<!-- <el-table-column label="占用数量" align="center" prop="occupyAmount" />-->
<el-table-column label="总数量" align="center" prop="amount" />
<el-table-column label="单位" align="center" prop="userDefined1" />
<el-table-column label="SAP库位" align="center" prop="userDefined2" v-if="false" />
<el-table-column label="备用3" align="center" prop="userDefined3" v-if="false" />
<el-table-column label="备用4" align="center" prop="userDefined4" v-if="false" />
<el-table-column label="备用5" align="center" prop="userDefined5" v-if="false" />
<el-table-column label="备用6" align="center" prop="userDefined6" v-if="false" />
<el-table-column label="备用7" align="center" prop="userDefined7" v-if="false" />
<el-table-column label="备用8" align="center" prop="userDefined8" v-if="false" />
<el-table-column label="备用9" align="center" prop="userDefined9" v-if="false" />
<el-table-column label="SAP工厂号" align="center" prop="sapFactoryCode" v-if="false" />
</el-table>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<!-- 添加或修改包材库存主表对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="唯一序列" prop="storageId">
<el-input v-model="form.storageId" placeholder="请输入唯一序列" />
</el-form-item>
<el-form-item label="仓库编码" prop="whCode">
<el-input v-model="form.whCode" placeholder="请输入仓库编码" />
</el-form-item>
<el-form-item label="区域编号" prop="regionCode">
<el-input v-model="form.regionCode" placeholder="请输入区域编号" />
</el-form-item>
<el-form-item label="库区编码" prop="waCode">
<el-input v-model="form.waCode" placeholder="请输入库区编码" />
</el-form-item>
<el-form-item label="库位编码" prop="wlCode">
<el-input v-model="form.wlCode" placeholder="请输入库位编码" />
</el-form-item>
<el-form-item label="物料号" prop="materialCode">
<el-input v-model="form.materialCode" placeholder="请输入物料号" />
</el-form-item>
<el-form-item label="物料描述" prop="materialDesc">
<el-input v-model="form.materialDesc" placeholder="请输入物料描述" />
</el-form-item>
<el-form-item label="总数量" prop="amount">
<el-input v-model="form.amount" placeholder="请输入总数量" />
</el-form-item>
<el-form-item label="冻结数量" prop="storageAmount">
<el-input v-model="form.storageAmount" placeholder="请输入冻结数量" />
</el-form-item>
<el-form-item label="占用数量" prop="occupyAmount">
<el-input v-model="form.occupyAmount" placeholder="请输入占用数量" />
</el-form-item>
<el-form-item label="LPN" prop="lpn">
<el-input v-model="form.lpn" placeholder="请输入LPN" />
</el-form-item>
<el-form-item label="入库批次号" prop="productBatch">
<el-input v-model="form.productBatch" placeholder="请输入入库批次号" />
</el-form-item>
<el-form-item label="入库时间x" prop="receiveDate">
<el-date-picker clearable
v-model="form.receiveDate"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择入库时间x">
</el-date-picker>
</el-form-item>
<el-form-item label="生产时间" prop="productDate">
<el-date-picker clearable
v-model="form.productDate"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择生产时间">
</el-date-picker>
</el-form-item>
<el-form-item label="单位" prop="userDefined1">
<el-input v-model="form.userDefined1" placeholder="请输入单位" />
</el-form-item>
<el-form-item label="SAP库位" prop="userDefined2">
<el-input v-model="form.userDefined2" placeholder="请输入SAP库位" />
</el-form-item>
<el-form-item label="备用3" prop="userDefined3">
<el-input v-model="form.userDefined3" placeholder="请输入备用3" />
</el-form-item>
<el-form-item label="备用4" prop="userDefined4">
<el-input v-model="form.userDefined4" placeholder="请输入备用4" />
</el-form-item>
<el-form-item label="备用5" prop="userDefined5">
<el-input v-model="form.userDefined5" placeholder="请输入备用5" />
</el-form-item>
<el-form-item label="备用6" prop="userDefined6">
<el-input v-model="form.userDefined6" placeholder="请输入备用6" />
</el-form-item>
<el-form-item label="备用7" prop="userDefined7">
<el-input v-model="form.userDefined7" placeholder="请输入备用7" />
</el-form-item>
<el-form-item label="备用8" prop="userDefined8">
<el-input v-model="form.userDefined8" placeholder="请输入备用8" />
</el-form-item>
<el-form-item label="备用9" prop="userDefined9">
<el-input v-model="form.userDefined9" placeholder="请输入备用9" />
</el-form-item>
<el-form-item label="备用10" prop="userDefined10">
<el-input v-model="form.userDefined10" placeholder="请输入备用10" />
</el-form-item>
<el-form-item label="创建时间" prop="gmtCreate">
<el-date-picker clearable
v-model="form.gmtCreate"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择创建时间">
</el-date-picker>
</el-form-item>
<el-form-item label="最后更新人" prop="lastModifiedBy">
<el-input v-model="form.lastModifiedBy" placeholder="请输入最后更新人" />
</el-form-item>
<el-form-item label="最后更新时间" prop="gmtModified">
<el-date-picker clearable
v-model="form.gmtModified"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择最后更新时间">
</el-date-picker>
</el-form-item>
<el-form-item label="有效标记" prop="activeFlag">
<el-input v-model="form.activeFlag" placeholder="请输入有效标记" />
</el-form-item>
<el-form-item label="工厂号" prop="factoryCode">
<el-input v-model="form.factoryCode" placeholder="请输入工厂号" />
</el-form-item>
<el-form-item label="SAP工厂号" prop="sapFactoryCode">
<el-input v-model="form.sapFactoryCode" placeholder="请输入SAP工厂号" />
</el-form-item>
<el-form-item label="库位名称" prop="wlName">
<el-input v-model="form.wlName" placeholder="请输入库位名称" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm">确 定</el-button>
<el-button @click="cancel">取 消</el-button>
</div>
</el-dialog>
<el-dialog title="打印标识卡" :visible.sync="dialogVisible">
<div class="dialog-content" style="text-align: center; font-size: 24px; font-weight: bold;">
<p>是否打印该物料调标识卡</p>
</div>
<span slot="footer" class="dialog-footer">
<el-button @click="dialogVisible = false">取 消</el-button>
<el-button type="primary" @click="confirmPrint"> </el-button>
</span>
</el-dialog>
</div>
</template>
<script>
import { listMatenews, getMatenews, delMatenews, addMatenews, updateMatenews ,listMatenewsls,addBS} from "@/api/wms/matenews";
export default {
name: "Matenews",
data() {
return {
// 遮罩层
loading: true,
// 选中数组
ids: [],
dialogVisible: false,
// 非单个禁用
single: true,
printCount: null,
selectedRows: [],
// 非多个禁用
multiple: true,
// 显示搜索条件
showSearch: true,
// 总条数
total: 0,
// 包材库存主表表格数据
matenewsList: [],
// 弹出层标题
title: "",
// 是否显示弹出层
open: false,
// 查询参数
queryParams: {
pageNum: 1,
pageSize: 10,
storageId: null,
whCode: null,
regionCode: null,
waCode: null,
storageType: null,
wlCode: null,
materialCode: null,
materialDesc: null,
amount: null,
storageAmount: null,
occupyAmount: null,
lpn: null,
productBatch: null,
receiveDate: null,
productDate: null,
userDefined1: null,
userDefined2: null,
userDefined3: null,
userDefined4: null,
userDefined5: null,
userDefined6: null,
userDefined7: null,
userDefined8: null,
userDefined9: null,
userDefined10: null,
gmtCreate: null,
lastModifiedBy: null,
gmtModified: null,
activeFlag: null,
factoryCode: null,
sapFactoryCode: null,
wlName: null
},
// 表单参数
form: {},
// 表单校验
rules: {
storageId: [
{ required: true, message: "唯一序列不能为空", trigger: "blur" }
],
}
};
},
created() {
this.getList();
},
methods: {
/** 查询包材库存主表列表 */
getList() {
this.loading = true;
listMatenewsls(this.queryParams).then(response => {
this.matenewsList = response.rows;
this.total = response.total;
this.loading = false;
});
},
// 取消按钮
cancel() {
this.open = false;
this.reset();
},
// 表单重置
reset() {
this.form = {
storageId: null,
whCode: null,
regionCode: null,
waCode: null,
storageType: null,
wlCode: null,
materialCode: null,
materialDesc: null,
amount: null,
storageAmount: null,
occupyAmount: null,
lpn: null,
productBatch: null,
receiveDate: null,
productDate: null,
userDefined1: null,
userDefined2: null,
userDefined3: null,
userDefined4: null,
userDefined5: null,
userDefined6: null,
userDefined7: null,
userDefined8: null,
userDefined9: null,
userDefined10: null,
createBy: null,
gmtCreate: null,
lastModifiedBy: null,
gmtModified: null,
activeFlag: null,
factoryCode: null,
sapFactoryCode: null,
wlName: null
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
formatProductCode(code) {
// 检查是否有效去掉前7个零
if (!code) return code; // 处理 null 或 undefined 情况
return code.replace(/^0{1,7}/, ''); // 替换前1到7个0
},
// 多选框选中数据
handleSelectionChange(selection) {
this.ids = selection.map(item => item.storageId)
this.single = selection.length!==1
this.multiple = !selection.length
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加包材库存主表";
},
openPrintDialog() {
// 检查是否选择了行
if (this.ids.length === 0) {
this.$message.warning('请先选择要打印的物料!');
return;
}
// 打开打印对话框
this.dialogVisible = true;
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
const storageId = row.storageId || this.ids
getMatenews(storageId).then(response => {
this.form = response.data;
this.open = true;
this.title = "修改包材库存主表";
});
},
confirmPrint() {
if (this.printCount < 1) {
this.$message.warning('打印张数必须大于 0!');
return;
}
const ids = this.ids[0];
// 发送请求到后端
// 发送请求到后端
const payload = {
storageId: ids, // 传递选中的 ID
userDefined10: this.printCount // 传递打印数量
};
// 这里假设 addBS 是一个 API 函数
addBS(payload)
.then(response => {
// 处理成功响应
this.$message.success(response.msg);
this.dialogVisible = false; // 关闭对话框
this.printCount = null; // 重置打印数量
this.getList(); // 重新获取数据
})
.catch(error => {
// 处理错误响应
this.$message.error('打印请求失败,请重试!');
console.error(error); // 打印错误到控制台
});
// this.$axios.post('/api/print', {
// ids,
// printCount: this.printCount,
// })
// .then(response => {
// this.$message.success('打印请求已发送成功!');
// this.dialogVisible = false; // 关闭对话框
// this.printCount = 1; // 重置打印数量
// // 这里可以根据需要重新获取数据
// this.getList();
// })
// .catch(error => {
// this.$message.error('打印请求失败,请重试!');
// });
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate(valid => {
if (valid) {
if (this.form.storageId != null) {
updateMatenews(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
});
} else {
addMatenews(this.form).then(response => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
});
}
}
});
},
/** 删除按钮操作 */
handleDelete(row) {
const storageIds = row.storageId || this.ids;
this.$modal.confirm('是否确认删除包材库存主表编号为"' + storageIds + '"的数据项?').then(function() {
return delMatenews(storageIds);
}).then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => {});
},
/** 导出按钮操作 */
handleExport() {
this.download('wms/matenews/export', {
...this.queryParams
}, `matenews_${new Date().getTime()}.xlsx`)
}
}
};
</script>