新增领料转储功能

master
FCD 1 week ago
parent 7d2af0d211
commit e4439acdc4

@ -719,9 +719,17 @@
"navigationStyle": "custom",
"navigationBarTextStyle": "white"
}
},
{
"path": "pages/wms/Raw/ProductionREQ2/index",
"style": {
"navigationBarTitleText": "领料转储",
"navigationStyle": "custom",
"navigationBarTextStyle": "white"
}
}
],
"globalStyle": {

@ -23,52 +23,27 @@
<!-- <u-form-item label="物料编码">
<jPicker sureColor="#ff0000" @bindpicker="bookTypeChange" showKey="value" valKey="value" :val="aimWl.value" :options="materilist" />
</u-form-item> -->
<u-form-item label="标志卡">
<u-search placeholder="请扫描" :focus="twofouces" v-model="Idcard" @search="querybyidcard" :show-action="false"></u-search>
</u-form-item>
</u-form>
<u-form v-show="materilist.length" v-for="(item, index) in materilist" :key="index" :style="{ marginTop: '1rpx', backgroundColor: item.planNumber <= item.outNumber ? '#4eea9b59' : '#ffffff' }" class="form3">
<view class="list">
<view class="row-list">
<view style="width: 25%" class="list-item"> 领料单: </view>
<view style="width: 80%"> {{ item.produceCode }} </view>
<!-- 列表 -->
<u-form class="page-list" v-show="materilist.length">
<view class="page-list-item" v-for="(item, index) in materilist" :key="index">
<lj-list-row label="领料单:" :value="item.produceCode" />
<lj-list-row label="物料编码:" :value="item.materialCode" />
<lj-list-row label="物料名称:" :value="item.materialDesc" />
<view style="display: flex">
<lj-list-row style="width: 50%" label="应出:" :value="item.planNumber" />
<lj-list-row style="width: 50%" label="已出:" :value="item.outNumber" />
</view>
<view class="row-list">
<view style="width: 25%" class="list-item"> 物料编码: </view>
<view style="width: 80%"> {{ item.handlematerialCode }} </view>
</view>
<view class="row-list">
<view style="width: 25%" class="list-item"> 物料名称: </view>
<view style="width: 80%"> {{ item.materialDesc }} </view>
</view>
<view class="row-list">
<view class="row-list-item1">
<view class="list-item"> 应出: </view>
<view> {{ item.planNumber }} </view>
</view>
<view class="row-list-item2">
<view class="list-item"> 已出: </view>
<view> {{ item.outNumber }} </view>
</view>
</view>
<view class="row-list">
<view class="row-list-item1">
<view class="list-item"> 未出: </view>
<view> {{ parseFloat(item.planNumber) - parseFloat(item.outNumber) }} </view>
</view>
<view class="row-list-item2">
<view class="list-item"> 单位: </view>
<view> {{ item.unit }} </view>
</view>
</view>
<view class="row-list">
<view style="width: 25%" class="list-item"> 是否过账: </view>
<jPicker style="border: 2rpx solid; border-radius: 8rpx" @bindpicker="bookTypeChange($event, index)" :disabled="item.planNumber <= item.outNumber ? true : false" sureColor="#ff0000" showKey="label" valKey="value" :val="item.isguozhang.value" :options="reducelist" />
</view>
<view class="row-list">
<view style="width: 25%" class="list-item"> 物料凭证: </view>
<view style="width: 80%"> {{ item.userDefined9 ? item.userDefined9 : '无' }} </view>
<view style="display: flex">
<lj-list-row style="width: 50%" label="未出:" :value="parseFloat(item.planNumber) - parseFloat(item.outNumber)" />
<lj-list-row style="width: 50%" label="单位:" :value="item.unit" />
</view>
<lj-list-row v-if="item.userDefined10 !== '2'" type="picker" label="是否过账:" :disabled="item.userDefined10 === '2'" :value.sync="item.isPost" :pickerOptions="reducelist" />
<lj-list-row v-if="item.userDefined10 === '2'" label="过账状态:" :value="'已过账'" />
<lj-list-row label="物料凭证:" :value="item.userDefined9 || '无'" />
<lj-list-row v-if="item.userDefined10 !== '2'" type="input" label="出账数量" :value.sync="item.qty" />
</view>
</u-form>
</view>
@ -106,7 +81,7 @@
<u-row class="button-bar">
<!-- 确定 -->
<u-col :span="6">
<u-button :disabled="isdisabled" @click="onSubmit" type="primary">确认出库</u-button>
<u-button :disabled="isdisabled" @click="onSubmitV2" type="primary">确认出库</u-button>
</u-col>
<!-- 返回 -->
<u-col :span="6">
@ -121,8 +96,10 @@
import { Component } from 'vue-property-decorator';
import { BasePage } from '@/components/base/page';
import jPicker from '@/components/J-Picker/jPicker.vue';
import model from './model';
import model, {submitReverseMaterialList} from './model';
import { session } from '@/store/modules/session';
import LjListRow from "@/components/lanju/lj-list-row/index.vue";
import {submitTransferMaterialList} from "@/pages/wms/Raw/ProductionREQ2/model";
interface OptionType {
label: string;
value: string;
@ -130,6 +107,7 @@ interface OptionType {
//import { session } from '@/store/modules/session';
@Component({
components: {
LjListRow,
jPicker,
},
})
@ -376,6 +354,55 @@ export default class ProductionREQ extends BasePage {
//this.getlist();
}
}
async onSubmitV2() {
if (this.orderNo == '' || this.orderNo.length == 0) {
(this.$refs.uToast as any).show({
title: '请输入领料单号',
});
return;
}
const list = []
//
//
for (const item of this.materilist){
if (item.isPost + "" === "1"){
list.push(item)
continue;
}
if ( item.qty && parseInt(item.qty) > 0){
list.push(item)
}
}
const data = {
createBy:session.userName,
factoryCode:session.FactoryCode,
orderList:list,
}
submitReverseMaterialList(data).then(res=>{
if (res.code === 200){
uni.showToast({
title: '操作成功!',
mask:true
})
}else {
uni.showToast({
title: '操作失败!',
mask:true
})
}
setTimeout(()=>{
this.query()
},1500)
})
}
mepty() {
this.list = [];
this.materilist = [];

@ -108,3 +108,9 @@ export class ProductionREQ extends VuexModule {
}
export default getModule(ProductionREQ);
export function submitReverseMaterialList(data: any): Promise<any> {
return http.post(url.lanjuwms.raw.ProductionREQ.submitReverseMaterialList, data);
}

@ -0,0 +1,213 @@
<template>
<view class="page-product-receipt">
<!-- 页面头 -->
<page-head title="批量生产领料" />
<!-- 查询条件 -->
<u-form class="queryFrom" ref="queryFrom" label-width="180rpx">
<u-form-item label="领料单">
<u-search placeholder="请扫描" v-model="queryParams.code" @search="query" :show-action="false"></u-search>
</u-form-item>
</u-form>
<!-- 列表 -->
<scroll-view id="list" scroll-y="true" :style="{ height: listHeight + 'px' }" :lower-threshold="50">
<!-- 列表 -->
<u-form class="page-list">
<view class="page-list-item" v-for="item in list" :key="item.id">
<lj-list-row label="领料单:" :value="item.produceCode" />
<lj-list-row label="物料编码:" :value="item.materialCode" />
<lj-list-row label="物料名称:" :value="item.materialDesc" />
<view style="display: flex">
<lj-list-row style="width: 50%" label="应出:" :value="item.planNumber" />
<lj-list-row style="width: 50%" label="已出:" :value="item.outNumber" />
</view>
<view style="display: flex">
<lj-list-row style="width: 50%" label="未出:" :value="parseFloat(item.planNumber) - parseFloat(item.outNumber)" />
<lj-list-row style="width: 50%" label="单位:" :value="item.unit" />
</view>
<lj-list-row v-if="item.userDefined10 !== '2'" type="picker" label="是否过账:" :disabled="item.userDefined10 === '2'" :value.sync="item.isPost" :pickerOptions="pickerOptions" />
<lj-list-row v-if="item.userDefined10 === '2'" label="过账状态:" :value="'已过账'" />
<lj-list-row label="物料凭证:" :value="item.userDefined9 || '无'" />
<lj-list-row v-if="item.userDefined10 !== '2'" type="input" label="出账数量" :value.sync="item.qty" />
</view>
</u-form>
</scroll-view>
<!-- 按钮 -->
<view id="button" class="bottom-bar">
<u-row class="button-bar">
<u-col :span="12">
<u-button type="primary" @click="submit"></u-button>
</u-col>
</u-row>
</view>
</view>
</template>
<script lang="ts">
import {Component} from "vue-property-decorator";
import PageHead from "@/components/lanju/page-head/index.vue";
import {BasePage} from "@/components/base/page";
import LjListRow from "@/components/lanju/lj-list-row/index.vue";
import {session} from "@/store/modules/session";
import {getBatchProductionMaterialList, submitTransferMaterialList} from "@/pages/wms/Raw/ProductionREQ2/model";
interface QueryParams {
code: string;
productDate: string;
type: string;
factoryCode: string;
operator: string;
}
@Component({
components: {LjListRow, PageHead}
})
export default class Index extends BasePage {
queryParams: QueryParams = {
code:undefined,
productDate:undefined,
type:undefined,
factoryCode: session.FactoryCode,
operator: session.userName,
};
listHeight = 500
list = []
pickerOptions: any = [
{
label: '否',
value: '0',
},
{
label: '是',
value: '1',
},
];
onReady() {
//
this.$nextTick(() => {
let buttonTop = 0;
//
const query = uni.createSelectorQuery().in(this);
query
.select('#button')
.boundingClientRect((data) => {
//
buttonTop = data.top;
})
.exec();
//
query
.select('#list')
.boundingClientRect((data) => {
//
const listTop = data.top;
//
this.listHeight = buttonTop - listTop - 10;
})
.exec();
});
}
query(){
if (!this.queryParams.code){
uni.showToast({
title: '请输入领料单号!',
})
return;
}
if (!this.queryParams.code.includes("ZC")){
uni.showToast({
title: '请输入正确的领料单号!',
})
return;
}
const code = this.queryParams.code.split("_")
this.queryParams.productDate = code[1]
this.queryParams.type = code[0]
console.log(this.queryParams)
getBatchProductionMaterialList(this.queryParams).then(res=>{
this.list = res.data
})
}
submit(){
if (!this.queryParams.code){
uni.showToast({
title: '请输入领料单号!',
})
return;
}
if (!this.queryParams.code.includes("ZC")){
uni.showToast({
title: '请输入正确的领料单号!',
})
return;
}
const list = []
//
//
for (const item of this.list){
if (item.isPost + "" === "1"){
list.push(item)
continue;
}
if ( item.qty && parseInt(item.qty) > 0){
list.push(item)
}
}
const data = {
createBy:session.userName,
factoryCode:session.FactoryCode,
orderList:list,
}
submitTransferMaterialList(data).then(res=>{
if (res.code === 200){
uni.showToast({
title: '操作成功!',
mask:true
})
}else {
uni.showToast({
title: '操作失败!',
mask:true
})
}
setTimeout(()=>{
this.query()
},1500)
})
}
}
</script>
<style scoped lang="scss">
</style>

@ -0,0 +1,14 @@
import http from '@/utils/request';
import { url } from '@/utils/url';
export function getBatchProductionMaterialList(data: any): Promise<any> {
return http.get(url.lanjuwms.raw.ProductionREQ2.getBatchProductionMaterialList, {
params: data,
});
}
export function submitTransferMaterialList(data: any): Promise<any> {
return http.post(url.lanjuwms.raw.ProductionREQ2.submitTransferMaterialList, data);
}

@ -1,12 +1,17 @@
/* eslint-disable @typescript-eslint/no-unused-vars */
const qianzhuione = '/dev-api'; // '/prod-api'生产环境 // '/dev-api'开发环境是调后端本地时使用
// const qianzhuione = '/prod-api';
let qianzhuione = '/prod-api';
if (process.env.NODE_ENV === 'development') {
console.log('开发环境');
qianzhuione = '/dev-api';
}
export const url = {
wmspda: {
system: {
test: '/wmspda/system/test',
login: qianzhuione + '/auth/login',
getInfo: qianzhuione + '/system/user/mobileGetInfo',
getLastApkVersion: qianzhuione + '/system/apkFile/getLastApkVersion'
},
},
sys: {
@ -173,6 +178,11 @@ export const url = {
ProductionMaterialRequisitionSC: qianzhuione + '/wms/WmsToWCSmission/ProductionMaterialRequisitionSC',
NewConMaterialOutSC: qianzhuione + '/wms/WmsToWCSmission/NewConMaterialOutSC',
NewConMaterialOutSCNew: qianzhuione + '/wms/WmsToWCSmission/NewConMaterialOutSCNew',
submitReverseMaterialList: qianzhuione + '/wms/rawMaterialOut/submitReverseList',
},
ProductionREQ2: {
getBatchProductionMaterialList: qianzhuione + '/wms/rawMaterialOut/transferMaterialList',
submitTransferMaterialList: qianzhuione + '/wms/rawMaterialOut/submitTransferList',
},
ReturnMaterials: {
listReturnSC: qianzhuione + '/wms/WmsToWCSmission/listReturnSC',

Loading…
Cancel
Save