427 lines
15 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<div class="vue-element-page-wrap" ref="tableContainer">
<el-row class="page-search" justify="space-between" align="middle">
<el-form ref="queryFormRef" :model="queryParams" :inline="true">
<el-row :gutter="20">
<el-col :span="5">
<el-form-item label="入库单" prop="queryParams.params">
<el-Input v-model="state.queryParams.params.RECEIVEREQUESTNAME" placeholder="到货单" @keydown.enter.prevent = "handleQuery"clearable />
</el-form-item>
</el-col>
</el-row>
</el-form>
<div class="page-search-btns">
<el-button type="primary" @click="addDeliveryNote">新增到货单</el-button>
<el-button type="primary" @click="handleQuery">搜索</el-button>
</div>
</el-row>
<div class="vue-element-page-table">
<div class="page-table-operate">
<div class="page-table-title">
<span>入库单详细信息</span>
</div>
<div class="page-table-operateBtns">
<el-popover :persistent="false" placement="right" popper-class="config-table-wrap" trigger="click">
<template #reference>
<el-button class="operateBtns-setting">
<svg-icon icon-class="table_title" width="16px" height="16px" />
</el-button>
</template>
<ConfigTable :list="column" @updateList="updateList" />
</el-popover>
</div>
</div>
<!-- <el-table :height="tableHeight" border v-loading="loading" :data="state.MATERIALRECEIVEACT" highlight-current-row row-key="id"
style="width: 100%" @row-click="handle">-->
<el-table :height="tableHeight" border v-loading="loading" :data="state.MATERIALRECEIVEACT" highlight-current-row row-key="id"
style="width: 100%">
<el-table-column prop="ERPFACTORY" fixed="left" label="库存组织" width="100"></el-table-column>
<el-table-column prop="ERPFACTORY2" label="库存组织" width="100"></el-table-column>
<!-- <el-table-column prop="RECEIVEREQUESTNAME" label="到货单" width="100"></el-table-column>-->
<!-- <el-table-column prop="RECEIVEREQUESTDETAILNAME" label="到货单明细" width="80"></el-table-column>-->
<el-table-column prop="MATERIALSPECNAME" label="物料编号" width="100"></el-table-column>
<el-table-column prop="DESC_CN" label="物料品名" width="80"></el-table-column>
<el-table-column prop="MATERIALUNIT" label="单位" width="80"></el-table-column>
<el-table-column prop="MATERIALUNITDESC" label="单位描述" width="80"></el-table-column>
<el-table-column prop="DESCRPTION" label="物料规格" width="80"></el-table-column>
<el-table-column prop="REQUESTQUANTITY" label="订单数量" width="80"></el-table-column>
<el-table-column prop="RECEIVEDQUANTITY" label="实收数量" width="80"></el-table-column>
<el-table-column prop="THISACCEPTNUMBER" label="本次接收数量" width="180">
<template #default="scope">
<el-input v-model="scope.row.THISACCEPTNUMBER" min = 0 type =number style="width: 170px">
</el-input>
</template>
</el-table-column>
<el-table-column prop="ERPLOCATION" label="仓库" width="180">
<template #default="scope">
<!-- <el-select v-model="scope.row.ERPLOCATION" placeholder="选择仓库" style="width: 170px"
default-first-option @focus="getStorageSpec(scope.row.ERPLOCATION)" filterable >-->
<el-select v-model="scope.row.ERPLOCATION" placeholder="选择仓库" style="width: 170px"
default-first-option filterable @change="getStorageSpec">
<el-option v-for="item in state.ERPLocationList" :key="item.ENUMVALUE" :label="item.DESCRIPTION"
:value="item.ENUMVALUE" />
</el-select>
</template>
</el-table-column>
<!-- <el-table-column prop="ERPLOCATIONDESC" label="库位(CN)" width="180"></el-table-column>-->
<el-table-column prop="LOCATIONNAME" label="货位" width="180">
<template #default="scope">
<!-- <el-select v-model="scope.row.LOCATIONNAME" placeholder="选择库位" style="width: 170px" @focus="getStorageSpec(scope.row.ERPLOCATION)"
default-first-option filterable >-->
<el-select v-model="scope.row.LOCATIONNAME" placeholder="选择库位" style="width: 170px"
default-first-option filterable >
<el-option v-for="item in state.POCreateLocationList" :key="item.STORAGENAME" :label="item.DESCRIPTION"
:value="item.STORAGENAME" />
</el-select>
</template>
</el-table-column>
</el-table>
</div>
<div class="vue-element-page-table">
<el-row class="page-search" justify="space-between" align="middle">
<el-form ref="operateFormRef" :model="operateParams" :inline="true">
<el-row :gutter="20">
<el-col :span = "4">
<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>
</el-col>
<el-col :span="8">
<el-Input v-model="state.OpCode" :disabled = false readonly />
</el-col>
<el-col :span="3">
<el-button type="primary" @click="sendToERP" :disabled="state.button_state" v-loading="state.button_loading">入库</el-button>
</el-col>
</el-row>
</el-form>
</el-row>
</div>
<drawer v-if="showDeliveryDrawer" v-model="showDeliveryDrawer" @refresh="refresh" :delivery-type="'02'"/>
</div>
</template>
<script lang="ts">
export default {
name: "NoPoStockIn",
};
</script>
<script lang="ts" setup>
import { reactive, ref, onMounted, toRefs, getCurrentInstance, nextTick } from "vue";
import { ElForm, ElMessageBox, ElTable } from "element-plus";
import { BpelEvent, getQueryList } from "@/api/common";
import { useRoute } from 'vue-router'
import { localStorage } from "@/utils/storage";
import { IFTRUE, areAllNotEmpty, msToDate } from "@/utils/CommonUtil"
import { NoChargeStockIn } from '@/api/StockIn'
import {getOpCode} from "@/api/opcode";
import { bTableHeight } from "../../../composables/calcTableHeight";
import Drawer from '@/views/stockIn/delivery/drawer.vue'
import { getStoreDetail } from '@/api/delivery'
import request from '@/utils/request'
const { tableContainer, tableHeight, updateTableHeight, handleResize } = bTableHeight(220);
const route = useRoute()
const queryFormRef = ref(ElForm);
const operateFormRef = ref(ElForm);
const formDataRef = ref(ElForm);
const { proxy }: any = getCurrentInstance();
const state = reactive({
ERPFACTORY: '',
orgNo:'',
commitDate:'',
rsa: "",
loadings: false,
disabledss: false,
InputState: true,
RealERPLocation: [] as any,//用于存储实际查询到仓库
RealLocation: [] as any,//用于存储实际查询到库位
POCreateLocationList: [] as any,
UnitList: [] as any,
ERPLocationList: [] as any,
button_state: false,
MATERIALRECEIVEACT: [] as any,
ReceiveACTList: [] as any,
showDeliveryDrawer: false,
queryParams: {
queryId: "",
version: "",
params: {
//SITENAME: localStorage.get("siteName"),
SITENAME: 'SDK',
RECEIVEREQUESTNAME: "",
deliveryType: '02'
},
},
ChangeParams: {
header: {
MESSAGENAME: '',
LANGUAGE: 'Chinese',
EventUser: localStorage.get('userId')
},
body: {
RECEIVETIME: '',//过账时间
SITENAME: localStorage.get("siteName") == null ? "SDK" : localStorage.get("siteName"),
RECEIVEACTNO: '',
RECEIVEREQUESTNAME: '',
}
},
operateParams: {
date: new Date()
},
OpCode : "",
loading: false,
button_loading: false,
userList: [] as any,
column: [] as any,
});
const { ERPFACTORY, MATERIALRECEIVEACT, rsa, showDeliveryDrawer, queryParams, loading, button_loading, userList, column, operateParams } = toRefs(state);
onMounted(() =>{
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
// state.column = [
// { header: "库存组织", field: "ERPFACTORY", hide: true },
// { header: "库存组织", field: "ERPFACTORY2", hide: false },
// { header: "到货单", field: "RECEIVEREQUESTNAME", hide: false },
// { header: "到货单明细", field: "RECEIVEREQUESTDETAILNAME", hide: false },
// { header: "物料编号", field: "MATERIALSPECNAME", hide: false },
// { header: "物料品名", field: "DESC_CN", hide: false },
// { header: "单位", field: "MATERIALUNIT", hide: false },
// { header: "单位描述", field: "MATERIALUNITDESC", hide: false },
// { header: "规格", field: "DESCRPTION", hide: false },
// { header: "订单数量", field: "REQUESTQUANTITY", hide: false },
// { header: "实收数量", field: "RECEIVEDQUANTITY", hide: false, },
// { header: "仓库", field: "ERPLOCATION", hide: true, text: true },
// { header: "货位", field: "LOCATIONNAME", hide: true, display: true },
// { header: "本次接收数量", field: "ThisAcceptNumber", hide: true, time: true },
// ];
updateTableHeight();
window.addEventListener('resize', handleResize);
let pwd: any = localStorage.get('remeberPwd');
// state.orgNo = JSON.parse(pwd).orgNo;
state.ERPFACTORY = JSON.parse(pwd)?.orgNo;
});
//查询所有的入库单
function SelectReceiveAct() {
state.queryParams.queryId = 'GetNormalReceiveActNoList'
state.queryParams.version = 'H0002'
getQueryList(state.queryParams).then((res: any) => {
state.ReceiveACTList = res.data
})
}
// 新增到货单
function addDeliveryNote() {
state.showDeliveryDrawer = true
}
// 创建到货单后刷新页面
function refresh(data:any) {
state.queryParams.params.RECEIVEREQUESTNAME = data
state.showDeliveryDrawer = false
handleQuery()
}
// 更新列
function updateList(col: any) {
state.column = col;
}
function handleQuery() {
state.InputState = true
state.queryParams.queryId = 'GetNoBatchPOStockIn'
state.queryParams.version = '00001'
state.MATERIALRECEIVEACT = []
if(state.queryParams.params.RECEIVEREQUESTNAME == ''){
ElMessageBox.alert('输入查询条件', '提醒框', {
confirmButtonText: 'OK',
})
return
}
getStoreDetail(state.queryParams).then((res: any) => {
if (res.resultObj) {
// 加载库位
if (res.resultObj.length > 0) {
getERPLocation()
//getStorageSpec(res.resultObj[0].ERPFACTORY)
}
state.MATERIALRECEIVEACT = res.resultObj
} else {
ElMessageBox.alert('查无数据', '提醒框', {
confirmButtonText: 'OK',
})
}
}).catch((error: any) => {
ElMessageBox.alert(error.message, '提醒框', {
confirmButtonText: 'OK',
})
})
}
function sendToERP() {
state.button_loading=true
state.loading=true
console.log(state.button_loading);
console.log(state.loading);
console.log(state.commitDate)
if(state.commitDate == null){
ElMessageBox.alert('过账时间不可清空', {
confirmButtonText: 'OK',
})
return;
}
getOpCode (
{
opcode : state.OpCode,
user: localStorage.get('userId'),
}
).then((res: any) => {
console.log(res.resultObj)
state.OpCode = res.resultObj
let pattern = new RegExp("[\u4E00-\u9FA5]+");
for (let i = 0; i < state.MATERIALRECEIVEACT.length; i++) {
console.log(areAllNotEmpty(state.MATERIALRECEIVEACT[i].LOCATIONNAME), state.RealERPLocation[i])
if (pattern.test(state.MATERIALRECEIVEACT[i].ERPLOCATION || (!areAllNotEmpty(state.MATERIALRECEIVEACT[i].LOCATIONNAME)))) {
state.MATERIALRECEIVEACT[i].LOCATIONNAME = state.RealLocation[i] == null ? "" : state.RealLocation[i]
state.MATERIALRECEIVEACT[i].ERPLOCATION = state.RealERPLocation[i] == null ? "" : state.RealERPLocation[i]
}
}
console.log(state.MATERIALRECEIVEACT)
NoChargeStockIn({
commitDate : state.commitDate,
USER : localStorage.get("userId"),
SITENAME: localStorage.get('siteName') || 'SDK',
RECEIVEREQUESTNAME: state.queryParams.params.RECEIVEREQUESTNAME,
BOXLIST: {
...state.MATERIALRECEIVEACT
}
}).then((res: any) => {
if (res.success) {
console.log(res.message)
state.OpCode = "",
ElMessageBox.alert('入库成功', '提醒框', {
confirmButtonText: 'OK',
})
state.button_loading = false
state.loading = false
handleQuery()
} else {
ElMessageBox.alert('入库失败:' + res.message, '提醒框', {
confirmButtonText: 'OK',
})
state.button_loading = false
state.loading = false
}
}).catch((err: any) => {
console.log(res.message)
ElMessageBox.alert('入库失败' + err.response.data.message, '提醒框', {
confirmButtonText: 'OK',
})
state.button_loading = false
state.loading = false
})
})
}
function handle(row: any, event: any, column: any) {
if (areAllNotEmpty(row.ERPFACTORY)) {
getERPLocation(row.ERPFACTORY)
} else {
ElMessageBox.alert("该明细下组织为空!", '警示框', {
confirmButtonText: 'OK',
})
}
if (areAllNotEmpty(row.ERPLOCATION)){
getStorageSpec(row.ERPLOCATION)
} else {
ElMessageBox.alert("该仓库下货位为空!", '警示框', {
confirmButtonText: 'OK',
})
}
}
/**************************************************公共方法************************************************/
function formatDate(date: any) {
var year = date.getFullYear();
// 注意JavaScript中的月份是从0开始的所以需要+1
var month = ("0" + (date.getMonth() + 1)).slice(-2);
// 同样日期也是从1开始的但是我们需要检查它是否小于10并在前面添加0如果需要
var day = ("0" + date.getDate()).slice(-2);
// 拼接字符串
return year + "-" + month + "-" + day;
}
function getStorageSpec(value: any) {
/*state.POCreateLocationList = []
getQueryList({
queryId: "GetLocationForCreatePO",
version: "00002",
params: {
SITENAME: "SDK",
//ERPLOCATION: value
} as any,
}).then((res: any) => {
state.POCreateLocationList = res.data
})*/
let erpLocation = JSON.parse(localStorage.get('orgNo'));
request({
url: '/api/api/storage/getLocationNameForERPLocation',
method: 'post',
data: {
erpLocation: erpLocation,
SITENAME: 'SDK',
},
}).then((res: any) => {
state.POCreateLocationList = res.resultObj;
});
}
function getERPLocation() {
let erpLocation = JSON.parse(localStorage.get('orgNo'));
getQueryList({
queryId: "GetErpLocationList",
version: "WEB00001",
params: {
SITENAME: localStorage.get('siteName') || 'SDK',
ERPFACTORYNAME: erpLocation,//PO
} as any,
}).then((res: any) => {
state.ERPLocationList = res.data
})
}
</script>
<style scoped lang="scss">
.el-overlay.userRoleModel {}
.operate-bottom {
width: 80px;
height: 28px;
float: right;
margin-top: 20px;
}
</style>