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.

418 lines
14 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="68px">
<el-form-item label="采购单号" prop="procureCode">
<el-input
v-model="queryParams.procureCode"
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="materialName">
<el-input
v-model="queryParams.materialName"
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="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['wms:bpprocure:add']"
>新增</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="success"
plain
icon="el-icon-edit"
size="mini"
:disabled="single"
@click="handleUpdate"
v-hasPermi="['wms:bpprocure:edit']"
>修改</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['wms:bpprocure:remove']"
>删除</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="info" icon="el-icon-print" size="mini" @click="handlePrint" :disabled="!ids.length">打印</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['wms:bpprocure:export']"
>导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="bpprocureList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="采购单号" align="center" prop="procureCode" />
<el-table-column label="物料编码" align="center" prop="materialCode" />
<el-table-column label="物料名称" align="center" prop="materialName" />
<el-table-column label="供应商" align="center" prop="supplyName" />
<el-table-column label="计划数量" align="center" prop="planNumber" />
<el-table-column label="已入库数量" align="center" prop="realityNumber" />
<el-table-column label="单位" align="center" prop="unit" />
<el-table-column label="价格" align="center" prop="price" />
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['wms:bpprocure:edit']"
>修改</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['wms:bpprocure:remove']"
>删除</el-button>
</template>
</el-table-column>
</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="procureCode">
<el-input v-model="form.procureCode" 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="materialName" :rules="[{ required: true, message: '请选择物料名称', trigger: 'change' }]">
<el-select v-model="form.materialName" placeholder="请选择物料" clearable>
<el-option
v-for="dict in dict.type.bp_raw"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="供应商" prop="supplyName">
<el-input v-model="form.supplyName" placeholder="请输入供应商" />
</el-form-item>
<el-form-item label="计划数量" prop="planNumber">
<el-input v-model="form.planNumber" placeholder="请输入计划数量" />
</el-form-item>
<!-- <el-form-item label="已入库数量" prop="realityNumber">-->
<!-- <el-input v-model="form.realityNumber" placeholder="请输入已入库数量" />-->
<!-- </el-form-item>-->
<el-form-item label="单位" prop="unit">
<el-input v-model="form.unit" placeholder="请输入单位" />
</el-form-item>
<el-form-item label="价格" prop="price">
<el-input v-model="form.price" placeholder="请输入价格" />
</el-form-item>
<!-- <el-form-item label="用户自定义1" prop="attr1">-->
<!-- <el-input v-model="form.attr1" placeholder="请输入用户自定义1" />-->
<!-- </el-form-item>-->
<!-- <el-form-item label="用户自定义2" prop="attr2">-->
<!-- <el-input v-model="form.attr2" placeholder="请输入用户自定义2" />-->
<!-- </el-form-item>-->
<!-- <el-form-item label="用户自定义3" prop="attr3">-->
<!-- <el-input v-model="form.attr3" placeholder="请输入用户自定义3" />-->
<!-- </el-form-item>-->
<!-- <el-form-item label="用户自定义4" prop="attr4">-->
<!-- <el-input v-model="form.attr4" placeholder="请输入用户自定义4" />-->
<!-- </el-form-item>-->
<!-- <el-form-item label="用户自定义5" prop="attr5">-->
<!-- <el-input v-model="form.attr5" placeholder="请输入用户自定义5" />-->
<!-- </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>
</div>
</template>
<script>
import { listBpprocure, getBpprocure, delBpprocure, addBpprocure, updateBpprocure } from "@/api/wms/bpprocure";
export default {
name: "Bpprocure",
dicts: ['bp_raw'],
data() {
return {
// 遮罩层
loading: true,
// 选中数组
ids: [],
// 非单个禁用
single: true,
// 非多个禁用
multiple: true,
// 显示搜索条件
showSearch: true,
// 总条数
total: 0,
// 白坯原材料采购单表格数据
bpprocureList: [],
// 弹出层标题
title: "",
// 是否显示弹出层
open: false,
// 查询参数
queryParams: {
pageNum: 1,
pageSize: 10,
procureCode: null,
materialCode: null,
materialName: null,
supplyName: null,
planNumber: null,
realityNumber: null,
unit: null,
price: null,
attr1: null,
attr2: null,
attr3: null,
attr4: null,
attr5: null
},
// 表单参数
form: {},
// 表单校验
rules: {
}
};
},
created() {
this.getList();
},
methods: {
/** 查询白坯原材料采购单列表 */
getList() {
this.loading = true;
listBpprocure(this.queryParams).then(response => {
this.bpprocureList = response.rows;
this.total = response.total;
this.loading = false;
});
},
// 取消按钮
cancel() {
this.open = false;
this.reset();
},
// 表单重置
reset() {
this.form = {
ID: null,
procureCode: null,
materialCode: null,
materialName: null,
supplyName: null,
planNumber: null,
realityNumber: null,
unit: null,
price: null,
attr1: null,
attr2: null,
attr3: null,
attr4: null,
attr5: null
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
// 多选框选中数据
handleSelectionChange(selection) {
this.ids = selection.map(item => item.ID)
this.single = selection.length!==1
this.multiple = !selection.length
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加白坯原材料采购单";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
const ID = row.ID || this.ids
getBpprocure(ID).then(response => {
this.form = response.data;
this.open = true;
this.title = "修改白坯原材料采购单";
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate(valid => {
if (valid) {
if (this.form.ID != null) {
updateBpprocure(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
});
} else {
addBpprocure(this.form).then(response => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
});
}
}
});
},
handlePrint() {
// 获取选中数据
const selectedData = this.bpprocureList.filter(item => this.ids.includes(item.ID));
if (selectedData.length === 0) {
this.$message.warning("请先选择要打印的记录");
return;
}
// 生成打印数据
this.printData = {
printDate: new Date().toLocaleString(),
workTable: selectedData.map(item => ({
procureCode: item.procureCode,
materialCode: item.materialCode,
materialDesc: item.materialName,
unit: item.unit,
supplyName: item.supplyName,
planNumber: item.planNumber,
realityNumber: item.realityNumber|| '',
}))
};
// 打印内容
let printContent = `
<div style="text-align: center;">
<h3>采购单</h3>
</div>
<div style="display: flex; justify-content: space-between; padding: 10px;">
<div>打印日期: ${this.printData.printDate}</div>
</div>
<table border="1" style="width: 100%; border-collapse: collapse;margin: 0 auto;">
<thead>
<tr>
<th style="text-align: center;">采购单</th>
<th style="text-align: center;">物料编码</th>
<th style="text-align: center;">物料描述</th>
<th style="text-align: center;">供应商</th>
<th style="text-align: center;">单位</th>
<th style="text-align: center;">计划数量</th>
<th style="text-align: center;">已入库数量</th>
</tr>
</thead>
<tbody>`;
this.printData.workTable.forEach(item => {
printContent += `
<tr>
<td style="text-align: center;">${item.procureCode}</td>
<td style="text-align: center;">${item.materialCode}</td>
<td style="text-align: center;">${item.materialDesc}</td>
<td style="text-align: center;">${item.supplyName}</td>
<td style="text-align: center;">${item.unit}</td>
<td style="text-align: center;">${item.planNumber}</td>
<td style="text-align: center;">${item.realityNumber}</td>
</tr>`;
});
printContent += `
</tbody>
</table>
`;
const printWindow = window.open('', '_blank');
printWindow.document.write('<html><head><title>打印</title></head><body>');
printWindow.document.write(printContent);
printWindow.document.write('</body></html>');
printWindow.document.close();
printWindow.print();
printWindow.close();
},
// 其他方法handleQuery, resetQuery, etc.
/** 删除按钮操作 */
handleDelete(row) {
const IDs = row.ID || this.ids;
this.$modal.confirm('是否确认删除白坯原材料采购单编号为"' + IDs + '"的数据项').then(function() {
return delBpprocure(IDs);
}).then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => {});
},
/** 导出按钮操作 */
handleExport() {
this.download('wms/bpprocure/export', {
...this.queryParams
}, `bpprocure_${new Date().getTime()}.xlsx`)
}
}
};
</script>