Merge remote-tracking branch 'origin/master'

master
Yangwl 7 months ago
commit 2605d555cc

@ -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({

@ -42,7 +42,7 @@ export function delOdsRawOrderIn(rawOrderInId) {
method: 'delete' method: 'delete'
}); });
} }
// 新增包材到货单 // 过账105
export function sap105temporarilyCollected(data) { export function sap105temporarilyCollected(data) {
return request({ return request({
url: '/wms/odsRawOrderIn/sap105temporarilyCollected', url: '/wms/odsRawOrderIn/sap105temporarilyCollected',
@ -50,3 +50,17 @@ export function sap105temporarilyCollected(data) {
data: data data: data
}); });
} }
export function handleUpdateSAP103(data) {
return request({
url: '/wms/odsRawOrderIn/handleUpdateSAP103',
method: 'post',
data: data
});
}
export function handleUpdateSAP105(data) {
return request({
url: '/wms/odsRawOrderIn/handleUpdateSAP105',
method: 'post',
data: data
});
}

@ -182,6 +182,14 @@ export function listProduct(query) {
params: query params: query
}); });
} }
// 查询物料信息列表
export function listProductFp(query) {
return request({
url: '/wms/matenews/listwmsFpStorageNews',
method: 'get',
params: query
});
}
// 查询报工详细列表 // 查询报工详细列表
export function getCKList(data) { export function getCKList(data) {
return request({ return request({
@ -197,3 +205,10 @@ export function addOdsProcureOutOrderTS(data) {
data: data data: data
}); });
} }
export function addwmsFpStorageNewsTS(data) {
return request({
url: '/wms/outorder/addwmsFpStorageNewsTS',
method: 'post',
data: data
});
}

@ -16,7 +16,13 @@ export function listSelloutlistRE(query) {
params: query params: query
}); });
} }
export function listSelloutlistRETS(query) {
return request({
url: '/wms/sellout/listRETS',
method: 'get',
params: query
});
}
// 查询成品销售出库详细 // 查询成品销售出库详细
export function getSellout(id) { export function getSellout(id) {
return request({ return request({

@ -82,7 +82,7 @@
<el-table v-loading="loading" :data="bpprocureList" @selection-change="handleSelectionChange"> <el-table v-loading="loading" :data="bpprocureList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" /> <el-table-column type="selection" width="55" align="center" />
<!-- <el-table-column label="id" align="center" prop="id" v-if="false" />--> <el-table-column label="id" align="center" prop="id" v-if="false" />
<el-table-column label="采购单号" align="center" prop="procureCode" /> <el-table-column label="采购单号" align="center" prop="procureCode" />
<el-table-column label="物料编码" align="center" prop="materialCode" /> <el-table-column label="物料编码" align="center" prop="materialCode" />
<el-table-column label="物料名称" align="center" prop="materialName" /> <el-table-column label="物料名称" align="center" prop="materialName" />
@ -248,6 +248,7 @@ export default {
total: 0, total: 0,
// //
bpprocureList: [], bpprocureList: [],
factoryName: "",
// //
title: "", title: "",
// //
@ -368,8 +369,26 @@ export default {
}); });
}, },
handlePrint() { async handlePrint() {
// //
let factoryCode = localStorage.getItem("USER_POOL_NAME_CURRENT");
// .substring(3);
console.log(localStorage)
// factoryCode factoryName
const factoryMapping = {
"ds_1000": "中山小榄工厂",
"ds_1010": "阜沙工厂",
"ds_1020": "重庆工厂",
"ds_1030": "江西工厂",
"ds_1040": "安徽工厂",
"ds_999": "中山恒阳"
};
// factoryCode factoryName
console.log(factoryCode)
this.factoryName = factoryMapping[factoryCode] || "未知工厂"; //
// if (){}
console.log(this.factoryName )
const selectedData = this.bpprocureList.filter(item => this.ids.includes(item.id)); const selectedData = this.bpprocureList.filter(item => this.ids.includes(item.id));
if (selectedData.length === 0) { if (selectedData.length === 0) {
this.$message.warning("请先选择要打印的记录"); this.$message.warning("请先选择要打印的记录");
@ -390,28 +409,25 @@ export default {
})) }))
}; };
// if (this.printData.workTable.length === 0 || !this.printData.workTable[0].procureCode) {
const barcodeCanvas = document.createElement('canvas'); this.$message.warning("没有可打印的数据或数据不完整");
console.log(" this.printData.workTable[0].procureCode: " + this.printData.workTable[0].procureCode); return;
}
JsBarcode(barcodeCanvas, this.printData.workTable[0].procureCode, { try {
format: "CODE128", // JsBarcode
height: 35, if (typeof JsBarcode !== 'function') {
width: 1.5, throw new Error("JsBarcode库没有正确加载");
displayValue: true, }
// background: "#FFFFFF", //
// lineColor: "#000000" //
});
// Data URL console.log("开始生成条形码...");
const barcodeDataUrl = barcodeCanvas.toDataURL(); const barcodeDataUrl = await this.generateBarcode(this.printData.workTable[0].procureCode);
console.log(barcodeDataUrl); // Data URL console.log("条形码生成成功:", barcodeDataUrl);
// //
let printContent = ` let printContent = `
<html> <html>
<head> <head>
<style> <style>
body { font-family: Arial, sans-serif; } body { font-family: Arial, sans-serif; }
table { width: 100%; border-collapse: collapse; } table { width: 100%; border-collapse: collapse; }
@ -420,7 +436,7 @@ export default {
</head> </head>
<body> <body>
<div style="text-align: center;"> <div style="text-align: center;">
<h3>采购单</h3> <h3>${this.factoryName}采购单</h3>
<div style="float: right; margin-top: -50px; width: 200px; height: 100px;"> <div style="float: right; margin-top: -50px; width: 200px; height: 100px;">
<img src="${barcodeDataUrl}" alt="条形码" /> <img src="${barcodeDataUrl}" alt="条形码" />
</div> </div>
@ -442,8 +458,8 @@ export default {
</thead> </thead>
<tbody>`; <tbody>`;
this.printData.workTable.forEach(item => { this.printData.workTable.forEach(item => {
printContent += ` printContent += `
<tr> <tr>
<td>${item.procureCode}</td> <td>${item.procureCode}</td>
<td>${item.materialCode}</td> <td>${item.materialCode}</td>
@ -453,19 +469,56 @@ export default {
<td>${item.planNumber}</td> <td>${item.planNumber}</td>
<td>${item.realityNumber}</td> <td>${item.realityNumber}</td>
</tr>`; </tr>`;
}); });
printContent += ` printContent += `
</tbody> </tbody>
</table> </table>
<div class="notice">
<p>注意事项</p>
<ol>
<li>本采购订单请贵单位在 48 小时内确认回传逾期将视为放弃本订单</li>
<li>供应商请严格遵守交货日期若突发意外情况需要延期供货请以书面电话等方式向我方联络否则延期后的一切损失由供应商承担</li>
<li>供应商所交付的货物与采购订单的要求不符我方有权拒收货物</li>
<li>供应商在供货时需注明货物的采购单号以方便此后与我方对账结算</li>
</ol>
</div>
</body> </body>
</html>`; </html>`;
const printWindow = window.open('', '_blank'); //
printWindow.document.write(printContent); const printWindow = window.open('', '_blank');
printWindow.document.close(); printWindow.document.write(printContent);
printWindow.print(); printWindow.document.close();
printWindow.close();
// 使setTimeout
setTimeout(() => {
printWindow.print();
printWindow.close();
}, 1000); // 1
} catch (error) {
console.error("生成条形码时出错: ", error);
this.$message.error("生成条形码时出错,请稍后重试");
}
},
generateBarcode(procureCode) {
return new Promise((resolve, reject) => {
const barcodeCanvas = document.createElement('canvas');
try {
JsBarcode(barcodeCanvas, procureCode, {
format: "CODE128",
height: 35,
width: 1.5,
displayValue: true,
});
const barcodeDataUrl = barcodeCanvas.toDataURL();
resolve(barcodeDataUrl);
} catch (error) {
reject(error);
}
});
}, },

@ -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>
@ -125,8 +129,9 @@
<el-table-column label="出库数量" align="center" prop="outNumber" /> <el-table-column label="出库数量" align="center" prop="outNumber" />
<el-table-column label="状态" align="center" prop="status"> <el-table-column label="状态" align="center" prop="status">
<template slot-scope="scope"> <template slot-scope="scope">
<span v-if="scope.row.status === '0'"></span> <span v-if="scope.row.outNumber === 0 || scope.row.outNumber === null"></span>
<span v-else-if="scope.row.status === '1'">出库</span> <span v-else-if="scope.row.amount - scope.row.outNumber > 0 && (scope.row.outNumber !== 0 && scope.row.outNumber !== null)">部分出库</span>
<span v-else></span>
</template> </template>
</el-table-column> </el-table-column>
<!-- <el-table-column label="托盘号" align="center" prop="sn" />--> <!-- <el-table-column label="托盘号" align="center" prop="sn" />-->
@ -166,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() {
@ -294,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,
@ -326,6 +486,7 @@ export default {
factoryCode: null, factoryCode: null,
sapFactoryCode: null sapFactoryCode: null
}, },
materialList: [], //
// //
form: {}, form: {},
// //
@ -351,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;
@ -367,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() {
@ -419,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;

@ -80,6 +80,28 @@
v-hasPermi="['wms:odsRawOrderIn:edit']" v-hasPermi="['wms:odsRawOrderIn:edit']"
>105过账</el-button> >105过账</el-button>
</el-col> </el-col>
<el-col :span="1.5">
<el-button
type="success"
plain
icon="el-icon-edit"
size="mini"
:disabled="single"
@click="handleUpdateSAP103"
v-hasPermi="['wms:odsRawOrderIn:edit']"
>暂收冲销</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="success"
plain
icon="el-icon-edit"
size="mini"
:disabled="single"
@click="handleUpdateSAP105"
v-hasPermi="['wms:odsRawOrderIn:edit']"
>105冲销</el-button>
</el-col>
<el-col :span="1.5"> <el-col :span="1.5">
<el-button <el-button
type="danger" type="danger"
@ -336,7 +358,7 @@
</template> </template>
<script> <script>
import { listOdsRawOrderIn, getOdsRawOrderIn, delOdsRawOrderIn, addOdsRawOrderIn, updateOdsRawOrderIn ,sap105temporarilyCollected} from "@/api/wms/odsRawOrderIn"; import { listOdsRawOrderIn, getOdsRawOrderIn, delOdsRawOrderIn, addOdsRawOrderIn, updateOdsRawOrderIn ,sap105temporarilyCollected,handleUpdateSAP103,handleUpdateSAP105} from "@/api/wms/odsRawOrderIn";
export default { export default {
name: "OdsRawOrderIn", name: "OdsRawOrderIn",
@ -533,6 +555,7 @@ export default {
/** 修改按钮操作 */ /** 修改按钮操作 */
handleUpdateSAP(row) { handleUpdateSAP(row) {
this.reset(); this.reset();
//qualityStatus
const id = this.ids[0] const id = this.ids[0]
let postData = this.ids.map(id => ({ id: id })); let postData = this.ids.map(id => ({ id: id }));
@ -542,6 +565,32 @@ export default {
this.getList(); this.getList();
this.$modal.msgSuccess("过账完成"); this.$modal.msgSuccess("过账完成");
}).catch(() => {}); }).catch(() => {});
},
handleUpdateSAP103(row) {
this.reset();
//qualityStatus
const id = this.ids[0]
let postData = this.ids.map(id => ({ id: id }));
this.$modal.confirm('是否进行冲销').then(function() {
return handleUpdateSAP103(JSON.stringify(postData));
}).then(() => {
this.getList();
this.$modal.msgSuccess("冲销完成");
}).catch(() => {});
},
handleUpdateSAP105(row) {
this.reset();
//qualityStatus
const id = this.ids[0]
let postData = this.ids.map(id => ({ id: id }));
this.$modal.confirm('是否进行冲销').then(function() {
return handleUpdateSAP105(JSON.stringify(postData));
}).then(() => {
this.getList();
this.$modal.msgSuccess("冲销完成");
}).catch(() => {});
}, },
/** 提交按钮 */ /** 提交按钮 */
submitForm() { submitForm() {

@ -135,8 +135,8 @@
</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>
<div>
<el-table v-loading="loading" :data="orderList" @selection-change="handleSelectionChange"> <el-table v-loading="loading" :data="orderList" @selection-change="handleSelectionChange" :show-summary="true" :summary-method="getSummary">
<el-table-column type="selection" width="55" align="center" /> <el-table-column type="selection" width="55" align="center" />
<el-table-column label="序号" type="index" > </el-table-column> <el-table-column label="序号" type="index" > </el-table-column>
<el-table-column label="工厂编码" align="center" prop="siteCode" v-if="false" /> <el-table-column label="工厂编码" align="center" prop="siteCode" v-if="false" />
@ -181,7 +181,14 @@
</el-table> </el-table>
<!-- 汇总行 -->
<!-- <div class="summary-row">-->
<!-- <span>当页计划汇总数量:</span>-->
<!-- <span>{{ getTotalPlanNumber() }}</span>-->
<!-- <span>当页已入库数量汇总数量:</span>-->
<!-- <span>{{ getTotalRealityNumber() }}</span>-->
<!-- </div>-->
</div>
<pagination <pagination
v-show="total>0" v-show="total>0"
:total="total" :total="total"
@ -326,6 +333,7 @@ export default {
open: false, open: false,
openTEM: false, openTEM: false,
// //
queryParams: { queryParams: {
pageNum: 1, pageNum: 1,
pageSize: 10, pageSize: 10,
@ -451,6 +459,29 @@ export default {
this.open = true; this.open = true;
this.title = "添加包材采购单"; this.title = "添加包材采购单";
}, },
getTotalPlanNumber() {
return this.orderList.reduce((sum, order) => sum + (order.planNumber || 0), 0);
},
getTotalRealityNumber() {
return this.orderList.reduce((sum, order) => sum + (order.realityNumber || 0), 0);
},
getSummary(param) {
const { columns, data } = param;
const planNumberTotal = data.reduce((sum, row) => sum + (row.planNumber || 0), 0);
const realityNumberTotal = data.reduce((sum, row) => sum + (row.realityNumber || 0), 0);
const summary = columns.map((column, index) => {
if (index === 6) { // ""8
return planNumberTotal;
} else if (index === 7) { // ""9
return realityNumberTotal;
}
return ''; //
});
return summary;
},
/** 修改按钮操作 */ /** 修改按钮操作 */
handleUpdate(row) { handleUpdate(row) {
this.reset(); this.reset();
@ -565,3 +596,15 @@ export default {
} }
}; };
</script> </script>
<style>
.summary-row {
display: flex;
justify-content: flex-end; /* Aligns the summary to the right */
padding: 10px;
background-color: #f9f9f9; /* Optional: different background for summary row */
border-top: 1px solid #e4e7ed; /* Optional: border for separation */
}
.summary-row span {
margin-left: 20px; /* Optional: spacing between items */
}
</style>

@ -22,25 +22,25 @@
<!-- <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd"--> <!-- <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd"-->
<!-- v-hasPermi="['wms:outorder:add']">新增</el-button>--> <!-- v-hasPermi="['wms:outorder:add']">新增</el-button>-->
<!-- </el-col>--> <!-- </el-col>-->
<el-col :span="1.5"> <!-- <el-col :span="1.5">-->
<el-button type="success" plain icon="el-icon-edit" size="mini" @click="handleSAP"></el-button> <!-- <el-button type="success" plain icon="el-icon-edit" size="mini" @click="handleSAP"></el-button>-->
</el-col> <!-- </el-col>-->
<el-col :span="1.5"> <el-col :span="1.5">
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd" <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd"
v-hasPermi="['wms:outorder:add']">生成出库单</el-button> v-hasPermi="['wms:outorder:add']">生成出库单</el-button>
</el-col> </el-col>
<el-col :span="1.5"> <!-- <el-col :span="1.5">-->
<el-button <!-- <el-button-->
type="success" <!-- type="success"-->
plain <!-- plain-->
:disabled="single" <!-- :disabled="single"-->
icon="el-icon-download" <!-- icon="el-icon-download"-->
size="mini" <!-- size="mini"-->
@click="showPrint" <!-- @click="showPrint"-->
v-hasPermi="['mes:prepare:export']" <!-- v-hasPermi="['mes:prepare:export']"-->
>打印出库单</el-button> <!-- >打印出库单</el-button>-->
</el-col> <!-- </el-col>-->
<el-col :span="1.5"> <el-col :span="1.5">
<el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport" <el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport"
v-hasPermi="['wms:outorder:export']">导出</el-button> v-hasPermi="['wms:outorder:export']">导出</el-button>
@ -55,7 +55,7 @@
<el-table-column label="id" align="center" prop="id" v-if="false" /> <el-table-column label="id" align="center" prop="id" v-if="false" />
<el-table-column label="出库单号" align="center" prop="produceCode" width="250"/> <el-table-column label="出库单号" align="center" prop="produceCode" width="250"/>
<el-table-column label="批次" align="center" prop="userDefined5" width="250"/> <el-table-column label="批次" align="center" prop="userDefined1" width="250"/>
<el-table-column label="物料编码" align="center" prop="materialCode" width="250"> <el-table-column label="物料编码" align="center" prop="materialCode" width="250">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{ formatProductCode(scope.row.materialCode) }}</span> <span>{{ formatProductCode(scope.row.materialCode) }}</span>
@ -67,9 +67,9 @@
<el-table-column label="出库数量" align="center" prop="outNumber" /> <el-table-column label="出库数量" align="center" prop="outNumber" />
<el-table-column label="状态" align="center" prop="orderStatus"> <el-table-column label="状态" align="center" prop="orderStatus">
<template slot-scope="scope"> <template slot-scope="scope">
<span v-if="scope.row.orderStatus === '1'"></span> <span v-if="scope.row.orderStatus === '0'"></span>
<span v-else-if="scope.row.orderStatus === '2'">进行中</span> <span v-else-if="scope.row.orderStatus === '1'">进行中</span>
<span v-else-if="scope.row.orderStatus === '3'">完成</span> <span v-else-if="scope.row.orderStatus === '2'">完成</span>
</template> </template>
</el-table-column> </el-table-column>
@ -85,14 +85,12 @@
<el-table-column label="过账凭证" align="center" prop="userDefined9" width="250"/> <el-table-column label="过账凭证" align="center" prop="userDefined9" width="250"/>
<el-table-column label="sap订单过账信息" align="center" prop="userDefined11" /> <el-table-column label="sap订单过账信息" align="center" prop="userDefined11" />
<el-table-column label="操作人" align="center" prop="createBy" /> <el-table-column label="操作人" align="center" prop="createBy" />
<el-table-column label="操作时间" align="center" prop="createDate" width="180"> <el-table-column label="操作时间" align="center" prop="createDate" width="180">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{ parseTime(scope.row.createDate, '{y}-{m}-{d} {h}:{i}:{s}') }}</span> <span>{{ parseTime(scope.row.createDate, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize" <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
@ -948,10 +946,11 @@ export default {
async submitForm() { async submitForm() {
const payload = this.addoutorderList.map(item => ({ const payload = this.addoutorderList.map(item => ({
qty: item.qty, // qty: item.qty, //
userDefined6: item.selectedOrderType, // userDefined6: this.selectedOrderType, //
produceCode: item.produceCode, // produceCode: item.produceCode, //
materialDesc: item.materialDesc, // materialDesc: item.materialDesc, //
materialCode: item.materialCode, // materialCode: item.materialCode, //
Unit: item.userDefined1,
// unit // unit
// unit: item.unit, // unit: item.unit,
planNumber: item.planNumber, // planNumber: item.planNumber, //

@ -2,22 +2,14 @@
<div class="app-container"> <div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch"
label-width="68px"> label-width="68px">
<el-form-item label="备货单" prop="stockOrder"> <el-form-item label="备货单" prop="deliveryOrder">
<el-input <el-input
v-model="queryParams.stockOrder" v-model="queryParams.deliveryOrder"
placeholder="请输入成品备货单" placeholder="请输入成品备货单"
clearable clearable
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
/> />
</el-form-item> </el-form-item>
<el-form-item label="装运单" prop="deliveryOrder">
<el-input
v-model="queryParams.deliveryOrder"
placeholder="请输入交货单号"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="交货单" prop="itemNumber"> <el-form-item label="交货单" prop="itemNumber">
<el-input <el-input
@ -60,13 +52,12 @@
<el-table v-loading="loading" :data="selloutList" @selection-change="handleSelectionChange"> <el-table v-loading="loading" :data="selloutList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center"/> <el-table-column type="selection" width="55" align="center"/>
<el-table-column label="ID" align="center" prop="id" v-if="false" /> <el-table-column label="ID" align="center" prop="id" v-if="false" />
<el-table-column label="备货单" align="center" prop="stockOrder" width="250"/> <el-table-column label="备货单" align="center" prop="deliveryOrder" width="250"/>
<el-table-column label="装运单" align="center" prop="deliveryOrder" width="250"/>
<el-table-column label="交货单" align="center" prop="attr1" v-if="false" /> <el-table-column label="交货单" align="center" prop="attr1" v-if="false" />
<el-table-column label="交货单" align="center" prop="itemNumber" width="150"/>
<el-table-column label="工厂编码" align="center" prop="factoryCode" v-if="false" /> <el-table-column label="工厂编码" align="center" prop="factoryCode" v-if="false" />
<el-table-column label="出库仓" align="center" prop="whCode" /> <el-table-column label="出库仓" align="center" prop="whCode" />
<el-table-column label="库区" align="center" prop="waCode" width="250"/> <!-- <el-table-column label="库区" align="center" prop="waCode" width="250"/>-->
<el-table-column label="库区编码" align="center" prop="waCode" v-if="false" /> <el-table-column label="库区编码" align="center" prop="waCode" v-if="false" />
<el-table-column label="库位编码" align="center" prop="wlCode" v-if="false" /> <el-table-column label="库位编码" align="center" prop="wlCode" v-if="false" />
<el-table-column label="出库地点" align="center" prop="deliveryPlace" v-if="false" /> <el-table-column label="出库地点" align="center" prop="deliveryPlace" v-if="false" />
@ -106,16 +97,13 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="送达方" align="center" prop="attr4"/> <el-table-column label="订单类型" align="center" prop="attr1"/>
<el-table-column label="送达方描述" align="center" prop="attr3"/> <el-table-column label="总账科目编号" align="center" prop="attr2"/>
<!-- <el-table-column label="货运代理" align="center" prop="attr4"/>--> <!-- <el-table-column label="货运代理" align="center" prop="attr4"/>-->
<!-- <el-table-column label="货运代理描述" align="center" prop="attr5"/>--> <!-- <el-table-column label="货运代理描述" align="center" prop="attr5"/>-->
<el-table-column label="售达方" align="center" prop="attr6"/> <el-table-column label="成本中心" align="center" prop="attr3"/>
<el-table-column label="售达方描述" align="center" prop="attr5"/>
<el-table-column label="渠道类型" align="center" prop="attr7"/>
<!-- <el-table-column label="计划日期" align="center" prop="attr8"/>--> <!-- <el-table-column label="计划日期" align="center" prop="attr8"/>-->
<el-table-column label="发货点名称" align="center" prop="attr9"v-if="false" /> <el-table-column label="收货方" align="center" prop="attr10"v-if="false" />
<el-table-column label="发货点编码" align="center" prop="attr10"v-if="false" />
<el-table-column label="备注" align="center" prop="remark"/> <el-table-column label="备注" align="center" prop="remark"/>
</el-table> </el-table>
@ -129,54 +117,109 @@
<!-- 添加或修改成品销售出库对话框 --> <!-- 添加或修改成品销售出库对话框 -->
<!-- 生成退货单弹窗--> <!-- 生成退货单弹窗-->
<!-- 生成出库单弹窗-->
<el-dialog :title="title" :visible.sync="open" width="1200px" append-to-body> <el-dialog :title="title" :visible.sync="open" width="1200px" append-to-body>
<el-row :gutter="10" class="mb8"> <el-form :model="queryParams1" label-width="120px">
<el-col :span="1.5"> <!-- 表单内容 -->
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handlequeryform"></el-button> <el-row :gutter="10" class="mb8">
</el-col> <el-col :span="6">
</el-row> <el-form-item label="订单类型">
<el-table :data="addoutorderList" @selection-change="handleSelectionChange1"> <el-select v-model="selectedOrderType" placeholder="选择订单类型" @change="handleOrderTypeChange">
<el-table-column type="selection" width="55" align="center" :index="indexMethod" /> <el-option
<el-table-column label="序号" type="index"> </el-table-column> v-for="type in orderTypes"
<el-table-column label="id" align="center" prop="id" v-if="false" /> :key="type"
<el-table-column label="装运单" prop="deliveryOrder" width="150"/> :label="type"
<el-table-column label="交货单" prop="itemNumber" width="150"/> :value="type">
<el-table-column label="产品名称" prop="productName" width="150"/> </el-option>
<el-table-column label="产品编码" align="center" prop="productCode" width="150"> </el-select>
<template slot-scope="scope"> </el-form-item>
<span>{{ formatProductCode(scope.row.productCode) }}</span> </el-col>
</template> <el-col :span="6">
</el-table-column> <el-form-item label="仓库编码">
<el-table-column label="单位" prop="unitOfMeasure" /> <el-select v-model="queryParams1.warehouseNo" placeholder="请选择仓库编码" @change="forceUpdate()" clearable
<el-table-column label="批号" prop="lotNumber" /> filterable style="width: 100%;">
<el-table-column label="计划数量" align="center" prop="planQuantity" /> <el-option v-for="item in Optionlistck" :key="item.warehouseCode" :label="item.warehouseName"
<el-table-column label="交货日期" align="center" prop="outDate" width="150"/> :value="item.warehouseCode"></el-option>
<el-table-column label="送达方" align="center" prop="attr4" /> </el-select>
<el-table-column label="送达方描述" align="center" prop="attr3" /> </el-form-item>
<el-table-column label="售达方" align="center" prop="attr6" /> </el-col>
<el-table-column label="售达方描述" align="center" prop="attr5" /> </el-row>
<el-table-column label="渠道类型" align="center" prop="attr7" /> <el-row :gutter="10" class="mb8">
<el-table-column label="操作" align="center" width="100"> <el-col :span="6">
<template slot-scope="scope"> <el-form-item label="总账科目编号">
<el-button type="danger" size="mini" @click="deleteOutOrder(scope.row)"></el-button> <el-input v-model="queryParams1.accountingSubject" placeholder="总账科目编号"></el-input>
</template> </el-form-item>
</el-table-column> </el-col>
</el-table> <el-col :span="6">
<el-form-item label="收货方">
<el-input v-model="queryParams1.receiver" placeholder="收货方"></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="生产日期">
<el-date-picker v-model="queryParams1.productionDate" placeholder="选择生产日期" type="date" style="width: 100%;"></el-date-picker>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="货架寿命到期日">
<el-date-picker v-model="queryParams1.shelfLifeExpiryDate" placeholder="货架寿命到期日" type="date" style="width: 100%;"></el-date-picker>
</el-form-item>
</el-col>
</el-row>
<!-- 条件渲染成本中心输入框 -->
<el-row v-if="selectedOrderType === '成本中心'" :gutter="10" class="mb8">
<el-col :span="6">
<el-form-item label="成本中心">
<el-input v-model="queryParams1.costCenter" 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"> <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>
<!-- 装运单信息弹窗 -->
<el-dialog :title="'库存物料'" :visible.sync="showMaterialDialog" width="1500px"> <!-- 物料信息弹窗 -->
<el-dialog :title="'物料信息'" :visible.sync="showMaterialDialog" width="600px">
<div> <div>
<!-- 查询条件 --> <!-- 查询条件 -->
<el-form :inline="true" :model="queryParams" class="demo-form-inline"> <el-form :inline="true" :model="queryParams" class="demo-form-inline">
<el-form-item label="装运单"> <el-form-item label="物料号">
<el-input v-model="queryParams.deliveryOrder" placeholder="请输入装运单"></el-input> <el-input v-model="queryParams.materialCode" placeholder="请输入物料号"></el-input>
</el-form-item>
<el-form-item label="交货单">
<el-input v-model="queryParams.itemNumber" placeholder="请输入装运单"></el-input>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" @click="fetchMaterials"></el-button> <el-button type="primary" @click="fetchMaterials"></el-button>
@ -184,24 +227,14 @@
</el-form> </el-form>
<el-table :data="materialList" @selection-change="handleMaterialSelectionChange"> <el-table :data="materialList" @selection-change="handleMaterialSelectionChange">
<el-table-column type="selection" width="55" /> <el-table-column type="selection" width="55" />
<el-table-column label="id" align="center" prop="id" v-if="false" /> <el-table-column label="ID" align="center" prop="ID" v-if="false" />
<el-table-column label="装运单" prop="deliveryOrder" width="150"/> <el-table-column label="物料描述" prop="materialDesc" width="250"/>
<el-table-column label="交货单" prop="itemNumber" width="150"/> <el-table-column label="物料编码" align="center" prop="materialCode" width="150">
<el-table-column label="产品名称" prop="productName" width="150"/>
<el-table-column label="产品编码" align="center" prop="productCode" width="150">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{ formatProductCode(scope.row.productCode) }}</span> <span>{{ formatProductCode(scope.row.materialCode) }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="单位" prop="unitOfMeasure" /> <el-table-column label="单位" prop="userDefined1" width="100"/>
<el-table-column label="批号" prop="lotNumber" />
<el-table-column label="计划数量" align="center" prop="planQuantity" />
<el-table-column label="交货日期" align="center" prop="outDate" width="150"/>
<el-table-column label="送达方" align="center" prop="attr4" />
<el-table-column label="送达方描述" align="center" prop="attr3" />
<el-table-column label="售达方" align="center" prop="attr6" />
<el-table-column label="售达方描述" align="center" prop="attr5" />
<el-table-column label="渠道类型" align="center" prop="attr7" />
</el-table> </el-table>
<el-pagination <el-pagination
@ -227,10 +260,30 @@
getSellout, getSellout,
addRE, addRE,
listSelloutlistRE, listSelloutlistRE,
listSelloutlistRETS,
delSellout, delSellout,
addSellout, addSellout,
updateSellout } from "@/api/wms/sellout"; updateSellout } from "@/api/wms/sellout";
import {
listOutorder,
getOutorder,
delOutorder,
PurchaseOrderOutboundPda,
addPurchaseOrderOutbound,
getlistCK,
listReturnBC,
OutboundPostingSAP,
OutboundPostingzcSAP,
listOutorderZC,
listProduct,
listckTS,
addOdsProcureOutOrderTS,
addwmsFpStorageNewsTS,
getIdCardListTH,
listReturnDY,
listProductFp,
listOutorderZU
} from '@/api/wms/outorderfc'
export default { export default {
name: "Sellout", name: "Sellout",
data() { data() {
@ -260,7 +313,24 @@
currentPage: 1, // currentPage: 1, //
pageSize: 10, // pageSize: 10, //
totalMaterials: 0, // totalMaterials: 0, //
queryParams: { queryParams1: {
pageNum: 1,
pageSize: 10,
produceCode: '',
warehouseNo: '',
planDateMax: '',
accountingSubject: '', //
receiver: '', //
productionDate: '', //
shelfLifeExpiryDate: '' ,// 寿
planDateMin: '',
materialCode:'',
costCenter: '' //
},
selectedOrderType: '', //
orderTypes: ['内部订单', '成本中心'], //
Optionlistck: [],
queryParams: {
pageNum: 1, pageNum: 1,
pageSize: 10, pageSize: 10,
deliveryOrder: null, deliveryOrder: null,
@ -311,7 +381,7 @@
/** 查询成品销售出库列表 */ /** 查询成品销售出库列表 */
getList() { getList() {
this.loading = true; this.loading = true;
listSelloutlistRE(this.queryParams).then(response => { listSelloutlistRETS(this.queryParams).then(response => {
this.selloutList = response.rows; this.selloutList = response.rows;
this.total = response.total; this.total = response.total;
this.loading = false; this.loading = false;
@ -378,21 +448,35 @@
}, },
async submitForm() { async submitForm() {
const payload = this.addoutorderList.map(item => ({ const payload = this.addoutorderList.map(item => ({
id: item.id, qty: item.qty, //
userDefined6: this.selectedOrderType, //
userDefined1: item.userDefined1,
materialDesc: item.materialDesc, //
materialCode: item.materialCode, //
// unit
// unit: item.unit,
planNumber: item.planNumber, //
locCode: this.queryParams1.warehouseNo, //
userDefined2: this.queryParams1.accountingSubject, //
userDefined4: this.queryParams1.receiver, //
planDate: this.queryParams1.productionDate, //
userDefined5: this.queryParams1.shelfLifeExpiryDate, // 寿
userDefined3: this.queryParams1.costCenter, //
})); }));
console.log("payload:", payload); // 使 console.log("payload:", payload); // 使
try { try {
await this.$confirm('确认生成备货单吗?', '确认', { await this.$confirm('确认提交出库单吗?', '确认', {
confirmButtonText: '确定', confirmButtonText: '确定',
cancelButtonText: '取消', cancelButtonText: '取消',
type: 'info' type: 'info'
}); });
// //
const response = await addRE(payload); const response = await addwmsFpStorageNewsTS(payload);
this.$message.success('备货单生成成功'); this.$message.success('出库单提交成功');
this.open = false; // this.open = false; //
this.addoutorderList = []; // this.addoutorderList = []; //
} catch (error) { } catch (error) {
@ -423,6 +507,16 @@
this.single = selection.length !== 1 this.single = selection.length !== 1
this.multiple = !selection.length this.multiple = !selection.length
}, },
forceUpdate(selection) {
console.log(selection)
},
handleQtyChange(row, event) {
// row qty
row.planNumber = event;
//
// this.saveQtyToServer(row.id, event);
},
handlequeryform() { handlequeryform() {
this.showMaterialDialog = true; // this.showMaterialDialog = true; //
this.fetchMaterials(); // this.fetchMaterials(); //
@ -438,34 +532,51 @@
handleAdd() { handleAdd() {
this.reset(); this.reset();
this.open = true; this.open = true;
this.title = "成本中心出库任务新增"; this.title = "生成出库单";
this.queryParams1 = {} this.queryParams1 = {}
this.addoutorderList = [] this.addoutorderList = []
let factoryCode = localStorage.getItem('USER_POOL_NAME_CURRENT').substring(3)
let params = { factoryCode: factoryCode }; //
let paramsJSON = JSON.stringify(params); // JSON
console.log(factoryCode)
getlistCK(paramsJSON).then(response => {
this.Optionlistck = response.data
console.log(this.Optionlistck)
});
}, },
async confirmMaterialSelection() { async confirmMaterialSelection() {
const materialsToAdd = []; // const materialsToAdd = []; //
for (const material of this.selectedMaterials) { for (const material of this.selectedMaterials) {
let queryParams = {
produceCode: material.produceCode,
materialCode: material.materialCode
};
try { try {
const response = await listReturnBC(queryParams);
console.log("Response:", response);
const batches = response.rows || []; //
materialsToAdd.push({ materialsToAdd.push({
id: material.id, produceCode: material.produceCode,
deliveryOrder: material.deliveryOrder, materialDesc: material.materialDesc,
itemNumber: material.itemNumber, userDefined1: material.userDefined1,
productName: material.productName, materialCode: material.materialCode,
productCode: material.productCode, planNumber: material.planNumber, //
unitOfMeasure: material.unitOfMeasure, outNumber: material.outNumber, //
lotNumber: material.lotNumber, bgnumber: material.bgnumber, //
planQuantity: material.planQuantity, returnQty: material.planNumber - material.outNumber, //
outDate: material.outDate, qty: 0, // 0
attr4: material.attr4,
attr3: material.attr3,
attr6: material.attr6,
attr5: material.attr5,
attr7: material.attr7
}); });
} catch (error) { } catch (error) {
console.error('Error fetching batches:', error); console.error('Error fetching batches:', error);
} }
} }
// addoutorderList // addoutorderList
this.addoutorderList = this.addoutorderList.concat(materialsToAdd); this.addoutorderList = this.addoutorderList.concat(materialsToAdd);
console.log("Materials processed"); console.log("Materials processed");
@ -490,11 +601,11 @@
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
}, },
/** 重置按钮操作 */ /** 重置按钮操作 */ /** 重置按钮操作 */
async fetchMaterials(pageNum = 1) { // pageNum async fetchMaterials(pageNum = 1) { // pageNum
this.loading = true; // this.loading = true; //
try { try {
const response = await listSellout({ const response = await listProductFp({
...this.queryParams, // queryParams ...this.queryParams, // queryParams
pageNum: pageNum, // pageNum: pageNum, //
pageSize: this.pageSize // pageSize: this.pageSize //
@ -508,8 +619,8 @@
this.totalMaterials = response.total; // this.totalMaterials = response.total; //
} catch (error) { } catch (error) {
console.error('获取装运单失败:', error); console.error('获取物料信息失败:', error);
this.$message.error('加载装运单失败,请稍后重试。'); this.$message.error('加载物料信息失败,请稍后重试。');
} finally { } finally {
this.loading = false; // this.loading = false; //
} }

Loading…
Cancel
Save