wms补打页面完善

master
mengjiao 9 months ago
parent 37c81f07de
commit 8ac5c93edb

@ -15,6 +15,13 @@ export function cardDy(data) {
data: data data: data
}); });
} }
export function cardBD(data) {
return request({
url: '/wms/matetowsn/cardBD',
method: 'post',
data: data
});
}
// 查询包材库存明细表详细 // 查询包材库存明细表详细
export function getMatetowsn(mateOrderInSnId) { export function getMatetowsn(mateOrderInSnId) {
return request({ return request({

@ -100,6 +100,10 @@
<el-row :gutter="10" class="mb8"> <el-row :gutter="10" class="mb8">
<el-col :span="1.5"> <el-col :span="1.5">
<el-button type="success" plain icon="el-icon-edit" size="mini" @click="handleUpdate"></el-button> <el-button type="success" plain icon="el-icon-edit" size="mini" @click="handleUpdate"></el-button>
</el-col>
<el-col :span="1.5">
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd"
v-hasPermi="['wms:outorder:add']">补打</el-button>
</el-col> </el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row> </el-row>
@ -167,112 +171,247 @@
@pagination="getList" @pagination="getList"
/> />
<!-- 添加或修改包材库存明细表对话框 --> <!-- &lt;!&ndash; 添加或修改包材库存明细表对话框 &ndash;&gt;-->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body> <!-- <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 ref="form" :model="form" :rules="rules" label-width="80px">-->
<el-form-item label="仓库编码" prop="whCode"> <!-- <el-form-item label="仓库编码" prop="whCode">-->
<el-input v-model="form.whCode" placeholder="请输入仓库编码" /> <!-- <el-input v-model="form.whCode" placeholder="请输入仓库编码" />-->
</el-form-item> <!-- </el-form-item>-->
<el-form-item label="库区编码" prop="waCode"> <!-- <el-form-item label="库区编码" prop="waCode">-->
<el-input v-model="form.waCode" placeholder="请输入库区编码" /> <!-- <el-input v-model="form.waCode" placeholder="请输入库区编码" />-->
</el-form-item> <!-- </el-form-item>-->
<el-form-item label="标识卡" prop="wlCode"> <!-- <el-form-item label="标识卡" prop="wlCode">-->
<el-input v-model="form.wlCode" placeholder="请输入标识卡" /> <!-- <el-input v-model="form.wlCode" placeholder="请输入标识卡" />-->
</el-form-item> <!-- </el-form-item>-->
<el-form-item label="入库单号" prop="orderNo"> <!-- <el-form-item label="入库单号" prop="orderNo">-->
<el-input v-model="form.orderNo" placeholder="请输入入库单号" /> <!-- <el-input v-model="form.orderNo" placeholder="请输入入库单号" />-->
</el-form-item> <!-- </el-form-item>-->
<el-form-item label="采购订单号" prop="poNo"> <!-- <el-form-item label="采购订单号" prop="poNo">-->
<el-input v-model="form.poNo" placeholder="请输入采购订单号" /> <!-- <el-input v-model="form.poNo" placeholder="请输入采购订单号" />-->
</el-form-item> <!-- </el-form-item>-->
<el-form-item label="采购订单行项目" prop="poLine"> <!-- <el-form-item label="采购订单行项目" prop="poLine">-->
<el-input v-model="form.poLine" placeholder="请输入采购订单行项目" /> <!-- <el-input v-model="form.poLine" placeholder="请输入采购订单行项目" />-->
</el-form-item> <!-- </el-form-item>-->
<el-form-item label="物料号" prop="materialCode"> <!-- <el-form-item label="物料号" prop="materialCode">-->
<el-input v-model="form.materialCode" placeholder="请输入物料号" /> <!-- <el-input v-model="form.materialCode" placeholder="请输入物料号" />-->
</el-form-item> <!-- </el-form-item>-->
<el-form-item label="物料描述" prop="materialDesc"> <!-- <el-form-item label="物料描述" prop="materialDesc">-->
<el-input v-model="form.materialDesc" placeholder="请输入物料描述" /> <!-- <el-input v-model="form.materialDesc" placeholder="请输入物料描述" />-->
</el-form-item> <!-- </el-form-item>-->
<el-form-item label="托盘号" prop="sn"> <!-- <el-form-item label="托盘号" prop="sn">-->
<el-input v-model="form.sn" placeholder="请输入托盘号" /> <!-- <el-input v-model="form.sn" placeholder="请输入托盘号" />-->
</el-form-item> <!-- </el-form-item>-->
<el-form-item label="条码" prop="barCode"> <!-- <el-form-item label="条码" prop="barCode">-->
<el-input v-model="form.barCode" placeholder="请输入条码" /> <!-- <el-input v-model="form.barCode" placeholder="请输入条码" />-->
</el-form-item> <!-- </el-form-item>-->
<el-form-item label="数量" prop="amount"> <!-- <el-form-item label="数量" prop="amount">-->
<el-input v-model="form.amount" placeholder="请输入数量" /> <!-- <el-input v-model="form.amount" placeholder="请输入数量" />-->
</el-form-item> <!-- </el-form-item>-->
<el-form-item label="备用1" prop="userDefined1"> <!-- <el-form-item label="备用1" prop="userDefined1">-->
<el-input v-model="form.userDefined1" placeholder="请输入备用1" /> <!-- <el-input v-model="form.userDefined1" placeholder="请输入备用1" />-->
</el-form-item> <!-- </el-form-item>-->
<el-form-item label="备用2" prop="userDefined2"> <!-- <el-form-item label="备用2" prop="userDefined2">-->
<el-input v-model="form.userDefined2" placeholder="请输入备用2" /> <!-- <el-input v-model="form.userDefined2" placeholder="请输入备用2" />-->
</el-form-item> <!-- </el-form-item>-->
<el-form-item label="备用3" prop="userDefined3"> <!-- <el-form-item label="备用3" prop="userDefined3">-->
<el-input v-model="form.userDefined3" placeholder="请输入备用3" /> <!-- <el-input v-model="form.userDefined3" placeholder="请输入备用3" />-->
</el-form-item> <!-- </el-form-item>-->
<el-form-item label="备用4" prop="userDefined4"> <!-- <el-form-item label="备用4" prop="userDefined4">-->
<el-input v-model="form.userDefined4" placeholder="请输入备用4" /> <!-- <el-input v-model="form.userDefined4" placeholder="请输入备用4" />-->
</el-form-item> <!-- </el-form-item>-->
<el-form-item label="备用5" prop="userDefined5"> <!-- <el-form-item label="备用5" prop="userDefined5">-->
<el-input v-model="form.userDefined5" placeholder="请输入备用5" /> <!-- <el-input v-model="form.userDefined5" placeholder="请输入备用5" />-->
</el-form-item> <!-- </el-form-item>-->
<el-form-item label="备用6" prop="userDefined6"> <!-- <el-form-item label="备用6" prop="userDefined6">-->
<el-input v-model="form.userDefined6" placeholder="请输入备用6" /> <!-- <el-input v-model="form.userDefined6" placeholder="请输入备用6" />-->
</el-form-item> <!-- </el-form-item>-->
<el-form-item label="备用7" prop="userDefined7"> <!-- <el-form-item label="备用7" prop="userDefined7">-->
<el-input v-model="form.userDefined7" placeholder="请输入备用7" /> <!-- <el-input v-model="form.userDefined7" placeholder="请输入备用7" />-->
</el-form-item> <!-- </el-form-item>-->
<el-form-item label="备用8" prop="userDefined8"> <!-- <el-form-item label="备用8" prop="userDefined8">-->
<el-input v-model="form.userDefined8" placeholder="请输入备用8" /> <!-- <el-input v-model="form.userDefined8" placeholder="请输入备用8" />-->
</el-form-item> <!-- </el-form-item>-->
<el-form-item label="备用9" prop="userDefined9"> <!-- <el-form-item label="备用9" prop="userDefined9">-->
<el-input v-model="form.userDefined9" placeholder="请输入备用9" /> <!-- <el-input v-model="form.userDefined9" placeholder="请输入备用9" />-->
</el-form-item> <!-- </el-form-item>-->
<el-form-item label="备用10" prop="userDefined10"> <!-- <el-form-item label="备用10" prop="userDefined10">-->
<el-input v-model="form.userDefined10" placeholder="请输入备用10" /> <!-- <el-input v-model="form.userDefined10" placeholder="请输入备用10" />-->
</el-form-item> <!-- </el-form-item>-->
<el-form-item label="创建时间" prop="gmtCreate"> <!-- <el-form-item label="创建时间" prop="gmtCreate">-->
<el-date-picker clearable <!-- <el-date-picker clearable-->
v-model="form.gmtCreate" <!-- v-model="form.gmtCreate"-->
type="date" <!-- type="date"-->
value-format="yyyy-MM-dd" <!-- value-format="yyyy-MM-dd"-->
placeholder="请选择创建时间"> <!-- placeholder="请选择创建时间">-->
</el-date-picker> <!-- </el-date-picker>-->
</el-form-item> <!-- </el-form-item>-->
<el-form-item label="最后更新人" prop="lastModifiedBy"> <!-- <el-form-item label="最后更新人" prop="lastModifiedBy">-->
<el-input v-model="form.lastModifiedBy" placeholder="请输入最后更新人" /> <!-- <el-input v-model="form.lastModifiedBy" placeholder="请输入最后更新人" />-->
</el-form-item> <!-- </el-form-item>-->
<el-form-item label="最后更新时间" prop="gmtModified"> <!-- <el-form-item label="最后更新时间" prop="gmtModified">-->
<el-date-picker clearable <!-- <el-date-picker clearable-->
v-model="form.gmtModified" <!-- v-model="form.gmtModified"-->
type="date" <!-- type="date"-->
value-format="yyyy-MM-dd" <!-- value-format="yyyy-MM-dd"-->
placeholder="请选择最后更新时间"> <!-- placeholder="请选择最后更新时间">-->
</el-date-picker> <!-- </el-date-picker>-->
</el-form-item> <!-- </el-form-item>-->
<el-form-item label="有效标记" prop="activeFlag"> <!-- <el-form-item label="有效标记" prop="activeFlag">-->
<el-input v-model="form.activeFlag" placeholder="请输入有效标记" /> <!-- <el-input v-model="form.activeFlag" placeholder="请输入有效标记" />-->
</el-form-item> <!-- </el-form-item>-->
<el-form-item label="工厂号" prop="factoryCode"> <!-- <el-form-item label="工厂号" prop="factoryCode">-->
<el-input v-model="form.factoryCode" placeholder="请输入工厂号" /> <!-- <el-input v-model="form.factoryCode" placeholder="请输入工厂号" />-->
</el-form-item> <!-- </el-form-item>-->
<el-form-item label="SAP工厂号" prop="sapFactoryCode"> <!-- <el-form-item label="SAP工厂号" prop="sapFactoryCode">-->
<el-input v-model="form.sapFactoryCode" placeholder="请输入SAP工厂号" /> <!-- <el-input v-model="form.sapFactoryCode" placeholder="请输入SAP工厂号" />-->
</el-form-item> <!-- </el-form-item>-->
</el-form> <!-- </el-form>-->
<div slot="footer" class="dialog-footer"> <!-- <div slot="footer" class="dialog-footer">-->
<el-button type="primary" @click="submitForm"> </el-button> <!-- <el-button type="primary" @click="submitForm"> </el-button>-->
<el-button @click="cancel"> </el-button> <!-- <el-button @click="cancel"> </el-button>-->
</div> <!-- </div>-->
</el-dialog> <!-- </el-dialog>-->
</div>
<!-- 生成出库单弹窗-->
<el-dialog :title="title" :visible.sync="open" width="1200px" append-to-body>
<el-form :model="queryParams1" label-width="120px">
<!-- 表单内容 -->
<el-row :gutter="10" class="mb8">
<el-col :span="6">
<el-form-item label="仓库编码">
<el-select v-model="queryParams1.warehouseNo" placeholder="请选择仓库编码" @change="forceUpdate()" clearable
filterable style="width: 100%;">
<el-option v-for="item in Optionlistck" :key="item.warehouseCode" :label="item.warehouseName"
:value="item.warehouseCode"></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="10" class="mb8">
<el-col :span="6">
<el-form-item label="库区">
<el-input v-model="queryParams1.waCode" placeholder="库区"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handlequeryform"></el-button>
</el-col>
</el-row>
<el-table :data="addoutorderList" @selection-change="handleSelectionChange1">
<el-table-column type="selection" width="55" align="center" :index="indexMethod" />
<el-table-column label="序号" type="index"></el-table-column>
<el-table-column label="物料描述" align="center" prop="materialDesc" width="255"/>
<el-table-column label="物料编码" align="center" prop="materialCode" width="150">
<template slot-scope="scope">
<span>{{ formatProductCode(scope.row.materialCode) }}</span>
</template>
</el-table-column>
<el-table-column label="单位" align="center" prop="userDefined1" />
<el-table-column label="数量" align="center" width="180">
<template slot-scope="scope">
<el-input v-model="scope.row.planNumber" @change="handleQtyChange(scope.row, $event)"></el-input>
</template>
</el-table-column>
<el-table-column label="操作" align="center" width="100">
<template slot-scope="scope">
<el-button type="danger" size="mini" @click="deleteOutOrder(scope.row)"></el-button>
</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="cancel"> </el-button>
</div>
</el-dialog>
<!-- 物料信息弹窗 -->
<el-dialog :title="'物料信息'" :visible.sync="showMaterialDialog" width="600px">
<div>
<!-- 查询条件 -->
<el-form :inline="true" :model="queryParams" class="demo-form-inline">
<el-form-item label="物料号">
<el-input v-model="queryParams.materialCode" placeholder="请输入物料号"></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="fetchMaterials"></el-button>
</el-form-item>
</el-form>
<el-table :data="materialList" @selection-change="handleMaterialSelectionChange">
<el-table-column type="selection" width="55" />
<el-table-column label="ID" align="center" prop="ID" v-if="false" />
<el-table-column label="物料描述" prop="materialDesc" width="250"/>
<el-table-column label="物料编码" align="center" prop="materialCode" width="150">
<template slot-scope="scope">
<span>{{ formatProductCode(scope.row.materialCode) }}</span>
</template>
</el-table-column>
<el-table-column label="单位" prop="userDefined1" width="100"/>
</el-table>
<el-pagination
@current-change="handleCurrentChange"
:current-page="currentPage"
:page-size="pageSize"
:total="totalMaterials"
layout="total, prev, pager, next, jumper"
/>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="confirmMaterialSelection"> </el-button>
<el-button @click="showMaterialDialog = false"> </el-button>
</div>
</div>
</el-dialog>
</div>
</template> </template>
<script> <script>
import { listMatetowsn,cardDy, getMatetowsn, delMatetowsn, addMatetowsn, updateMatetowsn } from "@/api/wms/matetowsn"; import { listMatetowsn,cardDy, cardBD,getMatetowsn, delMatetowsn, addMatetowsn, updateMatetowsn } from "@/api/wms/matetowsn";
import {
listOutorder,
getOutorder,
delOutorder,
PurchaseOrderOutboundPda,
addPurchaseOrderOutbound,
getlistCK,
listReturnBC,
OutboundPostingSAP,
OutboundPostingzcSAP,
listOutorderZC,
listProduct,
listckTS,
addOdsProcureOutOrderTS,
getIdCardListTH,
listReturnDY,
listOutorderZU
} from '@/api/wms/outorderfc'
export default { export default {
name: "Matetowsn", name: "Matetowsn",
data() { data() {
@ -295,7 +434,27 @@ export default {
title: "", title: "",
// //
open: false, open: false,
showMaterialDialog: false, //
// //
currentPage: 1, //
pageSize: 10, //
totalMaterials: 0, //
Optionlistck: [],
addoutorderList: [],
queryParams1: {
pageNum: 1,
pageSize: 10,
produceCode: '',
warehouseNo: '',
planDateMax: '',
accountingSubject: '', //
receiver: '', //
productionDate: '', //
shelfLifeExpiryDate: '' ,// 寿
planDateMin: '',
materialCode:'',
costCenter: '' //
},
queryParams: { queryParams: {
pageNum: 1, pageNum: 1,
pageSize: 10, pageSize: 10,
@ -327,6 +486,7 @@ export default {
factoryCode: null, factoryCode: null,
sapFactoryCode: null sapFactoryCode: null
}, },
materialList: [], //
// //
form: {}, form: {},
// //
@ -352,6 +512,9 @@ export default {
this.open = false; this.open = false;
this.reset(); this.reset();
}, },
indexMethod(index) {
return index + 1;
},
/** 过账按钮操作 */ /** 过账按钮操作 */
handleUpdate(row) { handleUpdate(row) {
const ids = row.id || this.ids; const ids = row.id || this.ids;
@ -368,6 +531,105 @@ export default {
// 7 // 7
if (!code) return code; // null undefined if (!code) return code; // null undefined
return code.replace(/^0{1,7}/, ''); // 170 return code.replace(/^0{1,7}/, ''); // 170
},
handlequeryform() {
this.showMaterialDialog = true; //
this.fetchMaterials(); //
// this.queryParams1.pageNum = 1;
// this.getList1();
},
deleteOutOrder(row) {
//
this.$confirm('确认删除该出库单吗?', '警告', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
// addoutorderList
this.addoutorderList = this.addoutorderList.filter(item => item !== row);
this.$message.success('删除成功!');
}).catch(() => {
this.$message.info('已取消删除');
});
},
handleSelectionChange1(selection) {
this.ids = selection.map(item => item.id)
this.single = selection.length !== 1
this.multiple = !selection.length
this.selectedRows = selection;
},
handleQtyChange(row, event) {
// row qty
row.planNumber = event;
//
// this.saveQtyToServer(row.id, event);
},
handleMaterialSelectionChange(selection) {
this.selectedMaterials = selection; //
},
handleCurrentChange(page) {
this.currentPage = page; //
this.fetchMaterials(page); //
},
async confirmMaterialSelection() {
const materialsToAdd = []; //
for (const material of this.selectedMaterials) {
let queryParams = {
produceCode: material.produceCode,
materialCode: material.materialCode
};
try {
const response = await listReturnBC(queryParams);
console.log("Response:", response);
const batches = response.rows || []; //
materialsToAdd.push({
produceCode: material.produceCode,
materialDesc: material.materialDesc,
userDefined1: material.userDefined1,
materialCode: material.materialCode,
planNumber: material.planNumber, //
outNumber: material.outNumber, //
bgnumber: material.bgnumber, //
returnQty: material.planNumber - material.outNumber, //
qty: 0, // 0
});
} catch (error) {
console.error('Error fetching batches:', error);
}
}
// addoutorderList
this.addoutorderList = this.addoutorderList.concat(materialsToAdd);
console.log("Materials processed");
this.showMaterialDialog = false; //
},
/** 重置按钮操作 */
async fetchMaterials(pageNum = 1) { // pageNum
this.loading = true; //
try {
const response = await listProduct({
...this.queryParams, // queryParams
pageNum: pageNum, //
pageSize: this.pageSize //
});
//
this.materialList = response.rows.map((item, index) => {
item.index = (pageNum - 1) * this.pageSize + index + 1; //
return item;
});
this.totalMaterials = response.total; //
} catch (error) {
console.error('获取物料信息失败:', error);
this.$message.error('加载物料信息失败,请稍后重试。');
} finally {
this.loading = false; //
}
}, },
// //
reset() { reset() {
@ -420,42 +682,73 @@ export default {
this.single = selection.length!==1 this.single = selection.length!==1
this.multiple = !selection.length this.multiple = !selection.length
}, },
forceUpdate(selection) {
console.log(selection)
},
/** 新增按钮操作 */ /** 新增按钮操作 */
handleAdd() { handleAdd() {
this.reset(); this.reset();
this.open = true; this.open = true;
this.title = "添加包材库存明细表"; this.title = "补打";
}, this.queryParams1 = {}
/** 修改按钮操作 */ this.addoutorderList = []
// handleUpdate(row) { let factoryCode = localStorage.getItem('USER_POOL_NAME_CURRENT').substring(3)
// this.reset(); let params = { factoryCode: factoryCode }; //
// const mateOrderInSnId = row.mateOrderInSnId || this.ids let paramsJSON = JSON.stringify(params); // JSON
// getMatetowsn(mateOrderInSnId).then(response => { console.log(factoryCode)
// this.form = response.data; getlistCK(paramsJSON).then(response => {
// this.open = true; this.Optionlistck = response.data
// this.title = ""; console.log(this.Optionlistck)
// });
// },
});
},
/** 提交按钮 */ /** 提交按钮 */
submitForm() { async submitForm() {
this.$refs["form"].validate(valid => { const payload = this.addoutorderList.map(item => ({
if (valid) { qty: item.qty, //
if (this.form.mateOrderInSnId != null) { userDefined6: this.selectedOrderType, //
updateMatetowsn(this.form).then(response => { produceCode: item.produceCode, //
this.$modal.msgSuccess("修改成功"); materialDesc: item.materialDesc, //
this.open = false; materialCode: item.materialCode, //
this.getList(); unit: item.userDefined1,
}); // unit
} else { // unit: item.unit,
addMatetowsn(this.form).then(response => { planNumber: item.planNumber, //
this.$modal.msgSuccess("新增成功"); locCode: this.queryParams1.warehouseNo, //
this.open = false; waCode: this.queryParams1.waCode, //
this.getList(); userDefined2: this.queryParams1.accountingSubject, //
}); userDefined4: this.queryParams1.receiver, //
} planDate: this.queryParams1.productionDate, //
} userDefined5: this.queryParams1.shelfLifeExpiryDate, // 寿
}); userDefined3: this.queryParams1.costCenter, //
}, }));
console.log("payload:", payload); // 使
try {
await this.$confirm('确认提交补打吗?', '确认', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'info'
});
//
const response = await cardBD(payload);
this.$message.success('补打提交成功');
this.open = false; //
this.addoutorderList = []; //
} catch (error) {
if (error === 'cancel') {
this.$message.info('已取消提交');
} else {
console.error('提交失败:', error);
this.$message.error('提交失败,请重试');
}
}
this.getList();
},
/** 删除按钮操作 */ /** 删除按钮操作 */
handleDelete(row) { handleDelete(row) {
const mateOrderInSnIds = row.mateOrderInSnId || this.ids; const mateOrderInSnIds = row.mateOrderInSnId || this.ids;

Loading…
Cancel
Save