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.

326 lines
10 KiB
Vue

<template>
<div class="app-container">
<el-form ref="form" :model="form" label-width="110px">
<el-row>
<el-col :span="12">
<el-form-item label="采购订单编号" prop="poNo">
<el-input v-model="form.poNo" disabled/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="订单计划数量" prop="orderAmount">
<el-input v-model="form.orderAmount" disabled/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="物料编码" prop="materialCode">
<el-input v-model="form.materialCode" disabled/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="物料名称" prop="materialName">
<el-input v-model="form.materialName" disabled/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="审核日期" prop="approveDate">
<el-input v-model="form.approveDate" disabled/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="计划交货日期" prop="planDeliveryDate">
<el-input v-model="form.planDeliveryDate" disabled/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="订单状态" prop="orderStatus">
<template slot-scope="scope">
<dict-tag :options="dict.type.order_status" :value="form.orderStatus"/>
</template>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="完成日期" prop="completeDate">
<el-input v-model="form.completeDate" disabled/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="源单编号" prop="srcBillNo">
<el-input v-model="form.srcBillNo" disabled/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="京源项目" prop="tondBase">
<el-input v-model="form.tondBase" disabled/>
</el-form-item>
</el-col>
</el-row>
<el-divider content-position="center">采购订单绑定信息</el-divider>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button type="primary" icon="el-icon-plus" size="mini" @click="handleAddMesOrderBind"></el-button>
</el-col>
<el-col :span="1.5">
<el-button type="danger" icon="el-icon-delete" size="mini" @click="handleDeleteMesOrderBind"></el-button>
</el-col>
</el-row>
<el-table :data="mesOrderBindList" :row-class-name="rowMesOrderBindIndex"
@selection-change="handleMesOrderBindSelectionChange" ref="mesOrderBind">
<el-table-column type="selection" width="50" align="center"/>
<el-table-column label="序号" align="center" prop="index" width="50"/>
<el-table-column label="安全库存标识" prop="safeFlag" width="150">
<template slot-scope="scope">
<el-radio-group v-model="scope.row.safeFlag" @input="changeSafeFlag(scope.row)">
<el-radio
v-for="dict in dict.type.mes_safe_flag"
:key="dict.value"
:label="dict.value"
>{{ dict.label }}
</el-radio>
</el-radio-group>
</template>
</el-table-column>
<el-table-column label="销售订单" prop="saleOrderCode">
<template slot-scope="scope">
<el-input v-model="scope.row.saleOrderCode" placeholder="请点击右侧选择销售订单" readonly>
<el-button slot="append" icon="el-icon-search" @click="handleSaleOrderAdd(scope.row)"></el-button>
</el-input>
</template>
</el-table-column>
<el-table-column label="成品编码" prop="productCode" width="150">
<template slot-scope="scope">
<el-input v-model="scope.row.productCode" readonly/>
</template>
</el-table-column>
<el-table-column label="成品名称" prop="productName" width="150">
<template slot-scope="scope">
<el-input v-model="scope.row.productName" readonly/>
</template>
</el-table-column>
<el-table-column label="绑定数量" prop="bindAmount" width="260">
<template slot-scope="scope">
<el-input-number v-model="scope.row.bindAmount" placeholder="请输入绑定数量">
</el-input-number>
</template>
</el-table-column>
</el-table>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="close"> </el-button>
</div>
<!-- 添加物料信息对话框 -->
<el-dialog title="选择销售订单" :visible.sync="saleOrderOpen" append-to-body>
<select-saleOrder ref="saleOrderRef"></select-saleOrder>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitSaleOrderForm"> </el-button>
<el-button @click="saleOrderOpen = false"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import {getPurchaseOrder, bindOrder} from "@/api/mes/purchaseOrder";
import selectSaleOrder from '@//views/mes/purchaseOrder/selectSaleOrder.vue';
export default {
name: "PurchaseOrder",
components: {
'select-saleOrder': selectSaleOrder,
},
dicts: ['active_flag', 'mes_purchase_order_status', 'document_status', 'mes_safe_flag'],
data() {
return {
// 遮罩层
loading: true,
// 选中数组
ids: [],
// 子表选中数据
checkedMesOrderBind: [],
// 非单个禁用
single: true,
// 非多个禁用
multiple: true,
// 显示搜索条件
showSearch: true,
// 总条数
total: 0,
// 采购订单信息表格数据
purchaseOrderList: [],
// 采购销售订单绑定信息;销售订单绑定采购订单明细信息表格数据
mesOrderBindList: [],
// 弹出层标题
title: "",
// 是否显示弹出层
open: false,
// 查询参数
queryParams: {
pageNum: 1,
pageSize: 10,
erpId: null,
fentryId: null,
poNo: null,
documentStatus: null,
materialId: null,
materialCode: null,
materialName: null,
orderAmount: null,
completeAmount: null,
approveDate: null,
erpModifyDate: null,
planDeliveryDate: null,
beginDate: null,
endDate: null,
orderStatus: null,
completeDate: null,
isFlag: null,
unitId: null,
stockUnitId: null,
priceUnitId: null,
auxPropId: null,
srcBillNo: null,
purchaseOrgId: null,
tondBase: null,
supplierId: null,
},
// 表单参数
form: {},
// 表单校验
rules: {
materialCode: [
{required: true, message: "物料编码;对应FMaterialId.FNumber不能为空", trigger: "blur"}
],
orderAmount: [
{required: true, message: "订单计划数量;对应FQty不能为空", trigger: "blur"}
],
isFlag: [
{required: true, message: "是否标识1-是0-否不能为空", trigger: "change"}
],
},
saleOrderOpen: false
};
},
created() {
const purchaseOrderId = this.$route.params && this.$route.params.purchaseOrderId;
getPurchaseOrder(purchaseOrderId).then(response => {
this.form = response.data;
this.mesOrderBindList = response.data.mesOrderBindList;
});
},
methods: {
/** 提交按钮 */
submitForm() {
this.loading = true;
this.form.mesOrderBindList = this.mesOrderBindList;
if (this.form.purchaseOrderId != null) {
bindOrder(this.form).then(response => {
this.$modal.msgSuccess("绑定成功");
this.close();
});
}
},
/** 采购销售订单绑定信息;销售订单绑定采购订单明细信息序号 */
rowMesOrderBindIndex({row, rowIndex}) {
row.index = rowIndex + 1;
},
/** 采购销售订单绑定信息;销售订单绑定采购订单明细信息添加按钮操作 */
handleAddMesOrderBind() {
// this.open=true;
let obj = {};
obj.safeFlag = "";
obj.saleOrderId = "";
obj.saleOrderCode = "";
obj.productId = "";
obj.productCode = "";
obj.productName = "";
obj.bindAmount = "";
obj.remark = "";
this.mesOrderBindList.push(obj);
},
/** 采购销售订单绑定信息;销售订单绑定采购订单明细信息删除按钮操作 */
handleDeleteMesOrderBind() {
if (this.checkedMesOrderBind.length == 0) {
this.$modal.msgError("请先选择要删除的采购订单绑定信息");
} else {
const mesOrderBindList = this.mesOrderBindList;
const checkedMesOrderBind = this.checkedMesOrderBind;
this.mesOrderBindList = mesOrderBindList.filter(function (item) {
return checkedMesOrderBind.indexOf(item.index) == -1
});
}
},
/** 复选框选中数据 */
handleMesOrderBindSelectionChange(selection) {
this.checkedMesOrderBind = selection.map(item => item.index)
},
handleSaleOrderAdd(row) {
this.editedRow = row;
this.saleOrderOpen = true;
},
/** 提交选择销售订单信息按钮 */
submitSaleOrderForm() {
let selectedRow = this.$refs.saleOrderRef.selectedRow;
this.editedRow.saleOrderId = selectedRow.saleOrderId;
this.editedRow.saleOrderCode = selectedRow.saleorderCode;
this.editedRow.productCode = selectedRow.materialCode;
this.editedRow.productName = selectedRow.materialName;
this.editedRow.productId = selectedRow.materialId;
this.saleOrderOpen = false;
},
changeSafeFlag(row) {
if (row.safeFlag == "1") {
row.saleOrderId = "";
row.saleOrderCode = "";
row.productCode = "";
row.productName = "";
row.productId = "";
}
},
/** 关闭按钮 */
close() {
const obj = {path: "/mes/plan/purchaseOrder", query: {t: Date.now(), pageNum: this.$route.query.pageNum}};
this.$tab.closeOpenPage(obj);
},
}
};
</script>