You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

477 lines
15 KiB
Vue

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<template>
<view class="page-raw-returning">
<view class="header" :style="{ backgroundColor: `rgba(23, 83, 234, ${scrollTop / 100})` }">
<view class="left">
<u-icon class="icon" name="arrow-left" @click="back" />
</view>
<view class="title">{{ $t('message.deliver') }}</view>
<view class="right"></view>
</view>
<u-form class="form" ref="form" :model="form" :error-type="['toast']" label-width="150rpx">
<!-- 单号查询 -->
<u-form-item :required="true" :label="$t('message.dn_OddNumbers')" prop="orderNo">
<u-search :placeholder="$t('message.Commission_tips1')" v-model.trim="form.orderNo" @search="query" :show-action="false"></u-search>
</u-form-item>
<!-- 单据总数 -->
<u-form-item :label="$t('message.product_TotalNumber')">
<u-input v-model="model.orderInInfo.stoAmount" :disabled="true" type="number" placeholder="" />
</u-form-item>
<!-- 成品编码 -->
<u-form-item :required="true" :label="$t('message.product_FGCode')">
<u-input v-model="form.rowItem" type="select" @click="materialCodeSelect = true" :placeholder="$t('message.po_PleaseInput')" />
<u-select :confirm-text="$t('message.product_Confirm')" :cancel-text="$t('message.product_Cancel')" v-model="materialCodeSelect" :list="model.materielList" @confirm="materialConfirm"></u-select>
</u-form-item>
<!-- 成品描述 -->
<u-form-item :label="$t('message.product_FGDes')">
<u-input :disabled="true" v-model="form.productDescZh" placeholder="" style="overflow: hidden" />
</u-form-item>
<!-- 行项目 -->
<u-form-item :label="$t('message.Line')">
<u-input :disabled="true" v-model="form.row" placeholder="" />
</u-form-item>
<!-- 物料总数 -->
<u-row gutter="0">
<u-col :span="6">
<u-form-item :label="$t('message.product_MaterilTotalNumber')">
<u-input v-model="form.orderAmount" placeholder="" :disabled="true" />
</u-form-item>
</u-col>
<u-col :span="6">
<u-form-item :label="$t('message.product_Swept')" label-width="80rpx">
<u-input v-model="form.scanAmount" :disabled="true" :placeholder="$t('message.po_PleaseInput')" type="number" />
</u-form-item>
</u-col>
</u-row>
<!-- 扫码 -->
<u-form-item :label="$t('message.product_BarCode')">
<u-search :placeholder="$t('message.po_PleaseInput')" v-model="form.barCode" @search="onOk" :focus="firstFocus" :show-action="false"></u-search>
</u-form-item>
<!-- <u-col :span="12">
<view class="table-wrapper">
<wyb-table class="table" ref="table" width="100%" enable-check="multiple" show-left-and-right-border :headers="headers" :contents="materialList" :show-vert-border="false" @onCheck="onCheck"></wyb-table>
</view>
</u-col> -->
</u-form>
<view class="bottom-bar">
<u-row class="button-bar">
<!-- Guoshuang 详细跳转要改,调接口 -->
<u-col :span="6">
<u-button type="warning" @click="detailed">{{ $t('message.detailed') }}</u-button>
</u-col>
<!-- <u-col :span="4">
<u-button type="primary" @click="BackSweep">{{ $t('message.BackSweep') }}</u-button>
</u-col> -->
<!-- <u-col :span="4">
<u-button type="error" @click="resetHandle">{{ $t('message.product_Empty') }}</u-button>
</u-col> -->
<!-- Guoshuang 出库要改,入参 -->
<u-col :span="6">
<u-button type="primary" @click="Posting">{{ $t('message.Posting') }}</u-button>
</u-col>
<!-- <u-col :span="3">-->
<!-- <u-button type="success" @click="uni.navigateBack()"></u-button>-->
<!-- </u-col>-->
</u-row>
</view>
</view>
</template>
<script lang="ts">
import { Component, Ref } from 'vue-property-decorator';
import { BasePage } from '@/components/base/page';
import { VForm, VFormRules } from 'vue/types/form';
import model from './model';
import { session } from '@/store/modules/session';
import { headers } from './config';
@Component
export default class stoOutboundDom extends BasePage {
/**
* 表单引用
*/
@Ref('form') readonly $form!: VForm;
/**
* 表格引用
*/
@Ref('table') readonly $table: any;
/**
* 页面Module
*/
model = model;
/**
* search焦点获取
*/
firstFocus = false;
/**
* 表头
*/
headers = headers;
/**
* 表单数据
*/
form = {
dockCode: null, // 月台类型code
dockName: null, // 月台类型name
orderNo: null,
qty: 0,
orderAmount: '',
productCode: '', // 物料类型name
productDescZh: '',
scanAmount: 0,
rowItem: '',
row:'',
barCode: '',
};
materialList: any = []; //物料列表
//被选中的表格数据
selectMaterielList: any = [];
/**
* 工位退料人名称
*/
operatorName = '';
/**
* 退料类型选择
*/
returningTypeSelect = false;
// 物料类型选择
materialCodeSelect = false;
/**
* 表单验证规则
*/
rules: VFormRules<any> = {
orderNo: [{ required: true, message: this.$t('message.product_Tip4') as string }],
};
// 必须要在onReady生命周期因为onLoad生命周期组件可能尚未创建完毕
async onReady() {
this.$form.setRules(this.rules);
model.queryReturningTypeList();
this.form.orderNo = JSON.parse(sessionStorage.getItem('SweepCode'));
sessionStorage.removeItem('SweepCode');
if (this.form.orderNo == null) {
return;
} else {
this.query();
}
}
back() {
this.form.barCode = '';
this.model.orderInInfo.stoAmount = 0;
this.selectMaterielList = [];
uni.navigateBack({ delta: 1 });
//this.$table.onEmpty();
}
//查询单号详细页面
async detailed() {
if (!this.form.orderNo) {
this.customToast(this.$t('message.Commission_tips1') as any);
return;
}
await this.model.queryDetailed(this.form.orderNo);
this.toPage(this.page.product.outbound.stoOutboundDetail);
}
BackSweep() {
if (!this.form.orderNo) {
this.customToast(this.$t('message.Commission_tips1') as any);
return;
}
sessionStorage.setItem('SweepCode', JSON.stringify(this.form.orderNo));
this.toPage(this.page.product.outbound.Back);
}
//单号回车查询
async query() {
if (!this.form.orderNo) {
this.customToast(this.$t('message.Commission_tips1') as any);
return;
}
await this.model.findProdInfoByDN(this.form.orderNo);
console.log('model.DNcode',this.model.DNcode)
if (this.model.DNcode == '1') {
uni.showToast({
icon: 'success',
title: this.$t('message.successful') as any,
});
this.form.productCode = this.model.materielList[0].materialCode;
this.form.productDescZh = this.model.materielList[0].materialDesc;
this.form.rowItem = this.model.materielList[0].materialCode;
this.form.row = this.model.materielList[0].rowItem;
this.form.orderAmount = this.model.materielList[0].orderAmount;
this.form.scanAmount = parseFloat(this.model.materielList[0].outAmount);
}
}
//选择成品编码
materialConfirm(v: any) {
console.log('v[0].value', v);
this.model.materielList.forEach((item: any) => {
if (v[0].value == item.materialCode) {
console.log('item', item);
this.form.productCode = item.materialCode;
this.form.productDescZh = item.materialDesc;
this.form.rowItem = item.materialCode;
this.form.row = item.rowItem;
this.form.orderAmount = item.orderAmount;
this.form.scanAmount = parseFloat(item.outAmount);
return;
}
});
console.log('this.form', this.form);
}
/**
* 清空
*/
resetHandle() {
this.materialList = [];
this.$table.onCheckAllTap();
this.model.materielList.forEach((item: any) => {
if (this.form.productCode == item.label) {
this.form.productDescZh = item.materialDesc;
this.form.orderAmount = item.orderAmount;
this.form.rowItem = item.rowItem;
this.form.scanAmount = parseFloat(item.outAmount);
}
});
}
/**
* 条码回车
*/
//扫码也要改,扫码
// onSubmit() {
// this.$form.validate(async (valid: boolean) => {
// // if (this.form.productCode.slice(0, 9) != this.form.barCode.slice(0, 9)) {
// // uni.showToast({
// // icon: "none",
// // title: this.$t("message.product_Tip5") as string,
// // });
// // return;
// // }
// if (parseInt(this.form.orderAmount) <= this.form.scanAmount) {
// uni.showToast({
// icon: 'none',
// title: this.$t('message.product_Tip6') as string,
// });
// return;
// }
// // let list = [
// // {
// // order3: this.form.orderNo,
// // productCode: this.form.productCode,
// // productDescZh: this.form.productDescZh,
// // barCode: this.form.barCode,
// // dockCode: this.form.dockCode,
// // dockName: this.form.dockName,
// // // orderType: 3,
// // orderType: 4,
// // type: 0,
// // keepBy: session.loginName as string,
// // loginName: session.loginName as string,
// // },
// // ];
// if (valid) {
// let list: any = {
// productCode: this.form.productCode,
// barcode: this.form.barCode,
// loginName: session.loginName,
// factoryCode: session.factoryCode,
// };
// const res = await this.model.getMaterialByCode(list);
// console.log('fanhui', res);
// // if (res.barcode) {
// // // this.materialList.push(res);
// // this.form.scanAmount = res.scanAmount;
// // }
// //guoshuang 注掉
// if (this.materialList.length == 0) {
// await this.materialList.push(res);
// this.form.scanAmount += 1;
// this.$table.onCheckAllTap();
// } else {
// let flag = 0;
// for (let i = 0; i < this.materialList.length; i++) {
// console.log('11111', this.materialList[i]);
// if (this.form.barCode == this.materialList[i].barcode) {
// flag = 1;
// break;
// }
// }
// if (flag == 0) {
// await this.$table.onCheckAllTap();
// await this.materialList.push(res);
// this.form.scanAmount += 1;
// this.$table.onCheckAllTap();
// } else {
// uni.showToast({
// icon: 'none',
// title: this.$t('message.product_Tip7') as string,
// });
// }
// }
// }
// });
// const item = {
// ...this.form,
// barCode: String(''),
// };
// this.firstFocus = false;
// setTimeout(() => {
// this.form = item;
// this.firstFocus = true;
// }, 0);
// }
Posting() {
}
onOk() {
this.$form.validate(async (valid: boolean) => {
if (!valid) return;
if (parseInt(this.form.orderAmount) <= this.form.scanAmount) {
this.customToast(this.$t('message.product_Tip6') as string);
return;
}
if(this.form.barCode == ''){
this.customToast(this.$t('message.barcode') as string);
return
}
const selctlist = {
barcode: this.form.barCode,
loginName: session.loginName,
factoryCode: session.factoryCode,
keepBy: session.loginName,
order3: this.form.orderNo,
orderItem: this.form.row,
type: 0,
orderType: 4,
productCode: this.form.productCode,
};
await this.model.confirmMove(selctlist).then(async () =>{
if (this.model.code == '1') {
this.materialList = [];
uni.showToast({ icon: 'success', title: 'success' });
this.form.barCode = '';
this.form.productCode = '';
model.orderInInfo.stoAmount = 0;
this.form.scanAmount = 0;
this.form.orderAmount = '';
this.form.productDescZh = '';
this.selectMaterielList = [];
this.form.rowItem = '';
this.query();
}
if(this.model.code == '2'){
uni.showModal({
content:this.$t('message.sweep') as any,
cancelText:this.$t('message.Cancel') as any,
confirmText:this.$t('message.workArea_Confirm') as any,
success:async (res) =>{
if(res.confirm){
let params = {
barcode: this.form.barCode,
loginName: session.loginName,
keepBy: session.loginName,
factoryCode: session.factoryCode,
order3: this.form.orderNo,
}
await this.model.delCode(params)
this.form.barCode = '';
this.form.productCode = '';
model.orderInInfo.stoAmount = 0;
this.form.scanAmount = 0;
this.form.orderAmount = '';
this.form.productDescZh = '';
this.selectMaterielList = [];
this.form.rowItem = '';
this.query();
} else if(res.cancel){
this.form.barCode = '';
}
}
})
}
});
});
}
// }
}
</script>
<style lang="scss" scoped>
.uni-input-input:disabled {
-webkit-text-fill-color: currentcolor;
background-color: #1753ea;
}
.page-raw-returning {
background: #f2f2f2 linear-gradient(0deg, #f2f2f2 0%, #4a78ea 51%, #1753ea 100%) no-repeat;
background-size: 100% 600rpx;
padding: 118rpx 30rpx 162rpx;
min-height: 100%;
.header {
position: fixed;
top: 36rpx;
left: 0;
right: 0;
z-index: 99;
display: flex;
height: 88rpx;
line-height: 88rpx;
color: #fff;
font-size: 34rpx;
font-weight: 500;
text-align: center;
.title {
flex: 3;
}
.left,
.right {
flex: 1;
}
.icon {
display: flex;
justify-content: center;
align-items: center;
width: 88rpx;
height: 88rpx;
}
}
.form {
background-color: #fff;
padding: 40rpx;
border-radius: 10rpx;
box-shadow: 0 0 20rpx 0 rgba(128, 128, 128, 0.2);
.u-form-item {
padding: 30rpx 0;
line-height: 35rpx;
}
}
.bottom-bar {
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;
}
// .button-bar {
// }
}
.input[disabled] {
background-color: rgb(228, 143, 143); //修改默认灰色样式
color: #666;
opacity: 1; //默认的不透明级别为0.3
-webkit-text-fill-color: #666; //字体颜色安卓与IOS适配
-webkit-opacity: 1; //不透明级别安卓与IOS适配
}
.disabled{
background-color: rgb(228, 143, 143); //修改默认灰色样式
color: #666;
opacity: 1; //默认的不透明级别为0.3
-webkit-text-fill-color: #666; //字体颜色安卓与IOS适配
-webkit-opacity: 1; //不透明级别安卓与IOS适配
}
</style>