原材料领用界面重构 && 原材料报废界面重构

master
hou 4 years ago
parent 88fd0d77b3
commit 4487479a25

@ -393,6 +393,7 @@ export default {
Warehouse_Tip8: '请输入成本中心',
Warehouse_Tip9: '操作成功',
DocumentNumber: '文件号',
fileNumber: '请输入文件号',
Warehouse_Tip10: '请选择sap库存地点',
Warehouse_Tip11: '该单号不存在或已经操作完成',
Warehouse_TotalNumber: '总数',

@ -331,6 +331,7 @@ export default {
product_item3: 'SFG Air Conditioner / Washing Machine Offline',
product_item4: 'SFG Door Body Online',
product_item5: 'SFG Box Body Online',
fileNumber: 'Please enter the file number',
//成品下线
product_Location: 'Loc',

@ -51,12 +51,18 @@ export default class stoOutboundDom extends BasePage {
barCode: any = '';
scanAmount: number = 0;
retreatNum: number = 0;
onReady() {
async onReady() {
let code = sessionStorage.getItem('SweepCode');
this.order3 = JSON.parse(code);
this.model.materielList.forEach((item: any) => {
this.scanAmount += parseFloat(item.outAmount);
});
let params = {
nxOutCode: this.order3,
loginName: session.loginName,
factoryCode: session.factoryCode,
};
await this.model.queryAmount(params);
}
async BackSweep() {
if (!this.barCode) {
@ -79,12 +85,12 @@ export default class stoOutboundDom extends BasePage {
icon: 'none',
title: this.$t('message.succeeded') as string,
});
}
this.barCode = '';
this.scanAmount -= 1;
this.retreatNum += 1;
}
}
}
</script>
<style lang="scss" scoped>
.page-raw-returning {

@ -198,6 +198,13 @@ export class ReturningModule extends VuexModule {
const code = res.code;
return { code };
}
//退扫查询接口
@MutationAction
async queryAmount(params: any) {
const res: any = await http.post(url.outbound.stoOutbound.queryAmount, params);
console.log('退扫>>>>>>>>>>>>>>>>>>>>>>>>.', res);
return {};
}
}
export default getModule(ReturningModule);

@ -1,27 +1,13 @@
<template>
<view class="page-kan-dan-detail">
<view
class="header"
:style="{ backgroundColor: `rgba(23, 83, 234, ${scrollTop / 100})` }"
>
<view class="header" :style="{ backgroundColor: `rgba(23, 83, 234, ${scrollTop / 100})` }">
<view class="left">
<u-icon class="icon" name="arrow-left" @click="uni.navigateBack()" />
</view>
<view class="title">{{
$t("message.borrow_CollectionAndBorrowingDetails")
}}</view>
<view class="title">{{ $t('message.borrow_CollectionAndBorrowingDetails') }}</view>
<view class="right"></view>
</view>
<wyb-table
class="table"
ref="table"
width="100%"
enable-check="multiple"
show-left-and-right-border
:headers="headers"
:contents="model.orderInInfoList"
:show-vert-border="false"
/>
<wyb-table class="table" ref="table" width="100%" enable-check="multiple" show-left-and-right-border :headers="headers" :contents="model.orderInInfoList" :show-vert-border="false" />
<view class="bottom-bar">
<!-- <view class="extra">
<u-row>
@ -44,14 +30,10 @@
<view class="container">
<u-row>
<u-col :span="6">
<u-button type="primary" @click="Confirm">{{
$t("message.dn_Confirm")
}}</u-button>
<u-button type="primary" @click="Confirm">{{ $t('message.dn_Confirm') }}</u-button>
</u-col>
<u-col :span="6">
<u-button type="error" @click="uni.navigateBack({ delta: 1 })">{{
$t("message.po_Return")
}}</u-button>
<u-button type="error" @click="uni.navigateBack({ delta: 1 })">{{ $t('message.po_Return') }}</u-button>
</u-col>
</u-row>
</view>
@ -60,18 +42,18 @@
</template>
<script lang="ts">
import { Component } from "vue-property-decorator";
import { BasePage } from "@/components/base/page";
import model from "./model";
import { session } from "@/store/modules/session";
import { Component } from 'vue-property-decorator';
import { BasePage } from '@/components/base/page';
import model from './model';
import { session } from '@/store/modules/session';
// import { order, OrderDetail } from '@/pages/raw/warehouse/transfer/model';
// import { auth } from '@/store/modules/auth';
// import { pick, omit, cloneDeep } from 'lodash/fp';
import { headers } from "./config";
import { headers } from './config';
@Component
export default class KanDanHandOverDetails extends BasePage {
order = "";
order = '';
headers = headers;
/**
@ -88,15 +70,15 @@ export default class KanDanHandOverDetails extends BasePage {
});
if (orderlist.length == 0) {
uni.showToast({
icon: "none",
title: "请先选中要移库的数据" as any,
icon: 'none',
title: '请先选中要移库的数据' as any,
});
return;
}
orderlist.forEach((item: any) => {
item.type = "1";
item.type = '1';
item.keepBy = session.loginName;
item.orderType = "2";
item.orderType = '2';
});
await model.onTakeoutConfirm(orderlist);
setTimeout(() => {
@ -108,8 +90,7 @@ export default class KanDanHandOverDetails extends BasePage {
<style lang="scss" scoped>
.page-kan-dan-detail {
background: #f2f2f2
linear-gradient(0deg, #f2f2f2 0%, #4a78ea 51%, #1753ea 100%) no-repeat;
background: #f2f2f2 linear-gradient(0deg, #f2f2f2 0%, #4a78ea 51%, #1753ea 100%) no-repeat;
background-size: 100% 600rpx;
padding: 118rpx 30rpx 162rpx;
min-height: 100%;

@ -8,20 +8,46 @@
<view class="right"></view>
</view>
<u-form class="form" label-width="130rpx">
<view class="title">{{ $t('message.Warehouse_QueryCriteria') }}</view>
<u-form-item :required="true" :label="this.$t('message.Warehouse_OrderNo')">
<u-input v-model="order3" :placeholder="this.$t('message.po_PleaseInput')" />
<!-- 单号 -->
<view class="single">
<view class="single-left">
<view>{{ $t('message.CommissionedSingleNumber') }}</view>
<u-search :placeholder="$t('message.Commission_tips1')" v-model="order3" @search="query" :show-action="false"></u-search>
</view>
<view class="single-right">
<u-button type="primary" @click="query">{{ $t('message.Query') }}</u-button>
</view>
</view>
<!-- 物料号 -->
<u-form-item :label="$t('message.po_MaterielNo')">
<jPicker sureColor="#ff0000" style="width: 260rpx" @bindpicker="materialChoice" showKey="value" valKey="value" :val="wl.value" class="search" :options="MaterialList" />
</u-form-item>
<!-- 物料描述 -->
<u-form-item :label="$t('message.po_MaterielDes')">
<u-input :disabled="true" v-model="Some.productDescZh" placeholder="" style="overflow: hidden" />
</u-form-item>
<!-- 数量 -->
<u-form-item :label="$t('message.Summary_Number')">
<u-input :disabled="true" v-model="Some.qty" placeholder="" />
</u-form-item>
<!-- 原库位 -->
<u-form-item :label="$t('message.Warehouse_OriginalLocation')">
<u-input :disabled="true" v-model="Some.originWl" placeholder="" />
</u-form-item>
<!-- 成本中心 -->
<u-form-item :label="$t('message.product_costCenter')">
<u-input :disabled="true" v-model="Some.costCenter" placeholder="" />
</u-form-item>
<!-- 文件号 -->
<u-form-item :label="$t('message.DocumentNumber')">
<u-input v-model="Some.fileNo" placeholder="" />
</u-form-item>
<u-row class="button-bar">
<u-col :span="4">
<u-button type="error" @click="uni.navigateBack()">{{
$t('message.po_Return')
}}</u-button>
<u-col :span="6">
<u-button type="error" @click="uni.navigateBack()">{{ $t('message.po_Return') }}</u-button>
</u-col>
<u-col :span="8">
<u-button type="primary" @click="submit"
>{{ $t('message.po_Continue') }}
</u-button></u-col
<u-col :span="6">
<u-button type="primary" @click="submit">{{ $t('message.InventoryFinish') }} </u-button></u-col
>
</u-row>
</u-form>
@ -32,26 +58,80 @@
import { Component } from 'vue-property-decorator';
import { BasePage } from '@/components/base/page';
import model from './model';
import { page } from '@/utils/page';
@Component
import jPicker from '@/components/J-Picker/jPicker.vue';
import { session } from '@/store/modules/session';
@Component({
components: {
jPicker,
},
})
export default class KanDanHandOver extends BasePage {
//
order3 = '';
/**
* 页面Module
*/
model = model;
async submit() {
wl: any = {};
Some: any = {};
MaterialList: any = [];
//
async query() {
if (this.order3 === '') {
uni.showToast({ icon: 'none', title: this.$t('message.borrow_Tip') as string });
uni.showToast({ icon: 'none', title: this.$t('message.Commission_tips1') as string });
return;
} else {
await this.model.takeLYOrder({
order3: this.order3,
});
uni.navigateTo({ url: page.raw.warehouse.rowCollect.details });
if (this.model.code == '1') {
uni.showToast({ icon: 'none', title: this.$t('message.successful') as string });
this.model.orderInInfoList.forEach((item: any) => {
item.fileNo = '';
let arr: any = {
label: item.productCode,
value: item.productCode,
};
this.MaterialList.push(arr);
});
this.Some = this.model.orderInInfoList[0];
this.wl = this.MaterialList[0];
}
}
}
//
materialChoice(e: any) {
this.wl = e.pickerName;
this.model.orderInInfoList.forEach((item: any) => {
if (item.productCode == e.pickerName.value) {
this.Some = item;
}
});
}
//
async submit() {
if (this.order3 === '') {
uni.showToast({ icon: 'none', title: this.$t('message.Commission_tips1') as string });
return;
}
if (!this.Some) {
uni.showToast({ icon: 'none', title: this.$t('message.Warehouse_Tip5') as string });
return;
}
if (this.Some.fileNo == '' || this.Some.fileNo == null || this.Some.fileNo == undefined) {
uni.showToast({ icon: 'none', title: this.$t('message.fileNumber') as string });
return;
}
let orderlist = [];
this.Some.type = '1';
this.Some.keepBy = session.loginName;
this.Some.orderType = '2';
orderlist.push(this.Some);
await model.onTakeoutConfirm(orderlist);
if (this.model.code == '1') {
uni.showToast({ icon: 'none', title: this.$t('message.success') as string });
this.Some = {};
this.Some.fileNo = ' ';
this.wl = {};
this.order3 = '';
this.MaterialList = [];
}
}
}
@ -99,25 +179,56 @@ export default class KanDanHandOver extends BasePage {
border-radius: 10rpx;
box-shadow: 0 0 20rpx 0 rgba(128, 128, 128, 0.2);
// .u-form-item {
// line-height: 35rpx;
// background-color: #f7f6fb;
// padding: 10rpx 30rpx;
// border-radius: 8rpx;
// &:after {
// border-bottom-width: 0;
// }
// }
.u-form-item {
padding: 30rpx 0;
line-height: 35rpx;
background-color: #f7f6fb;
padding: 10rpx 30rpx;
border-radius: 8rpx;
&:after {
border-bottom-width: 0;
}
.single {
width: 100%;
height: 100rpx;
display: flex;
.single-left {
width: 80%;
height: 100%;
display: flex;
view {
width: 110rpx;
height: 100%;
line-height: 100rpx;
}
}
.single-right {
button {
margin-top: 15rpx;
width: 150rpx;
height: 70rpx;
}
}
}
.title {
margin-bottom: 40rpx;
color: #1a1a1a;
font-size: 30rpx;
font-weight: 500;
}
.button-bar {
margin: 40rpx -10rpx 0;
position: fixed;
bottom: 0;
left: 0;
right: 0;
z-index: 99;
background: #ffffff;
box-shadow: 0 1rpx 20rpx 0 rgba(128, 128, 128, 0.2);
padding: 20rpx;
}
}
}

@ -37,6 +37,7 @@ export class rowCollect extends VuexModule {
*
*/
orderInInfoList: OrderInInfo[] = [];
code: any = '';
/**
*
*/
@ -58,8 +59,9 @@ export class rowCollect extends VuexModule {
loginName: session.loginName,
});
const orderInInfoList = records.data.records;
const code = records.code;
console.log('获取来的数据', orderInInfoList);
return { orderInInfoList };
return { orderInInfoList, code };
} catch {
uni.showToast({ icon: 'none', title: vm.$t('message.Warehouse_Tip11') as any });
}
@ -68,18 +70,8 @@ export class rowCollect extends VuexModule {
@MutationAction
async onTakeoutConfirm(list: any) {
const records: any = await http.post(url.warehouse.rowTransfer.commit, list);
if (records.code == 1) {
// uni.showToast({ icon: 'none', title: vm.$t('message.Warehouse_Tip9') as any });
uni.showToast({
icon: 'success',
title: 'success',
});
// uni.navigateTo({ url: page.raw.warehouse.index });
// setTimeout(() => {
// uni.navigateTo({ url: page.raw.warehouse.rowCollect.index });
// }, 2000);
}
return {};
const code = records.code;
return { code };
}
}

@ -8,20 +8,50 @@
<view class="right"></view>
</view>
<u-form class="form" label-width="130rpx">
<view class="title">{{ $t('message.Warehouse_QueryCriteria') }}</view>
<u-form-item :required="true" :label="this.$t('message.Warehouse_OrderNo')">
<u-input v-model="order3" :placeholder="this.$t('message.po_PleaseInput')" />
<!-- 单号 -->
<view class="single">
<view class="single-left">
<view>{{ $t('message.CommissionedSingleNumber') }}</view>
<u-search :placeholder="$t('message.Commission_tips1')" v-model="order3" @search="query" :show-action="false"></u-search>
</view>
<view class="single-right">
<u-button type="primary" @click="query">{{ $t('message.Query') }}</u-button>
</view>
</view>
<!-- 物料号 -->
<u-form-item :label="$t('message.po_MaterielNo')">
<jPicker sureColor="#ff0000" style="width: 260rpx" @bindpicker="materialChoice" showKey="value" valKey="value" :val="wl.value" class="search" :options="MaterialList" />
</u-form-item>
<!-- 物料描述 -->
<u-form-item :label="$t('message.po_MaterielDes')">
<u-input :disabled="true" v-model="Some.productDescZh" placeholder="" style="overflow: hidden" />
</u-form-item>
<!-- 数量 -->
<u-form-item :label="$t('message.Summary_Number')">
<u-input :disabled="true" v-model="Some.qty" placeholder="" />
</u-form-item>
<!-- 原库位 -->
<u-form-item :label="$t('message.Warehouse_OriginalLocation')">
<u-input :disabled="true" v-model="Some.originWl" placeholder="" />
</u-form-item>
<!-- 目标库位 -->
<u-form-item :label="$t('message.Warehouse_TargetLocation')">
<u-input :disabled="true" v-model="Some.aimWl" placeholder="" />
</u-form-item>
<!-- 成本中心 -->
<u-form-item :label="$t('message.product_costCenter')">
<u-input :disabled="true" v-model="Some.costCenter" placeholder="" />
</u-form-item>
<!-- 文件号 -->
<u-form-item :label="$t('message.DocumentNumber')">
<u-input v-model="Some.fileNo" placeholder="" />
</u-form-item>
<u-row class="button-bar">
<u-col :span="4">
<u-button type="error" @click="uni.navigateBack()">{{
$t('message.po_Return')
}}</u-button>
<u-col :span="6">
<u-button type="error" @click="uni.navigateBack()">{{ $t('message.po_Return') }}</u-button>
</u-col>
<u-col :span="8">
<u-button type="primary" @click="submit"
>{{ $t('message.po_Continue') }}
</u-button></u-col
<u-col :span="6">
<u-button type="primary" @click="submit">{{ $t('message.InventoryFinish') }} </u-button></u-col
>
</u-row>
</u-form>
@ -32,42 +62,80 @@
import { Component } from 'vue-property-decorator';
import { BasePage } from '@/components/base/page';
import model from './model';
import { page } from '@/utils/page';
@Component
import jPicker from '@/components/J-Picker/jPicker.vue';
import { session } from '@/store/modules/session';
@Component({
components: {
jPicker,
},
})
export default class KanDanHandOver extends BasePage {
//
order3 = '';
/**
* 页面Module
*/
model = model;
// async onKdOrderNoConfirm() {
// if (this.order3 === '') {
// uni.showToast({ icon: 'none', title: '' });
// return;
// } else {
// try {
// const odr = await order.takeOrder({ order3: this.order3, page: 1, row: 50 });
// order.add({ order: odr });
// // uni.navigateTo({ url: page.raw.warehouse.transfer.details });
// } catch (e) {
// uni.showToast({ icon: 'none', title: e.message });
// }
// }
// }
// onReady() {
// this.model.takeOrder();
// }
async submit() {
wl: any = {};
Some: any = {};
MaterialList: any = [];
//
async query() {
if (this.order3 === '') {
uni.showToast({ icon: 'none', title: this.$t('message.Scrap_Tip') as string });
uni.showToast({ icon: 'none', title: this.$t('message.Commission_tips1') as string });
return;
} else {
await this.model.takeOrder({
order3: this.order3,
});
uni.navigateTo({ url: page.raw.warehouse.rowScrap.details });
if (this.model.code == '1') {
uni.showToast({ icon: 'none', title: this.$t('message.successful') as string });
this.model.orderInInfoList.forEach((item: any) => {
item.fileNo = '';
let arr: any = {
label: item.productCode,
value: item.productCode,
};
this.MaterialList.push(arr);
});
this.Some = this.model.orderInInfoList[0];
this.wl = this.MaterialList[0];
}
}
}
//
materialChoice(e: any) {
this.wl = e.pickerName;
this.model.orderInInfoList.forEach((item: any) => {
if (item.productCode == e.pickerName.value) {
this.Some = item;
}
});
}
//
async submit() {
if (this.order3 === '') {
uni.showToast({ icon: 'none', title: this.$t('message.Commission_tips1') as string });
return;
}
if (!this.Some) {
uni.showToast({ icon: 'none', title: this.$t('message.Warehouse_Tip5') as string });
return;
}
if (this.Some.fileNo == '' || this.Some.fileNo == null || this.Some.fileNo == undefined) {
uni.showToast({ icon: 'none', title: this.$t('message.fileNumber') as string });
return;
}
let orderlist = [];
this.Some.type = '1';
this.Some.keepBy = session.loginName;
this.Some.orderType = '1';
orderlist.push(this.Some);
await model.onTakeoutConfirm(orderlist);
if (this.model.code == '1') {
uni.showToast({ icon: 'none', title: this.$t('message.success') as string });
this.Some = {};
this.Some.fileNo = ' ';
this.wl = {};
this.order3 = '';
this.MaterialList = [];
}
}
}
@ -115,25 +183,56 @@ export default class KanDanHandOver extends BasePage {
border-radius: 10rpx;
box-shadow: 0 0 20rpx 0 rgba(128, 128, 128, 0.2);
// .u-form-item {
// line-height: 35rpx;
// background-color: #f7f6fb;
// padding: 10rpx 30rpx;
// border-radius: 8rpx;
// &:after {
// border-bottom-width: 0;
// }
// }
.u-form-item {
padding: 30rpx 0;
line-height: 35rpx;
background-color: #f7f6fb;
padding: 10rpx 30rpx;
border-radius: 8rpx;
&:after {
border-bottom-width: 0;
}
.single {
width: 100%;
height: 100rpx;
display: flex;
.single-left {
width: 80%;
height: 100%;
display: flex;
view {
width: 110rpx;
height: 100%;
line-height: 100rpx;
}
}
.single-right {
button {
margin-top: 15rpx;
width: 150rpx;
height: 70rpx;
}
}
}
.title {
margin-bottom: 40rpx;
color: #1a1a1a;
font-size: 30rpx;
font-weight: 500;
}
.button-bar {
margin: 40rpx -10rpx 0;
position: fixed;
bottom: 0;
left: 0;
right: 0;
z-index: 99;
background: #ffffff;
box-shadow: 0 1rpx 20rpx 0 rgba(128, 128, 128, 0.2);
padding: 20rpx;
}
}
}

@ -37,6 +37,7 @@ export class rowScrap extends VuexModule {
*
*/
orderInInfoList: OrderInInfo[] = [];
code: any = '';
/**
*
*/
@ -58,8 +59,9 @@ export class rowScrap extends VuexModule {
loginName: session.loginName,
});
const orderInInfoList = records.data.records;
const code = records.code;
console.log('获取来的数据', orderInInfoList);
return { orderInInfoList };
return { orderInInfoList, code };
} catch {
uni.showToast({ icon: 'none', title: vm.$t('message.Warehouse_Tip11') as any });
}
@ -68,18 +70,8 @@ export class rowScrap extends VuexModule {
@MutationAction
async onTakeoutConfirm(list: any) {
const records: any = await http.post(url.warehouse.rowTransfer.commit, list);
if (records.code == 1) {
// uni.showToast({ icon: 'none', title: vm.$t('message.Warehouse_Tip9') as any });
uni.showToast({
icon: 'success',
title: 'success',
});
// uni.navigateTo({ url: page.raw.warehouse.index });
// setTimeout(() => {
// uni.navigateTo({ url: page.raw.warehouse.rowScrap.index });
// }, 2000);
}
return {};
const code = records.code;
return { code };
}
}

@ -133,6 +133,7 @@ export const url = {
outsourcingQueryOrder: '/wmspda/material/outsourcing/queryOrder',
getDetailByorderNo: '/wmspda/fg/queryListInfoByDnNo',
scanBarcodeDN: '/wmspda/fg/scanBarcodeDN/del',
queryAmount: '/wmspda/fg/queryAmountByDn',
},
},
inbound: {

Loading…
Cancel
Save