1104 lines
39 KiB
Vue
Raw Normal View History

2025-03-10 13:48:17 +08:00
<template>
<div class="vue-element-page-wrap" ref="tableContainer">
<el-row class="page-search" justify="space-between" align="bottom">
<el-form ref="queryFormRef" :model="queryParams" :inline="true" label-width="80px" label-position="left">
<el-row :gutter="20">
<el-col :span="6">
<el-form-item label="发货单据" prop="params.SHIPREQUESTNAME">
<el-Input v-model="queryParams.params.SHIPREQUESTNAME" @keydown.enter.prevent="handleQuery" clearable />
</el-form-item>
</el-col>
</el-row>
</el-form>
<div class="page-search-btns">
<el-button type="primary" @click="searchFn">搜索</el-button>
</div>
</el-row>
<div class="vue-element-page-table">
<el-row>
<!-- <div class="page-table-operate">
<div class="page-table-title">
<div class="page-table-title-left">
<span>发货单据信息</span>
</div>
</div>
</div> -->
</el-row>
<el-table ref="tableInfo" :row-class-name="tableRowClassName" border v-loading="loading" :data="ShipList" highlight-current-row row-key="id" style="width: 100%;min-height: 100px;"
@row-click="handle">
<template v-for="(col, index) in column" :key="index">
<el-table-column v-if="!col.hide" :label="col.header" show-overflow-tooltip>
<template #default="scope">
<span>{{ scope.row[col.field] }}</span>
</template>
</el-table-column>
</template>
</el-table>
</div>
<!-- 左右结构 -->
<div class="vue-element-page-table">
<el-row>
<el-col :span="12" >
<div class="vue-element-page-table">
<el-row :gutter="20">
<el-col :span="20">
<div class="page-table-operate">
<div class="page-table-title">
<div class="page-table-title-left">
<span>未分配标签信息</span>
</div>
<el-form ref="queryFormRef" :model="queryParams" :inline="true" label-width="40px" label-position="left" style="margin-left:20px">
<el-form-item label="货位" prop="params.LOCATION">
<el-select v-model="state.ChangeLocation" clearable collapse-tags placeholder="请选择货位"
popper-class="custom-header" :max-collapse-tags="1" style="width: 240px"
@visible-change="JudgeMentERPLocation" filterable>
<template #header>
</template>
<el-option v-for="item in state.LocationList" :key="item.STORAGENAME" :label="item.DESCRIPTION"
:value="item.STORAGENAME" />
</el-select>
</el-form-item>
</el-form>
</div>
</div>
</el-col>
<!-- <el-col :span="10">-->
<!-- <el-input v-model="queryParams.params.CHARGE" type="textarea" />-->
<!-- </el-col>-->
<!-- <el-col :span="3">-->
<!-- <el-button type="primary" @click="chargeReserve" v-loading="state.button_loading">指定批次</el-button>-->
<!-- </el-col>-->
<!-- <el-col :span="3">-->
<!-- <el-button type="primary" @click="clearCharge" v-loading="state.button_loading">清空批次</el-button>-->
<!-- </el-col>-->
</el-row>
<el-table :height="tableHeight" border v-loading="loading" :data="state.MaterialPackingList" highlight-current-row row-key="id"
style="width: 100%;min-height:50px" @selection-change="handleSelectionChange2">
<el-table-column fixed="left" type="selection" width="40" :selectable="selectable" :reserve-selection="false" />
2025-03-14 16:35:25 +08:00
<el-table-column type="index" width="50" />
2025-03-10 13:48:17 +08:00
<template v-for="(col, index) in column1" :key="index">
<el-table-column v-if="!col.hide" :label="col.header" show-overflow-tooltip>
<template #default="scope">
<span>{{ scope.row[col.field] }}</span>
</template>
</el-table-column>
</template>
</el-table>
</div>
</el-col>
<el-col :span="1" class="transfer-switch">
<el-button type="primary" @click="LeftIn" v-loading="loading"><el-icon>
<ArrowRight />
</el-icon></el-button>
<el-button type="primary" @click="RightIn" v-loading="loading2"><el-icon>
<ArrowLeft />
</el-icon></el-button>
</el-col>
<el-col :span="11">
<div class="vue-element-page-table">
<div class="page-table-operate">
<el-row>
<div class="page-table-title">
<div class="page-table-title-left">
<span>已分配标签信息</span>
</div>
<div class="page-table-button">
<el-button style="margin-left: 15px;" type="primary" @click="exportExcel" :disabled="state.button_state3" v-loading="state.button_loading3">导出</el-button>
</div>
<el-tag style="margin-left: 20px;" type="success" size="large"> 总标签个数{{ BQSUM }}</el-tag>
<el-tag style="margin-left: 10px;" type="success" size="large">总发货数量{{ SENDSUM }}</el-tag>
</div>
</el-row>
</div>
<el-table :height="tableHeight" border v-loading="loading" :data="state.MaterialPackingUsername" highlight-current-row
row-key="id" style="width: 100%;min-height:50px" @selection-change="handleSelectionChange">
<el-table-column fixed="left" type="selection" width="50" />
2025-03-14 16:35:25 +08:00
<el-table-column type="index" width="50" />
2025-03-10 13:48:17 +08:00
<el-table-column prop="MATERIALQUANTITY2" label="本次发货数量" width="140">
<template #default="scope">
<el-input v-model="scope.row.MATERIALQUANTITY2" min = 0 type =number style="width: 140px">
</el-input>
</template>
</el-table-column>
<template v-for="(col, index) in column2" :key="index">
<el-table-column v-if="!col.hide" :label="col.header" show-overflow-tooltip>
<template #default="scope">
<span>{{ scope.row[col.field] }}</span>
</template>
</el-table-column>
</template>
<el-table-column fixed="right" label="操作" width="180">
<template #default="scope">
<el-button @click="UpdateQty(scope.row)" type="primary" size="small">修改数量</el-button>
</template>
</el-table-column>
</el-table>
</div>
</el-col>
</el-row>
</div>
<el-row class="page-search" justify="end" align="middle">
<div class="block" style="float: right">
<el-form-item label="备注" prop="state.REMARK">
<el-Input v-model="state.REMARK" />
</el-form-item>
</div>
<div class="block" style="float: right">
<el-form-item label="过账日期" prop="state.commitDate">
<el-date-picker :clearable="true" :editable="true" v-model="state.commitDate" type="date" placeholder="选择过账时间" value-format="YYYY-MM-DD"/>
</el-form-item>
</div>
<div class="page-search-btns">
<!-- <el-button type="primary" @click="handleReserve" :disabled="state.button_state" v-loading="state.button_loading">备货</el-button> -->
<el-button type="primary" @click="handleStockOut" :disabled="state.buttonOut_state" v-loading="state.buttonOut_loading">出库</el-button>
</div>
</el-row>
</div>
</template>
<script lang="ts">
export default {
// eslint-disable-next-line vue/multi-word-component-names
name: "shipRequestReserve",
};
</script>
<script lang="ts" setup>
import { reactive, ref, onMounted, toRefs, getCurrentInstance, nextTick } from "vue";
import { ElForm, ElMessageBox, ElTable, ElMessage, ElNotification } from "element-plus";
import { getQueryList, BpelEvent } from '@/api/common';
import { useRouter } from "vue-router";
import { create } from "sortablejs";
import {areAllNotEmpty, FirstInFirstOut, IFTRUE} from '@/utils/CommonUtil'
import exportDataToExcel from "@/utils/export-excel";
import {
AssignShipRequest,
AssignShipRequestByCharge,
DeAssignShipRequest,
UpdateOutQty,
RejectsAndExpCheck,
CompleteShipRequestStockUp
} from '@/api/StockOut'
2025-03-10 13:48:17 +08:00
import { Edit } from "@element-plus/icons-vue/dist/types";
import { bTableHeight } from "../../../composables/calcTableHeight";
import {localStorage} from "@/utils/storage";
import { cals } from '@/utils/cal'
const { tableContainer, tableHeight, updateTableHeight, handleResize } = bTableHeight(400);
const queryFormRef = ref(ElForm);
const operateFormRef = ref(ElForm);
const tableInfo = ref<any>(null)
const formDataRef = ref(ElForm);
const { proxy }: any = getCurrentInstance();
const router = useRouter();
const state: any = reactive({
BQSUM: 0,
SENDSUM: 0,
iIndex: 1,
button_loading3 : false,
button_loading2 : false,
button_loading : false,
buttonOut_loading : false,
rsa: "",
LShipRequestDetailName: '',
LShipType: '',
button_state: false,
buttonOut_state: false,
button_state2: false,
STOCKSELECT: [],
AleardyBooking: false,
IFCompleteStockUp: false,//用于判断是否完成备货
AB: '',
commitDate:'',
ABList: [{ value: 'A', label: 'A' }, { value: 'B', label: 'B' }],
ENDING: '',
INITILATION: '',
ERPLocationList: [] as any,
LocationList: [] as any,
ChangeERPLocation: [],
ChangeLocation: [],
STOCKSELECTLIST: [] as any,
queryParams: {
queryId: "",
version: "",
params: {
SITENAME: 'SDK',//localStorage.getItem("siteName"),
DELIVERYTYPE: "", //移动类型
SUPPLIERNAME: "",
SHIPREQUESTNAME: "",
MATERIALSPECNAME: '',
AREANAME: '',
MATERIALPACKING: '',
DURABLENAME: '',
CHARGE: '',
ERPFACTORYNAME: '',
ERPLOCATION: '',
SDK_ID: '',
PHASE: '',
ERPFACTORY: '',
SHIPREQUESTDETAILNAME: '',
DESCRIPTION: '',
CAREER_ASSISTANCE: '',
},
},
RightqueryParams: {
queryId: "",
version: "",
params: {
SITENAME: 'SDK',//localStorage.getItem("siteName"),
DELIVERYTYPE: "", //移动类型
SUPPLIERNAME: "",
SHIPREQUESTNAME: "",
MATERIALSPECNAME: '',
AREANAME: '',
MATERIALPACKING: '',
DURABLENAME: '',
CHARGE: '',
ERPFACTORYNAME: '',
ERPLOCATION: '',
SDK_ID: '',
PHASE: '',
ERPFACTORY: '',
SHIPREQUESTDETAILNAME: '',
CUSTOMERNO : ''
},
},
ChangeParams: {
header: {
MESSAGENAME: '',
EventUser: localStorage.get('userId') || '10975133',
LANGUAGE: 'Chinese',
Flag: 'LK'//立库标志
},
body: {
SHIPREQUESTNAME: '',
SHIPREQUESTDETAILNAME: '',
SITENAME: 'SDK',
MATERIALPACKINGNAME: '',
objPara: [] as any,
}
},
ReserveParams: {
header: {
MESSAGENAME: '',
LANGUAGE: 'Chinese'
},
body: {
SHIPREQUESTNAME: '',
SITENAME: 'SDK',
SHIPREQUESTTYPE: ''
}
},
operateParams: {
date: new Date(),
},
operateOptions: [] as any, // 操作类型
actNoOptions: [] as any, // 抬头文本
checkResultOptions: [
{
label: "OK",
value: "OK",
},
{
label: "NG",
value: "NG",
},
], // 质检结果
loading: false,
loading2: false,
loadings: true,
userList: [] as any,
ShipList: [] as any,
MaterialPackingList: [] as any,
MaterialPackingUsername: [] as any,
column1: [] as any,
column: [] as any,
column2: [] as any,
column3: [] as any,
column4: [] as any,
LKLocalNameList: [] as any,//立库搬出库位
LKPALLETNAMEList: [] as any,//成品批号/标签
LKTRAYNAMEList: [] as any,//轴心RFID/托盘ID
MaterialPackingList2 : [] as any,
lineRow: [] as any,
IsCheck: 'N'
});
const {IsCheck, BQSUM, SENDSUM,lineRow, iIndex, LKTRAYNAMEList, LKPALLETNAMEList, LKLocalNameList, MaterialPackingUsername, MaterialPackingList, ShipList, rsa, queryParams, loading, loading2,buttonOut_loading,buttonOut_state, userList, column, column1, column2, operateParams, operateOptions, actNoOptions, checkResultOptions } = toRefs(state);
onMounted(() => {
state.column = [
{ header: "工厂", field: "SITENAME", hide: true },
{ header: "行项", field: "SHIPREQUESTDETAILNAME", hide: true },
{ header: "发货单号", field: "SHIPREQUESTNAME", hide: false },
{ header: "发货组织", field: "ERPFACTORYDESC", hide: false },
{ header: "发货仓库", field: "ERPLOCATIONDES", hide: true },
{ header: "接收组织", field: "ERPRECEIVEFACTORYDESC", hide: false },
{ header: "接收仓库", field: "ERPRECEIVELOCATIONDES", hide: true },
{ header: "物料编号", field: "MATERIALSPECNAME", hide: false },
{ header: "品名", field: "DESC_CN", hide: false },
// { header: "物料规格", field: "SDK_ID", hide: false },
{ header: "单位", field: "MATERIALUNIT", hide: false },
{ header: "发货类型", field: "SHIPREQUESTTYPE", hide: false },
{ header: "请求数量", field: "REQUESTQUANTITY", hide: false },
{ header: "绑定数量", field: "ASSIGNEDQUANTITY", hide: false },
{ header: "绑定待发货数量", field: "WAITEQUANTITY", hide: false,},
{ header: "规格", field: "SDK_ID", hide: true },
{ header: "规格", field: "SPECNAME", hide: false },
{ header: "阶段", field: "PHASE", hide: false },
{ header: "业助", field: "CAREER_ASSISTANCE", hide: false },
{ header: "客户", field: "CUSTOMERNO", hide: false },
{ header: "批次", field: "CHARGE", hide: true },
// { header: "物料组", field: "MATERIALGROUP", hide: false },
];
state.column1 = [
{ header: "标签ID", field: "MATERIALPACKINGNAME", hide: false },
{ header: "批次", field: "CHARGE", hide: false },
{ header: "行项", field: "SHIPREQUESTDETAILNAME", hide: true },
{ header: "发货单号", field: "SHIPREQUESTNAME", hide: true },
{ header: "物料编号", field: "MATERIALSPECNAME", hide: false },
{ header: "品名", field: "DESC_CN", hide: false },
{ header: "物料规格", field: "SDK_ID", hide: true },
{ header: "SDK规格", field: "SPECNAME", hide: false },
{ header: "仓库代码", field: "ERPLOCATION", hide: false },
{ header: "仓库名称", field: "ERPLOCATIONDESC", hide: false },
{ header: "货位代码", field: "LOCATIONNAME", hide: false },
{ header: "货位名称", field: "LOCATIONNAMEDESC", hide: false },
// { header: "批次", field: "MAKEDATE", hide: false },
{ header: "数量", field: "MATERIALQUANTITY", hide: false },
{ header: "单位", field: "MATERIALUNIT", hide: false },
// { header: "移动类型", field: "CREATETIME", hide: false },
{ header: "入库日期", field: "RECEIVETIME", hide: false },
{ header: "生产日期", field: "MAKEDATE", hide: false },
{ header: "过期时间", field: "EXPIRINGDATE", hide: false },
];
state.column2 = [
{ header: "标签ID", field: "MATERIALPACKINGNAME", hide: false },
{ header: "批次", field: "CHARGE", hide: false },
{ header: "行项", field: "SHIPREQUESTDETAILNAME", hide: true },
{ header: "物料编号", field: "MATERIALSPECNAME", hide: false },
{ header: "品名", field: "DESC_CN", hide: false },
{ header: "物料规格", field: "SDK_ID", hide: true },
// { header: "物料规格", field: "SPECNAME", hide: false },
{ header: "SDK规格", field: "SPECNAME", hide: false },
{ header: "仓库代码", field: "ERPLOCATION", hide: false },
{ header: "仓库名称", field: "ERPLOCATIONDESC", hide: false },
{ header: "货位代码", field: "LOCATIONNAME", hide: false },
{ header: "货位名称", field: "LOCATIONNAMEDESC", hide: false },
{ header: "物料总数量", field: "MATERIALQUANTITY", hide: false },
// { header: "发货数量", field: "MATERIALQUANTITY2", hide: false },
// { header: "位置", field: "LOCATIONNAME", hide: false },
{ header: "工厂", field: "SITENAME", hide: true },
// { header: "生成时间", field: "CREATETIME", hide: true },
// { header: "物料类型", field: "MATERIALTYPE", hide: false },
// { header: "物料编号", field: "MATERIALSPECNAME", hide: false },
{ header: "生产日期", field: "MAKEDATE", hide: false },
{ header: "过期时间", field: "EXPIRINGDATE", hide: false },
];
var newDate = new Date();
var year = newDate.getFullYear();
var moth = newDate.getMonth() + 1;
if(moth < 10) moth = '0' + moth;
var day = newDate.getDate();
if(day < 10) day = '0' + day;
state.commitDate = year + '-' + moth + '-' + day
updateTableHeight();
window.addEventListener('resize', handleResize);
});
function JudgeMentERPLocation() {
let LOCATION = state.ChangeLocation;
if ( state.MaterialPackingList2 == null) {
state.MaterialPackingList2 = state.MaterialPackingList
}
if (LOCATION != null) {
console.log(state.MaterialPackingList.length)
// let tem = state.MaterialPackingList.filter(item => item.LOCATIONNAME ==LOCATION)
state.MaterialPackingList = state.MaterialPackingList2.filter(item => item.LOCATIONNAME ==LOCATION)
console.log(state.MaterialPackingList.length)
// console.log(tem.length)
} else {
}
}
function GetLocationListForSomeERPLocation(value: any) {
if (!areAllNotEmpty(state.queryParams.params.ERPFACTORY)) {
proxy.$ElMessage.warning('当前还未选择组织');
state.ChangeERPLocation = []
state.ERPLocationList = []
return
}
if (!areAllNotEmpty(state.ChangeERPLocation)) {
return
}
if (!value) {
let ERPLOCATIONList = state.ChangeERPLocation;
getQueryList({
queryId: "GetLocationListForSomeERPLocation",
version: "00001",
params: {
SITENAME: localStorage.get("siteName") || 'SDK',
ERPLOCATION: ERPLOCATIONList.length ? ERPLOCATIONList.join(','): ""
},
})
.then((res: any) => {
state.LocationList = res.data;
state.LocationList.unshift({
STORAGENAME: ''
});
})
.catch(() => { });
}
}
function handleSelectionChange(selection: any) {
console.log('调用了', selection)
state.column3 = selection
}
function handleSelectionChange2(selection: any) {
console.log('调用了', selection)
state.column4 = selection
}
// 更新列
function updateList(col: any) {
state.column = col;
}
function searchFn() {
state.iIndex = 0
handleQuery()
}
function tableRowClassName({ row, rowIndex }) {
2025-03-14 16:35:25 +08:00
// console.log(11,row, rowIndex)
2025-03-10 13:48:17 +08:00
row.iIndex = rowIndex
}
async function handleQuery() {
let flag = true;
if ((state.queryParams.params.SHIPREQUESTNAME != '') && (state.queryParams.params.SHIPREQUESTNAME != null) && (state.queryParams.params.SHIPREQUESTNAME != undefined)) {
// getIsCheckFn({ShipRequestName:state.queryParams.params.SHIPREQUESTNAME});
let {resultObj } :any = await RejectsAndExpCheck({ShipRequestName:state.queryParams.params.SHIPREQUESTNAME});
console.log(resultObj);
state.IsCheck = resultObj;
state.queryParams.queryId = 'GetShipRequestDetailList';
state.queryParams.version = 'Z00052_NEW';
getQueryList(state.queryParams).then((res: any) => {
if (res.data.length > 0) {
state.ShipList = res.data;
if(state.ShipList.length>0)
{
nextTick(() => {
console.log(666,state.ShipList[state.iIndex],state.iIndex)
handle(state.ShipList[state.iIndex],null,null);
})
}
} else {
state.ShipList = [];
state.MaterialPackingList = []
state.MaterialPackingUsername = []
ElMessageBox.alert('搜索结果为空', '提醒框', {
confirmButtonText: 'OK',
})
state.queryParams.params.SHIPREQUESTNAME = ""
}
});
} else {
ElMessageBox.alert('搜索条件不能为空', '提醒框', {
// if you want to disable its autofocus
// autofocus: false,
confirmButtonText: 'OK',
})
}
}
function getIsCheckFn(params: any) {
RejectsAndExpCheck(params).then((res: any) => {
console.log(res.resultObj);
state.IsCheck = res.resultObj;
}).catch((err: any) => {
ElMessageBox.alert('操作失败:' + err.response.data.message, '提醒框', {
confirmButtonText: 'OK',
})
})
}
let tempRow: any = null;
let tempevent: any = null;
let tempcolumn: any = null;
function handle(row: any, event: any, column: any) {
state.lineRow = row;
console.log(44,row,event,column,row.iIndex)
state.iIndex = row.iIndex
tempRow = row;
tempevent = event;
tempcolumn = column;
state.queryParams.queryId = 'GetPackingRow';
state.queryParams.version = 'ZWP007_NEW';
state.queryParams.params.MATERIALSPECNAME = row.MATERIALSPECNAME;
state.queryParams.params.SDK_ID = row.SDK_ID;
state.queryParams.params.ERPLOCATION = row.ERPLOCATION;
state.queryParams.params.ERPFACTORY = row.ERPFACTORY;
state.queryParams.params.PHASE = row.PHASE;
state.queryParams.params.SHIPREQUESTDETAILNAME = row.SHIPREQUESTDETAILNAME;
state.queryParams.params.CAREER_ASSISTANCE = row.CAREER_ASSISTANCE;
2025-04-22 19:33:23 +08:00
state.queryParams.params.ERPRECEIVELOCATION = row.ERPRECEIVELOCATION;
2025-03-10 13:48:17 +08:00
state.LShipRequestDetailName = row.SHIPREQUESTDETAILNAME
state.LShipType = row.SHIPREQUESTTYPE
state.queryParams.params.IsCheck = state.IsCheck
getQueryList(state.queryParams).then((res: any) => {
state.MaterialPackingList = res.data;
state.MaterialPackingList2 = res.data;
});
state.RightqueryParams.queryId = 'GetPackingRow';
state.RightqueryParams.version = 'Z00002_NEW';
state.RightqueryParams.params.MATERIALSPECNAME = row.MATERIALSPECNAME;
state.RightqueryParams.params.SHIPREQUESTNAME = row.SHIPREQUESTNAME;
state.RightqueryParams.params.SDK_ID = row.SDK_ID;
state.RightqueryParams.params.ERPLOCATION = row.ERPLOCATION;
state.RightqueryParams.params.PHASE = row.PHASE;
state.RightqueryParams.params.SHIPREQUESTDETAILNAME = row.SHIPREQUESTDETAILNAME;
2025-04-22 19:33:23 +08:00
state.RightqueryParams.params.ERPRECEIVELOCATION = row.ERPRECEIVELOCATION;
2025-03-10 13:48:17 +08:00
getQueryList(state.RightqueryParams).then((res: any) => {
state.MaterialPackingUsername = res.data;
state.SENDSUM = 0;
state.BQSUM = state.MaterialPackingUsername.length;
state.SENDSUM = state.MaterialPackingUsername.reduce((init: any,current: any)=>{
return (cals.add(init,current.MATERIALQUANTITY2)).toNumber();
},0)
});
state.queryParams.queryId = 'GetLocationList';
state.queryParams.version = 'ZWP007_NEW';
state.queryParams.params.MATERIALSPECNAME = row.MATERIALSPECNAME;
state.queryParams.params.SDK_ID = row.SDK_ID;
state.queryParams.params.ERPLOCATION = row.ERPLOCATION;
state.queryParams.params.ERPFACTORY = row.ERPFACTORY;
state.queryParams.params.PHASE = row.PHASE;
state.queryParams.params.SHIPREQUESTDETAILNAME = row.SHIPREQUESTDETAILNAME;
state.queryParams.params.CAREER_ASSISTANCE = row.CAREER_ASSISTANCE;
state.LShipRequestDetailName = row.SHIPREQUESTDETAILNAME
state.LShipType = row.SHIPREQUESTTYPE
getQueryList(state.queryParams).then((res: any) => {
state.LocationList = res.data;
});
tableInfo.value.setCurrentRow(row)
}
//重写拣配功能。zd.2024.9.10
async function LeftIn() {
if (state.MaterialPackingList.length > 0 && state.column4.length > 0)
{
let boxId ='';
for (const item of state.column4) {
boxId +=(item.MATERIALPACKINGNAME+';');
}
const params = {
materialPackingName: boxId,
user: localStorage.get('userId'),
shipRequestName: state.queryParams.params.SHIPREQUESTNAME,
materialSpecName: state.queryParams.params.MATERIALSPECNAME,
phase: state.lineRow.PHASE,
sdk_id: state.lineRow.SDK_ID,
};
state.loading = true;
AssignShipRequest(params).then((res: any) => {
if (res.success) {
handleQuery();
state.loading = false;
}
else {
ElMessageBox.alert('操作失败:' + res.message, '提醒框', {
confirmButtonText: 'OK',
})
state.loading = false;
}
}).catch((err: any) => {
ElMessageBox.alert('操作失败:' + err.response.data.message, '提醒框', {
confirmButtonText: 'OK',
})
state.loading = false;
})
}
else {
ElMessageBox.alert('提示框', '勾选的数据不能为空!', {
// if you want to disable its autofocus
// autofocus: false,
confirmButtonText: 'OK',
})
}
state.loading = false;
// if (state.MaterialPackingList.length > 0 && state.column4.length > 0) {
// state.loading = true;
// state.ChangeParams.header.MESSAGENAME = 'AssignShipRequestToBoxForSDK';
// state.ChangeParams.body.SHIPREQUESTDETAILNAME = state.queryParams.params.SHIPREQUESTDETAILNAME
// // state.ChangeParams.body.SHIPREQUESTDETAILNAME = "0001"
// state.ChangeParams.body.SHIPREQUESTNAME = state.queryParams.params.SHIPREQUESTNAME
// state.ChangeParams.body.MATERIALQUANTITY = 0
// // 遍历 state.column4将 MATERIALPACKINGNAME 添加到 packingNames 数组中
// state.ChangeParams.body.objPara = []
// for (const item of state.column4) {
// state.ChangeParams.body.objPara.push(item.MATERIALPACKINGNAME);
// state.ChangeParams.body.MATERIALQUANTITY += item.MATERIALQUANTITY;
// }
// if (state.LShipType == '4C') {
// let AllQty = 0;
// for (let i = 0; i < state.ShipList.length; i++) {
// if (state.ShipList[i].SHIPREQUESTDETAILNAME == state.LShipRequestDetailName) {
// AllQty = state.ShipList[i].REQUESTQUANTITY - state.ShipList[i].ASSIGNEDQUANTITY
// break
// }
// }
// let areadryQty = 0
// for (let i = 0; i < state.MaterialPackingUsername.length; i++) {
// areadryQty += parseFloat(state.MaterialPackingUsername[i].MATERIALQUANTITY)
// }
// console.log(AllQty, state.ChangeParams.body.MATERIALQUANTITY, areadryQty)
// if (AllQty < state.ChangeParams.body.MATERIALQUANTITY ) {
// console.log(AllQty + "" + (state.ChangeParams.body.MATERIALQUANTITY + areadryQty))
// ElMessageBox.alert("该明细所需数量为" + AllQty + ",已经绑定了" + areadryQty + "现在的数量" + state.ChangeParams.body.MATERIALQUANTITY + "大于所需数量", "", {
// confirmButtonText: 'OK',
// })
// state.loading = false;
// return
// }
// }
// // 如果 packingNames 数组不为空,则将其转换为一个由“、”分隔的字符串
// if (state.ChangeParams.body.objPara.length > 0) {
// state.ChangeParams.body.MATERIALPACKINGNAME = state.ChangeParams.body.objPara.join(";");
// } else {
// // 如果 packingNames 为空,可以根据需要设置初始值,或者保持为空字符串
// state.ChangeParams.body.MATERIALPACKINGNAME = "";
// }
// await BpelEvent(state.ChangeParams).then((res: any) => {
// if (IFTRUE(res)) {
// handle(tempRow, tempevent, tempcolumn);
// handleQuery();
// state.loading = false;
// } else {
// ElMessageBox.alert(res.data.RETURNCODE + '->' + res.data.RETURNMESSAGE, '', {
// confirmButtonText: 'OK',
// })
// state.loading2 = false;
// }
// })
// .catch(() => {
// state.loading = false;
// });
// } else {
// ElMessageBox.alert('提示框', '备货数据不能为空!', {
// // if you want to disable its autofocus
// // autofocus: false,
// confirmButtonText: 'OK',
// })
// }
// state.loading = false;
}
function clearCharge() {
state.queryParams.params.CHARGE='';
}
async function chargeReserve() {
if (state.MaterialPackingList.length > 0 && state.queryParams.params.CHARGE!='' && state.queryParams.params.CHARGE != null && state.queryParams.params.CHARGE != undefined)
{
// let boxId ='';
// for (const item of state.column4) {
// boxId +=(item.MATERIALPACKINGNAME+';');
// }
let boxId =state.queryParams.params.CHARGE.replace(/\n/g, ';');
const params = {
materialPackingName: boxId,
user: localStorage.get('userId'),
shipRequestName: state.queryParams.params.SHIPREQUESTNAME,
materialSpecName: state.queryParams.params.MATERIALSPECNAME
};
state.loading = true;
AssignShipRequestByCharge(params).then((res: any) => {
if (res.success) {
handleQuery();
state.loading = false;
}
else {
ElMessageBox.alert('操作失败:' + res.message, '提醒框', {
confirmButtonText: 'OK',
})
state.loading = false;
}
}).catch((err: any) => {
ElMessageBox.alert('操作失败:' + err.response.data.message, '提醒框', {
confirmButtonText: 'OK',
})
state.loading = false;
})
}
else {
ElMessageBox.alert('提示框', '指定的批次不能为空!', {
// if you want to disable its autofocus
// autofocus: false,
confirmButtonText: 'OK',
})
}
state.loading = false;
}
function UpdateQty(value : any){
const params = {
materialPackingName: value.MATERIALPACKINGNAME,
materialQuantity2: value.MATERIALQUANTITY2,
user: localStorage.get('userId'),
shipRequestName: state.queryParams.params.SHIPREQUESTNAME,
materialSpecName: state.queryParams.params.MATERIALSPECNAME
};
state.loading = true;
UpdateOutQty(params).then((res: any) => {
if (res.success) {
handleQuery();
state.loading = false;
}
else {
ElMessageBox.alert('操作失败:' + res.message, '提醒框', {
confirmButtonText: 'OK',
})
state.loading = false;
}
}).catch((err: any) => {
ElMessageBox.alert('操作失败:' + err.response.data.message, '提醒框', {
confirmButtonText: 'OK',
})
state.loading = false;
})
}
function selectable(row: any, index: any) {
// if (row.GROUPNO == '1')
// return true;
// else {
// return false
// }
return true
}
function exportExcel() {
state.button_loading3 = true;
state.button_state3 = true;
if ((state.queryParams.params.SHIPREQUESTNAME != '') && (state.queryParams.params.SHIPREQUESTNAME != null) && (state.queryParams.params.SHIPREQUESTNAME != undefined)) {
getQueryList({
queryId: "GetPackingRow",
version: "dc001",
params: {
SHIPREQUESTNAME: state.queryParams.params.SHIPREQUESTNAME
}
}).then((res: any) => {
if (res.data.length > 0) {
exportDataToExcel(res.data, '备货导出' + state.queryParams.params.SHIPREQUESTNAME)
state.button_loading3 = false;
state.button_state3 = false;
} else {
proxy.$ElMessage.warning('当前查询没有数据可以导出');
state.button_loading3 = false;
state.button_state3 = false;
}
});
} else {
ElMessageBox.alert('导出条件不能为空', '提醒框', {
confirmButtonText: 'OK',
})
state.button_loading3 = false;
state.button_state3 = false;
}
}
async function RightIn() {
if (state.column3.length > 0)
{
let boxId ='';
for (const item of state.column3) {
boxId +=(item.MATERIALPACKINGNAME+';');
}
const params = {
materialPackingName: boxId,
user: localStorage.get('userId'),
shipRequestName: state.queryParams.params.SHIPREQUESTNAME,
materialSpecName: state.queryParams.params.MATERIALSPECNAME,
};
state.loading = true;
DeAssignShipRequest(params).then((res: any) => {
if (res.success) {
handleQuery();
state.loading = false;
}
else {
ElMessageBox.alert('操作失败:' + res.message, '提醒框', {
confirmButtonText: 'OK',
})
state.loading = false;
}
}).catch((err: any) => {
ElMessageBox.alert('操作失败:' + err.response.data.message, '提醒框', {
confirmButtonText: 'OK',
})
state.loading = false;
})
}
else {
ElMessageBox.alert('提示框', '勾选的数据不能为空!', {
// if you want to disable its autofocus
// autofocus: false,
confirmButtonText: 'OK',
})
}
state.loading = false;
// if (state.column3.length > 0) {
// state.loading2 = true;
// state.ChangeParams.header.MESSAGENAME = 'DeassignShipRequestFromBox';
// state.ChangeParams.body.SHIPREQUESTDETAILNAME = state.RightqueryParams.params.SHIPREQUESTDETAILNAME
// state.ChangeParams.body.SHIPREQUESTNAME = state.RightqueryParams.params.SHIPREQUESTNAME
// state.ChangeParams.body.MATERIALQUANTITY = 0
// // 遍历 state.column4将 MATERIALPACKINGNAME 添加到 packingNames 数组中
// state.ChangeParams.body.objPara = []
// for (const item of state.column3) {
// state.ChangeParams.body.objPara.push(item.MATERIALPACKINGNAME);
// state.ChangeParams.body.MATERIALQUANTITY += item.MATERIALQUANTITY;
// }
// // 如果 packingNames 数组不为空,则将其转换为一个由“、”分隔的字符串
// if (state.ChangeParams.body.objPara.length > 0) {
// state.ChangeParams.body.MATERIALPACKINGNAME = state.ChangeParams.body.objPara.join(";");
// } else {
// // 如果 packingNames 为空,可以根据需要设置初始值,或者保持为空字符串
// state.ChangeParams.body.MATERIALPACKINGNAME = "";
// }
// await BpelEvent(state.ChangeParams).then((res: any) => {
// if (IFTRUE(res)) {
// handle(tempRow, tempevent, tempcolumn);
// handleQuery();
// state.loading2 = false;
// } else {
// ElMessageBox.alert(res.data.RETURNCODE + '->' + res.data.RETURNMESSAGE, '', {
// confirmButtonText: 'OK',
// })
// state.loading2 = false;
// }
// })
// .catch(() => {
// state.loading2 = false;
// });
// } else {
// ElMessageBox.alert('提示框', '备货数据不能为空!', {
// // if you want to disable its autofocus
// // autofocus: false,
// confirmButtonText: 'OK',
// })
// }
}
function resetQuery() {
queryFormRef.value.resetFields();
handleQuery();
}
function handleReserve() {
state.button_state = true;
state.button_loading = true;
if (state.LShipType == '4C') {
for (let i = 0; i < state.ShipList.length; i++) {
if (state.ShipList[i].REQUESTQUANTITY != state.ShipList[i].ASSIGNEDQUANTITY) {
ElMessageBox.alert("该单据下明细" + state.LShipRequestDetailName + " 所需数量为" + state.ShipList[i].REQUESTQUANTITY + "绑定数量为" + state.ShipList[i].ASSIGNEDQUANTITY + ".不符合要求", "", {
confirmButtonText: 'OK',
})
state.button_state = false;
state.button_loading = false;
return
}
state.button_state = false;
state.button_loading = false;
}
}
if (state.MaterialPackingUsername.length > 0) {
state.loading = true
state.button_state = true
state.button_loading = true;
state.ReserveParams.header.MESSAGENAME = 'ReserveShipRequest'
state.ReserveParams.header.EventUser = localStorage.get('userId')
state.ReserveParams.body.SHIPREQUESTNAME = state.queryParams.params.SHIPREQUESTNAME
state.ReserveParams.body.SITENAME = localStorage.get("siteName") == null ? "SDK" : localStorage.get("siteName");
BpelEvent(state.ReserveParams).then((res: any) => {
if (IFTRUE(res)) {
ElMessageBox.alert("备货成功", '', {
confirmButtonText: 'OK',
})
handle(tempRow, tempevent, tempcolumn);
handleQuery()
state.IFCompleteStockUp = true
state.loading = false
state.button_state = false;
state.button_loading = false;
} else {
ElMessageBox.alert(res.data.RETURNCODE + '->' + res.data.RETURNMESSAGE, '', {
confirmButtonText: 'OK',
})
state.button_state = false;
state.button_loading = false;
}
})
.catch(() => { });
state.loading = false;
state.button_state = false;
state.button_loading = false;
} else {
ElMessageBox.alert("请先选择需要备货的标签", '提示框', {
confirmButtonText: 'OK',
})
}
state.button_state = false;
state.button_loading = false;
}
function handleStockOut() {
if (state.queryParams.params.SHIPREQUESTNAME!='' && state.queryParams.params.SHIPREQUESTNAME!=null && state.queryParams.params.SHIPREQUESTNAME != undefined)
{
2025-04-22 18:57:01 +08:00
// 如果数量不与原数量相等,就数量被修改
let boxList: any[] = [];
2025-04-27 09:59:58 +08:00
// state.MaterialPackingUsername.map((item: any) => {
// if(item.MATERIALQUANTITY != item.MATERIALQUANTITY2) {
// boxList.push({MATERIALPACKINGNAME: item.MATERIALPACKINGNAME, MATERIALQUANTITY2: item.MATERIALQUANTITY2});
// }
// });
2025-04-22 18:57:01 +08:00
2025-03-10 13:48:17 +08:00
const params = {
//materialPackingName: boxId,
2025-04-22 18:57:01 +08:00
boxList: boxList,
2025-03-10 13:48:17 +08:00
user: localStorage.get('userId'),
shipRequestName: state.queryParams.params.SHIPREQUESTNAME,
commitDate: state.commitDate,
remark:state.REMARK,
//materialSpecName: state.queryParams.params.MATERIALSPECNAME
};
//state.loading = true;
state.buttonOut_loading = true;
//state.buttonOut_state = true;
2025-04-22 18:57:01 +08:00
CompleteShipRequestStockUp(params).then((res: any) => {
2025-03-10 13:48:17 +08:00
if (res.success) {
ElMessageBox.alert("出库成功", '', {
confirmButtonText: 'OK',
})
2025-03-10 13:48:17 +08:00
handleQuery();
//state.loading = false;
state.buttonOut_loading = false;
//state.buttonOut_state = false;
}
else {
ElMessageBox.alert('操作失败:' + res.message, '提醒框', {
confirmButtonText: 'OK',
})
//state.loading = false;
//state.buttonOut_state = false;
state.buttonOut_loading = false;
}
}).catch((err: any) => {
ElMessageBox.alert('操作失败:' + err.response.data.message, '提醒框', {
confirmButtonText: 'OK',
})
//state.loading = false;
//state.buttonOut_state = false;
state.buttonOut_loading = false;
})
}
else {
ElMessageBox.alert('提示框', '请输入发货单号', {
// if you want to disable its autofocus
// autofocus: false,
confirmButtonText: 'OK',
})
//state.loading = false;
//state.buttonOut_state = false;
state.buttonOut_loading = false;
}
}
</script>
<style scoped lang="scss">
.operate-bottom {
width: 80px;
height: 28px;
float: right;
margin-top: 20px;
}
.el-form-item__content {
display: flex;
align-items: center;
/* 垂直居中 */
justify-content: center;
/* 水平居中,如果需要的话 */
}
</style>