Commit c251dde1 authored by 何远江's avatar 何远江

销售拣货,仓位转移,反冲料功能添加,bug修改

parent 32cb5f7b
...@@ -6,6 +6,9 @@ const install = (Vue, vm) => { ...@@ -6,6 +6,9 @@ const install = (Vue, vm) => {
// 参数配置对象 // 参数配置对象
const config = vm.vuex_config; const config = vm.vuex_config;
// sap-client
const sapClient = 310;
// 将各个定义的接口名称,统一放进对象挂载到vm.$u.api(因为vm就是this,也即this.$u.api)下 // 将各个定义的接口名称,统一放进对象挂载到vm.$u.api(因为vm就是this,也即this.$u.api)下
vm.$u.api = { vm.$u.api = {
...@@ -32,32 +35,34 @@ const install = (Vue, vm) => { ...@@ -32,32 +35,34 @@ const install = (Vue, vm) => {
}, },
sapApi: { sapApi: {
// 采购入库 // 采购入库
sapRrm: (params = {}) => vm.$u.post(config.adminPath + '/sap/bc/erp_ep/cud_mm_rrm/rrm?sap-client=310', params), sapRrm: (params = {}) => vm.$u.post(config.adminPath + '/sap/bc/erp_ep/cud_mm_rrm/rrm?sap-client=' + sapClient, params),
sapPlnr: (params = {}) => vm.$u.post(config.adminPath + '/sap/bc/erp_ep/get_mm_plnr/plnr?sap-client=310', params,), sapPlnr: (params = {}) => vm.$u.post(config.adminPath + '/sap/bc/erp_ep/get_mm_plnr/plnr?sap-client=' + sapClient, params,),
// 仓位转移 // 仓位转移
sapDict: (params = {}) => vm.$u.post(config.adminPath + '/sap/bc/erp_ep/ep_dict?sap-client=310', params), sapDict: (params = {}) => vm.$u.post(config.adminPath + '/sap/bc/erp_ep/ep_dict?sap-client=' + sapClient, params),
// 生产领料 // 生产领料
sapProiss: (params = {}) => vm.$u.post(config.adminPath + '/sap/bc/erp_ep/pda_plto_proiss?sap-client=310', params), sapProiss: (params = {}) => vm.$u.post(config.adminPath + '/sap/bc/erp_ep/pda_plto_proiss?sap-client=' + sapClient, params),
// 完工入库 // 完工入库
sapOrder: (params = {}) => vm.$u.post(config.adminPath + '/sap/bc/erp_ep/PDA_MES_Order/PDA_ORDER?sap-client=310', params), sapOrder: (params = {}) => vm.$u.post(config.adminPath + '/sap/bc/erp_ep/PDA_MES_Order/PDA_ORDER?sap-client=' + sapClient, params),
// 线边库转移下架 // 线边库转移下架
sapXbkzy: (params = {}) => vm.$u.post(config.adminPath + '/sap/bc/erp_ep/pda_plto_xbkzy?sap-client=310', params), sapXbkzy: (params = {}) => vm.$u.post(config.adminPath + '/sap/bc/erp_ep/pda_plto_xbkzy?sap-client=' + sapClient, params),
// 销售拣货单号查询 // 销售拣货单号查询
sapSchDn: (params = {}) => vm.$u.post(config.adminPath + '/sap/bc/erp_ep/search/sch_dn?sap-client=310', params), sapSchDn: (params = {}) => vm.$u.post(config.adminPath + '/sap/bc/erp_ep/search/sch_dn?sap-client=' + sapClient, params),
// 销售拣货单 // 销售拣货单
sapPickingDn: (params = {}) => vm.$u.post(config.adminPath + '/sap/bc/erp_ep/picking_dn?sap-client=310', params), sapPickingDn: (params = {}) => vm.$u.post(config.adminPath + '/sap/bc/erp_ep/picking_dn?sap-client=' + sapClient, params),
// 销售拣货过账 // 销售拣货过账
sapDelv: (params = {}) => vm.$u.post(config.adminPath + '/sap/bc/erp_ep/post_delv?sap-client=310', params), sapDelv: (params = {}) => vm.$u.post(config.adminPath + '/sap/bc/erp_ep/post_delv?sap-client=' + sapClient, params),
// 销售拣货查询bl pl // 销售拣货查询bl pl
sapBlpl: (params = {}) => vm.$u.post(config.adminPath + '/sap/bc/erp_ep/search/sch_BLPL?sap-client=310', params), sapBlpl: (params = {}) => vm.$u.post(config.adminPath + '/sap/bc/erp_ep/search/sch_BLPL?sap-client=' + sapClient, params),
// 查询仓位 // 查询仓位
sapLgpla: (params = {}) => vm.$u.post(config.adminPath + '/sap/bc/erp_ep/search/sch_LGPLA?sap-client=310', params), sapLgpla: (params = {}) => vm.$u.post(config.adminPath + '/sap/bc/erp_ep/search/sch_LGPLA?sap-client=' + sapClient, params),
// 装箱 // 装箱
sapCasePlnr: (params = {}) => vm.$u.post(config.adminPath + '/sap/bc/erp_ep/pda_case/pda_case_plnr?sap-client=310', params), sapCasePlnr: (params = {}) => vm.$u.post(config.adminPath + '/sap/bc/erp_ep/pda_case/pda_case_plnr?sap-client=' + sapClient, params),
}, },
mesApi:{ mesApi:{
//生产领料查询单号 //生产领料查询单号
pdaMaterialcreate: (params = {}) => vm.$u.get(config.adminPath + 'apiPda/material/pdaMaterialcreate', params), pdaMaterialcreate: (params = {}) => vm.$u.get(config.adminPath + 'apiPda/material/pdaMaterialcreate', params),
// 调拨料申请查询
pdaAllocationCreate: (params = {}) => vm.$u.get(config.adminPath + 'apiPda/allocation/pdaAllocationCreate', params),
// 生产退料查询单号 // 生产退料查询单号
pdaMaterialReturn: (params = {}) => vm.$u.get(config.adminPath + '/apiPad/materialReturn/pdaMaterialReturn', params), pdaMaterialReturn: (params = {}) => vm.$u.get(config.adminPath + '/apiPad/materialReturn/pdaMaterialReturn', params),
//生产领料 //生产领料
...@@ -65,9 +70,9 @@ const install = (Vue, vm) => { ...@@ -65,9 +70,9 @@ const install = (Vue, vm) => {
// 生产退料 // 生产退料
pdaMaterialReturnNum: (params = {}) => vm.$u.post(config.adminPath + '/apiPad/materialReturn/pdaMaterialReturnNum', params), pdaMaterialReturnNum: (params = {}) => vm.$u.post(config.adminPath + '/apiPad/materialReturn/pdaMaterialReturnNum', params),
// 完工入库 // 完工入库
pdaFindPackageLinkInfo: (params = {}) => vm.$u.post(config.adminPath + 'apiPda/search/findPackageLinkInfo', params), pdaFindPackageLinkInfo: (params = {}) => vm.$u.post(config.adminPath + '/apiPda/search/findPackageLinkInfo', params),
// 调拨料回传mes
pdaAllocation: (params = {}) => vm.$u.post(config.adminPath + '/apiPda/allocation/pdaAllocation', params)
} }
}; };
......
...@@ -178,6 +178,41 @@ ...@@ -178,6 +178,41 @@
"navigationBarTitleText": "过账", "navigationBarTitleText": "过账",
"enablePullDownRefresh": false "enablePullDownRefresh": false
} }
},
{
"path": "pages/recoil/recoilMaterial",
"style": {
"navigationBarTitleText": "反冲料移库",
"enablePullDownRefresh": false
}
},
{
"path": "pages/recoil/recoilMaterialList",
"style": {
"navigationBarTitleText": "反冲料移库查询",
"enablePullDownRefresh": false
}
},
{
"path": "pages/recoil/recoilMaterialItem",
"style": {
"navigationBarTitleText": "反冲料移库",
"enablePullDownRefresh": false
}
},
{
"path": "pages/recoil/oddNumList",
"style": {
"navigationBarTitleText": "反冲料移库",
"enablePullDownRefresh": false
}
},
{
"path": "pages/purchase/purchaseRemove",
"style": {
"navigationBarTitleText": "采购下架",
"enablePullDownRefresh": false
}
} }
], ],
"globalStyle": { "globalStyle": {
......
...@@ -34,9 +34,14 @@ export default { ...@@ -34,9 +34,14 @@ export default {
text: '采购入库', text: '采购入库',
url: '/pages/purchaseStorage/purchaseStorage' url: '/pages/purchaseStorage/purchaseStorage'
}, },
{
src: require('@/static/images/cgrk.png'),
text: '采购下架',
url: '/pages/purchase/purchaseRemove'
},
{ {
src: require('@/static/images/fclyk.png'), src: require('@/static/images/fclyk.png'),
text: '仓位转移', text: '仓位调拨',
url: '/pages/positionTansfer/positionTansfer' url: '/pages/positionTansfer/positionTansfer'
}, },
{ {
...@@ -89,6 +94,11 @@ export default { ...@@ -89,6 +94,11 @@ export default {
text: '发货过账', text: '发货过账',
url: '/pages/posting/posting' url: '/pages/posting/posting'
}, },
{
src: require('@/static/images/xsck.png'),
text: '反冲料移库',
url: '/pages/recoil/recoilMaterial'
},
] ]
} }
] ]
......
<template> <template>
<view class="lists"> <view class="lists">
<StickyNavBar class="stickyBox"> <StickyNavBar class="stickyBox">
<NavBar title="仓位转移"></NavBar> <NavBar title="仓位调拨"></NavBar>
<view class="selectSheet">
<u-row gutter="16">
<!-- <u-col span="6">
<u-picker v-model="show" mode="selector" :default-selector="[0]" range-key="text" :range="actionSheetList"></u-picker>
<u-input v-model="value" placeholder="请选择工厂" :type="type" :border="border" @click="show = true" />
</u-col> -->
<u-col span="12">
<u-picker v-model="depotShow" mode="selector" :default-selector="[0]" range-key="LGOBE" :range="depotLists" @confirm="actionSheetCallback"></u-picker>
<u-input v-model="LGOBE" placeholder="请选择仓库别" :type="type" :border="border" @click="depotShow = true" />
<!-- <u-action-sheet :list="depotLists" v-model="depotShow" @click="actionSheetCallback"></u-action-sheet> -->
</u-col>
</u-row>
</view>
<view class="scanningBtn"> <view class="scanningBtn">
<uni-easyinput prefixIcon="search" class="topSearch" v-model="nlpla" focus placeholder="请扫描库位" @change="handleInputNlpla"></uni-easyinput> <uni-easyinput prefixIcon="search" class="topSearch" v-model="nlpla" focus placeholder="请扫描库位" @change="handleInputNlpla"></uni-easyinput>
<uni-easyinput <uni-easyinput
...@@ -45,7 +32,7 @@ ...@@ -45,7 +32,7 @@
</view> </view>
<view class="cardItemDetail"> <view class="cardItemDetail">
<text class="cardItemLabel">数量</text> <text class="cardItemLabel">数量</text>
<text class="cardItemValue">{{ item.ERFMG }}</text> <text class="cardItemValue">{{ item.TOMNG }}</text>
</view> </view>
<view class="cardItemDetail"> <view class="cardItemDetail">
<text class="cardItemLabel">单位</text> <text class="cardItemLabel">单位</text>
...@@ -72,24 +59,11 @@ export default { ...@@ -72,24 +59,11 @@ export default {
return { return {
nlpla: '', nlpla: '',
wxparams: '', wxparams: '',
value: '',
type: 'select', type: 'select',
show: false,
depotShow: false, depotShow: false,
border: true, border: true,
LGOBE: '', LGOBE: '',
depotLists: [], depotLists: [],
actionSheetList: [
{
text: '男'
},
{
text: '女'
},
{
text: '保密'
}
],
status: 'loadmore', status: 'loadmore',
btnArr: [ btnArr: [
{ {
...@@ -112,7 +86,6 @@ export default { ...@@ -112,7 +86,6 @@ export default {
}, },
created() { created() {
this.getDepotLists(); this.getDepotLists();
this.getPlnr('240418000007|00010000060000030.000|10000000000011')
}, },
methods: { methods: {
getDepotLists() { getDepotLists() {
...@@ -134,29 +107,31 @@ export default { ...@@ -134,29 +107,31 @@ export default {
getBtnHandle(row) { getBtnHandle(row) {
this[row.way](); this[row.way]();
}, },
goBack() { goBack(time = 0) {
uni.navigateBack(); setTimeout(() => {
uni.navigateBack();
}, time)
},
resetPage() {
this.goodsList = [];
this.nlpla = '';
this.wxparams = '';
}, },
goSubmit() { goSubmit() {
if (this.goodsList.length === 0) { if (this.goodsList.length === 0) {
return; return;
} }
console.log([
{
BLDAT: '20240325',
BUDAT: '20240325',
ZENCODE: 'A012',
TYPE: 'ZY',
ITEM: this.goodsList
}
]);
const params = { const params = {
TYPE: 'ZY', TYPE: '',
ZENCODE: "", ZENCODE: "999",
BUDAT: "", BUDAT: "",
BLDAT: "", BLDAT: "",
LFSNR: "", LFSNR: "",
ITEM: this.goodsList ITEM: this.goodsList.map(item => {
item.LGPLA = this.nlpla
item.ERFMG = item.TOMNG
return item
})
} }
this.$u.api.sapApi this.$u.api.sapApi
...@@ -166,12 +141,16 @@ export default { ...@@ -166,12 +141,16 @@ export default {
if(!Array.isArray(res)){ if(!Array.isArray(res)){
return return
} }
if (res.every((item) => item.TYPE === 'S')) { const flag = res.some((item) => {
this.$u.toast('提交成功'); const f = item.TYPE == "E";
} if (f) {
const foundObject = res.find(item => item.TYPE === 'E'); this.$u.toast(item.MESSAGE);
if(foundObject && foundObject.MESSAGE){ }
this.$u.toast(foundObject.MESSAGE); return f;
});
if (!flag) {
this.$u.toast("提交成功");
this.resetPage();
} }
}); });
}, },
...@@ -181,13 +160,7 @@ export default { ...@@ -181,13 +160,7 @@ export default {
this.LGOBE = this.depotLists[index].LGOBE; this.LGOBE = this.depotLists[index].LGOBE;
}, },
handleInputNlpla(e) { handleInputNlpla(e) {
console.log(e, 'eee'); this.nlpla = e;
if (e) {
this.nlpla = e;
this.goodsList.forEach((ele) => {
ele.NLPLA = ele.NLPLA || this.nlpla;
});
}
}, },
handleInputPlnr(e) { handleInputPlnr(e) {
this.isFocus = false; this.isFocus = false;
...@@ -197,7 +170,8 @@ export default { ...@@ -197,7 +170,8 @@ export default {
this.isDisabled = true; this.isDisabled = true;
this.$u.api.sapApi this.$u.api.sapApi
.sapPlnr({ .sapPlnr({
plnr plnr,
zType: '002'
}) })
.then((res) => { .then((res) => {
if (res && res.RESULT.TYPE === 'S') { if (res && res.RESULT.TYPE === 'S') {
......
...@@ -12,6 +12,9 @@ ...@@ -12,6 +12,9 @@
@input="handleInputPlnr" @input="handleInputPlnr"
></uni-easyinput> ></uni-easyinput>
</view> </view>
<view class="btn">
<uni-datetime-picker type="date" :clear-icon="false" placeholder="请选择发货日期" v-model="single" @maskClick="maskClick" />
</view>
</StickyNavBar> </StickyNavBar>
<ContentLoadingMore class="cardbox" :list='goodsList'> <ContentLoadingMore class="cardbox" :list='goodsList'>
<view class="cardContent" v-for="(item, index) in goodsList"> <view class="cardContent" v-for="(item, index) in goodsList">
...@@ -42,6 +45,7 @@ export default { ...@@ -42,6 +45,7 @@ export default {
show: true, show: true,
nlpla: '', nlpla: '',
wxparams: '', wxparams: '',
single: '',
btnArr: [ btnArr: [
{ {
style: '', style: '',
...@@ -63,6 +67,7 @@ export default { ...@@ -63,6 +67,7 @@ export default {
}, },
created() { created() {
// this.getPlnr('10000820240325000001|10000320100'); // this.getPlnr('10000820240325000001|10000320100');
this.single = parseTime(new Date())
}, },
methods: { methods: {
deleGonds(idx) { deleGonds(idx) {
...@@ -72,6 +77,7 @@ export default { ...@@ -72,6 +77,7 @@ export default {
this.totalNum += ele.ERFMG; this.totalNum += ele.ERFMG;
}); });
}, },
maskClick(e) {},
getBtnHandle(row) { getBtnHandle(row) {
this[row.way](); this[row.way]();
}, },
...@@ -84,7 +90,7 @@ export default { ...@@ -84,7 +90,7 @@ export default {
} }
const params = { const params = {
"VBELN": this.goodsList[0], "VBELN": this.goodsList[0],
"WADAT": parseTime(new Date()) "WADAT": this.single,
} }
this.$u.api.sapApi this.$u.api.sapApi
.sapDelv(params) .sapDelv(params)
......
...@@ -176,13 +176,18 @@ export default { ...@@ -176,13 +176,18 @@ export default {
}); });
}, },
goSubmit() { goSubmit() {
const flag = this.goodsList.every((item) => {
// let arr = this.goodsList.filter((ele) => ele.details.some(v => v.vista)).map(v =>); return item.details.every(v => v.PLNR)
})
if (!flag) {
return this.$u.toast("请扫描产品包装条码/外箱码");
}
let arr = this.goodsList.reduce((acc, cur) => { let arr = this.goodsList.reduce((acc, cur) => {
acc.push(...cur.details) acc.push(...cur.details)
return acc return acc
}, []) }, [])
console.log(arr, '----')
// "windCase": null,是否结案 Y是 N否 // "windCase": null,是否结案 Y是 N否
arr.forEach((ele, index) => { arr.forEach((ele, index) => {
...@@ -292,11 +297,12 @@ export default { ...@@ -292,11 +297,12 @@ export default {
v.vista = num > v.applyNum ? v.applyNum : num; v.vista = num > v.applyNum ? v.applyNum : num;
} }
num = +(num - v.vista).toFixed(3); num = +(num - v.vista).toFixed(3);
v.CHARG = ele.CHARG; // v.CHARG = ele.CHARG;
v.PLNR = plnr; // v.PLNR = plnr;
v.LGORT = ele.LGORT; // v.LGORT = ele.LGORT;
v.LGOBE = ele.LGOBE; // v.LGOBE = ele.LGOBE;
v.NLPLA = ele.NLPLA; // v.NLPLA = ele.NLPLA;
Object.assign(v, ele);
// 添加两个字段,使用数量和剩余数量 // 添加两个字段,使用数量和剩余数量
v.usedNum = v.vista; v.usedNum = v.vista;
v.remainNum = +(v.applyNum - v.usedNum).toFixed(3); v.remainNum = +(v.applyNum - v.usedNum).toFixed(3);
...@@ -316,10 +322,7 @@ export default { ...@@ -316,10 +322,7 @@ export default {
} }
const reAddItem = { const reAddItem = {
...v, ...v,
PLNR: plnr, ...ele,
LGORT: ele.LGORT,
LGOBE: ele.LGOBE,
NLPLA: ele.NLPLA,
usedNum: +(v.usedNum + vista).toFixed(3), usedNum: +(v.usedNum + vista).toFixed(3),
remainNum: +(v.remainNum - vista).toFixed(3), remainNum: +(v.remainNum - vista).toFixed(3),
vista, vista,
......
<template>
<view>
<StickyNavBar>
<NavBar title="反冲料单号"></NavBar>
</StickyNavBar>
<ContentLoadingMore class="cardbox" :loadmore='true' :status="status" :list='goodsList'>
<view class="cardContent" v-for="(item, index) in goodsList">
<view class="listItemTitle" @click="handleClick(item)">
<view>
<view class="item">申请单号:{{ item.applyNo }}</view>
<!-- <view class="item">物料编号:{{ item.sapItemCode }}</view> -->
<!-- <view class="item">物料描述:{{ item.itemName }}</view> -->
<view class="item">作业单元:{{ item.workunitName }}</view>
<view class="item">作业类型:{{ item.materialType ? '补料': '领料' }}</view>
<view class="item">备料状态:{{ item.grantNum? '配货中' : '未配货' }}</view>
<view class="item">计划时间:{{ item.startTime }}</view>
</view>
</view>
</view>
</ContentLoadingMore>
<!-- <BottomBtn :btnArr="btnArr" @getBtnHandle="getBtnHandle"></BottomBtn> -->
</view>
</template>
<script>
import StickyNavBar from '@/components/StickyNavBar/index.vue';
import ContentLoadingMore from '@/components/ContentLoadingMore/index.vue';
import BottomBtn from '@/components/BottomBtn/index.vue';
export default {
components: {
StickyNavBar,
ContentLoadingMore,
BottomBtn
},
data() {
return {
number: 0,
totalNum: 0,
show: true,
nlpla: '',
wxparams: '',
btnArr: [
{
style: '',
type: 'warning',
text: '返回',
way: 'goBack'
},
{
style: '',
type: 'primary',
text: '提交',
way: 'goSubmit'
}
],
goodsList: [],
pagination: {
pageNum:1,
pageSize:10,
},
total: 0,
status: 'loadmore'
};
},
created() {
this.getPlnr();
},
methods: {
// 加载更多
onReachBottom() {
console.log('加载更多');
if(this.pagination.pageNum * this.pagination.pageSize >= this.total){
this.status = "noMore"
return;
}else{
this.status = "loading"
this.pagination.pageNum++
this.getPlnr();
}
},
handleClick(item){
uni.navigateTo({
url: `/pages/recoil/recoilMaterialList?order=${item.applyNo}`
});
},
getPlnr(applyNo = '') {
this.totalNum = 0;
this.isDisabled = true;
this.$u.api.mesApi
.pdaAllocationCreate({
...this.pagination,
applyNo
})
.then((res) => {
if (res && res.code - 200 === 0) {
this.goodsList = this.goodsList.concat(res.rows);
this.goodsList = this.goodsList.filter((item, index, self) => {
return self.findIndex(t => t.applyNo === item.applyNo) === index;
});
this.total = res.total
} else {
this.$u.toast(res.msg);
}
});
}
}
};
</script>
<style lang="scss" scoped>
page {
background: #f8f8f8;
}
.btn {
padding: 20rpx;
background: #fff;
.topSearch {
margin-bottom: 20rpx;
}
}
.bottomBtn {
position: sticky;
padding: 20rpx;
display: flex;
justify-content: space-between;
background: #fff;
bottom: 0rpx;
margin-top: 20rpx;
.u-btn {
width: 300rpx;
}
}
.blue {
color: #3f9dcc;
}
.total {
background: #fff;
color: #000;
padding: 0rpx 40rpx;
display: flex;
justify-content: space-between;
font-size: 32rpx;
.line {
margin: 0px 10rpx;
}
}
.cardbox {
min-height: calc(100vh - 540rpx);
padding: 0rpx 20rpx;
margin-top: 20rpx;
}
.cardContent {
border-radius: 8px;
background: #fff;
margin-bottom: 20rpx;
}
.listItemTitle {
display: flex;
justify-content: space-between;
padding: 20rpx;
border-bottom: 2px solid #f8f8f8;
.u-btn {
width: 150rpx;
margin: 0px;
margin-top: 10rpx;
}
.item {
line-height: 50rpx;
color: #000;
font-size: 28rpx;
font-weight: 500;
word-break: break-all;
}
}
.listBottom {
.bottomTitle {
height: 80rpx;
position: relative;
.desc {
color: #bbb;
font-size: 24rpx;
line-height: 80rpx;
padding-left: 20rpx;
}
.topIcons {
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
color: #aaa;
}
}
.bottomBox {
padding: 20rpx;
.bottomItem {
background: #f8f8f8;
padding: 20rpx;
margin-bottom: 20rpx;
.items {
color: #333;
font-size: 24rpx;
height: 40rpx;
line-height: 40rpx;
}
}
}
}
/deep/ .u-sticky {
top: 0 !important;
background: #fff;
}
</style>
\ No newline at end of file
<template>
<view>
<StickyNavBar>
<NavBar title="反冲料转移"></NavBar>
<view class="btn">
<uni-easyinput
prefixIcon="search"
:disabled="isDisabled"
v-model="wxparams"
:focus="isFocus"
placeholder="请扫描单号"
@input="handleInputPlnr"
></uni-easyinput>
</view>
</StickyNavBar>
<view class="cardBox">
<text class="cardBoxTip">
步骤一 扫描单号
</text>
<u-image class='cardBoxImg' :src="bgSrc" width="560rpx" height="400rpx"></u-image>
<view class="cardBoxTip2">
摄像头对准
</view>
<view class="cardBoxTip3">
生产发料单号二维码
</view>
<view class="cardBoxTip2">
<text class="tipLeft">
点击扫描或
</text>
<text class="tipRight">
点选单号
</text>
</view>
</view>
<BottomBtn :btnArr="btnArr" @getBtnHandle="getBtnHandle"></BottomBtn>
</view>
</template>
<script>
import StickyNavBar from '@/components/StickyNavBar/index.vue';
import ContentLoadingMore from '@/components/ContentLoadingMore/index.vue';
import BottomBtn from '@/components/BottomBtn/index.vue';
export default {
components: {
StickyNavBar,
ContentLoadingMore,
BottomBtn
},
data() {
return {
bgSrc: require('@/static/images/qrcode.png'),
number: 0,
totalNum: 0,
show: true,
nlpla: '',
wxparams: '',
btnArr: [
{
style: '',
type: 'primary',
text: '扫描单号',
way: 'scanning'
},
{
style: '',
type: 'warning',
text: '查询单号',
way: 'goClick'
}
],
goodsList: [],
isFocus: false,
isDisabled: false
};
},
created() {
// this.getPlnr('SN202400172');
},
methods: {
getBtnHandle(row) {
this[row.way]();
},
goClick() {
uni.navigateTo({
url: `/pages/recoil/oddNumList`
});
},
scanning() {
// uni.navigateTo({
// url: `/pages/productionIssuance/productionIssuanceList?order=${JSON.stringify(this.goodsList)}`
// });
},
handleInputPlnr(e) {
this.isFocus = false;
e && this.getPlnr(e);
},
getPlnr(applyNo) {
this.totalNum = 0;
this.isDisabled = true;
this.$u.api.mesApi
.pdaMaterialcreate({
pageNum:1,
pageSize:10,
applyNo
})
.then((res) => {
console.log(res,'-=')
if (res && res.code - 200 === 0) {
if(res.rows.length){
uni.navigateTo({
url: `/pages/recoil/recoilMaterialList?order=${applyNo}`
});
}else{
setTimeout(() => {
this.isFocus = true;
this.isDisabled = false;
this.wxparams = ''
this.$u.toast('未查询到数据');
}, 1000);
}
// const data = res.rows
// data.forEach((ele,index) => {
// ele.sonItemCode = []
// ele.sonItemCode.push(...data)
// })
// const result = data.filter((item, index, self) => {
// return self.findIndex(t => t.itemCode === item.itemCode) === index;
// });
// let i=null,j=null
// for(i = 0; i < result.length; i++){
// for(j = 0; j < result[i].sonItemCode.length; j++){
// if(result[i].itemCode !== result[i].sonItemCode[j].itemCode){
// result[i].sonItemCode.splice(j,1)
// j--
// }
// }
// }
// console.log(result)
// setTimeout(() => {
// this.wxparams = '';
// this.isFocus = true;
// this.isDisabled = false;
// }, 1000);
// uni.navigateTo({
// url: `/pages/productionIssuance/productionIssuanceList?order=${JSON.stringify(result)}`
// });
// console.log(result)
// this.goodsList = this.goodsList.concat(res.rows);
// setTimeout(() => {
// this.wxparams = '';
// this.isFocus = true;
// this.isDisabled = false;
// }, 1000);
// console.log(this.goodsList)
// uni.navigateTo({
// url: `/pages/productionIssuance/productionIssuanceList?order=${JSON.stringify(this.goodsList)}`
// });
} else {
setTimeout(() => {
this.isFocus = true;
this.isDisabled = false;
}, 1000);
this.$u.toast(res.msg);
}
this.loading = false;
});
}
}
};
</script>
<style lang="scss" scoped>
page {
background: #f8f8f8;
}
.btn {
padding: 20rpx;
background: #fff;
.topSearch {
margin-bottom: 20rpx;
}
}
.cardBox {
min-height: calc(100vh - 400rpx);
padding: 0rpx 20rpx;
margin-top: 20rpx;
}
/deep/ .u-sticky {
top: 0 !important;
background: #fff;
}
.cardBoxTip{
color: #000;
font-size: 28rpx;
}
.cardBoxTip2{
color: #000;
font-size: 28rpx;
text-align: center;
}
.cardBoxTip3{
color: #3f9dcc;
font-size: 28rpx;
text-align: center;
}
.tipRight{
color: #ff9900;
}
</style>
\ No newline at end of file
<template>
<view class="page">
<StickyNavBar>
<NavBar title="反冲料申请"></NavBar>
<view class="headerTitle">
<view class="">
<view class="items"
>反冲料申请:{{ goodsList[0] && goodsList[0].applyNo }}</view
>
<view class="items"
>计划日期:{{ goodsList[0] && goodsList[0].startTime }}</view
>
</view>
</view>
<view class="selectSheet">
<u-row>
<u-col span="12">
<u-picker
v-model="depotShow"
mode="selector"
:default-selector="[0]"
range-key="text"
:range="depotLists"
@confirm="actionSheetCallback"
></u-picker>
<u-input
v-model="LGOBE"
placeholder="请选择仓库别"
:type="type"
:border="border"
@click="depotShow = true"
/>
</u-col>
</u-row>
</view>
<view class="btn">
<uni-easyinput
prefixIcon="search"
:disabled="isDisabled"
v-model="wxparams"
:focus="isFocus"
placeholder="请扫描产品包装条码/外箱码"
@input="handleInputPlnr"
></uni-easyinput>
</view>
<view class="total">
<view class="left">物料明细</view>
<view class="right">
物料数量:
<text class="">{{ goodsList.length }}</text>
</view>
</view>
</StickyNavBar>
<ContentLoadingMore class="cardbox" :list="goodsList">
<view class="cardContent" v-for="(item, index) in goodsList" :key="index">
<scanningList :item="item" :list="item.details" />
</view>
</ContentLoadingMore>
<BottomBtn :btnArr="btnArr" @getBtnHandle="getBtnHandle"></BottomBtn>
</view>
</template>
<script>
import StickyNavBar from "@/components/StickyNavBar/index.vue";
import ContentLoadingMore from "@/components/ContentLoadingMore/index.vue";
import BottomBtn from "@/components/BottomBtn/index.vue";
import scanningList from "./scanningList.vue";
export default {
components: {
StickyNavBar,
ContentLoadingMore,
BottomBtn,
scanningList,
},
data() {
return {
checkedBox: false,
r1: "",
// totalNum: 0,
number: 0,
show: true,
depotShow: false,
depotLists: [],
LGOBE: "",
LGORT: "",
type: "select",
border: true,
wxparams: "",
btnArr: [
{
style: "",
type: "warning",
text: "返回",
way: "goBack",
},
{
style: "",
type: "primary",
text: "提交",
way: "goSubmit",
},
],
goodsList: [],
isFocus: true,
isDisabled: false,
OrderNum: "",
list: [],
};
},
computed: {
totalNum() {
let num = 0;
let i = null,
j = null;
const data = JSON.parse(JSON.stringify(this.list));
const result = data.filter((item, index, self) => {
return self.findIndex((t) => t.itemCode === item.itemCode) === index;
});
for (i = 0; i < this.goodsList.length; i++) {
if (
this.goodsList[i].itemCode === result[i].itemCode &&
result[i].vista
) {
num++;
}
}
return num || 0;
},
},
onLoad(option) {
if (option && option.order) {
this.OrderNum = option.order;
this.getOrder(option.order);
}
},
watch: {},
created() {
this.getDepotLists();
},
methods: {
reset() {
setTimeout(() => {
this.wxparams = "";
this.isFocus = true;
this.isDisabled = false;
}, 1000);
},
getDepotLists() {
this.$u.api.sapApi
.sapDict({
FIELDNAME: "T001L",
})
.then((res) => {
if (res) {
res.forEach((ele) => {
ele.text = ele.LGORT + "-" + ele.LGOBE;
});
this.depotLists = res;
} else {
this.depotLists = [];
}
});
},
getOrder(applyNo) {
this.$u.api.mesApi
.pdaAllocationCreate({
applyNo,
})
.then((res) => {
if (res && res.code - 200 === 0) {
this.goodsList = res.rows.reduce((pre, cur) => {
pre.push({
...cur,
details: [],
});
return pre;
}, []);
} else {
this.$u.toast(res.msg);
}
this.loading = false;
});
},
checkedChange() {
this.checkedBox = !this.checkedBox;
},
// 点击actionSheet回调
actionSheetCallback(index) {
console.log(index, "index");
this.LGOBE = this.depotLists[index].LGOBE;
this.LGORT = this.depotLists[index].LGORT;
},
getBtnHandle(row) {
this[row.way]();
},
goBack(time = 0) {
setTimeout(() => {
uni.navigateBack({
delta: 0,
});
}, time);
},
goSubmit() {
let arr = this.goodsList.reduce((pre, cur) => {
pre.push(
...cur.details.map((ele, index) => {
// ele.UMLGO = this.LGORT;
ele.UMLGO = "1131";
ele.ERFMG = ele.PACMG;
ele.AUFNR = ele.workorderCode;
ele.MTSNR = ele.applyNo;
ele.ZEILE = index + 1;
ele.RSNUM = ele.requirementNumber;
ele.RSPOS = ele.requirementProjectNumber;
return ele;
})
);
return pre;
}, []);
const params = {
ZENCODE: "A012",
TYPE: "CG",
ITEM: arr,
};
this.$u.api.sapApi.sapRrm([params]).then((res) => {
this.loading = false;
if (!Array.isArray(res)) {
return;
}
const flag = res.some((item) => {
const f = item.TYPE == "E";
if (f) {
this.$u.toast(item.MESSAGE);
}
return f;
});
if (!flag) {
this.handleMes(arr, res[0].MESSAGE_V1);
}
});
},
handleMes(arr, num) {
arr.forEach((ele) => {
ele.batchCode = ele.CHARG;
ele.quantityIssued = ele.PACMG;
ele.issueCode = num;
ele.issueType = ele.materialType;
});
this.$u.api.mesApi.pdaSapissuecreate(arr).then((res) => {
this.loading = false;
console.log(res);
if (res && res.code == 200) {
this.$u.toast("提交成功");
this.goBack(500);
} else {
this.$u.toast(res.msg);
}
});
},
handleInputPlnr(e) {
e && this.getPlnr(e);
},
getPlnr(plnr) {
this.isDisabled = true;
this.isFocus = false;
this.$u.api.sapApi
.sapBlpl({
plnr,
ztype: "002",
})
.then((res) => {
if (res && res.MSG[0].TYPE === "S") {
if (
this.goodsList.some((item) =>
item.details.some((v) => v.PLNR == plnr)
)
) {
this.reset();
this.$u.toast("已经存在当前条码");
return;
}
res.BLPL.forEach((ele) => {
const item = this.goodsList.find(
(v) => v.sapItemCode == ele.MATNR
);
if (item) {
item.details.push(ele);
} else {
}
});
this.reset();
} else {
this.reset();
this.$u.toast(res.MSG[0].MESSAGE);
}
this.loading = false;
});
},
},
};
</script>
<style lang="scss" scoped>
page {
background: #f8f8f8;
}
.headerTitle {
padding: 20rpx;
font-weight: 600;
.items {
line-height: 40rpx;
}
}
.btn {
padding: 20rpx;
background: #fff;
.topSearch {
margin-bottom: 20rpx;
}
}
.bottomBtn {
position: sticky;
padding: 20rpx;
display: flex;
justify-content: space-between;
background: #fff;
bottom: 0rpx;
margin-top: 20rpx;
.u-btn {
width: 300rpx;
}
}
.blue {
color: #3f9dcc;
}
.total {
background: #fff;
color: #000;
padding: 0rpx 40rpx;
display: flex;
justify-content: space-between;
font-size: 32rpx;
.line {
margin: 0px 10rpx;
}
}
.cardbox {
min-height: calc(100vh - 480rpx);
padding: 0rpx 20rpx;
margin-top: 20rpx;
}
.cardContent {
border-radius: 8px;
background: #fff;
margin-bottom: 20rpx;
}
.listItemTitle {
display: flex;
justify-content: space-between;
padding: 20rpx;
border-bottom: 2px solid #f8f8f8;
.u-btn {
width: 150rpx;
margin: 0px;
margin-top: 10rpx;
}
.item {
line-height: 50rpx;
color: #333;
font-size: 28rpx;
font-weight: 500;
word-break: break-all;
font-weight: 600;
}
}
.listBottom {
.bottomTitle {
height: 80rpx;
position: relative;
.desc {
color: #bbb;
font-size: 24rpx;
line-height: 80rpx;
padding-left: 20rpx;
}
.topIcons {
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
color: #aaa;
}
}
.bottomBox {
padding: 20rpx;
.bottomItem {
background: #f8f8f8;
padding: 20rpx;
margin-bottom: 20rpx;
.items {
color: #333;
font-size: 24rpx;
height: 40rpx;
line-height: 40rpx;
}
}
}
}
/deep/ .u-sticky {
top: 0 !important;
background: #fff;
}
.checkedCase {
margin-top: 10rpx;
}
</style>
<template>
<view>
<view class="listItemTitle">
<view>
<view class="item">物料编号:{{ item.sapItemCode }}</view>
<view class="item">物料描述:{{ item.itemName }}</view>
</view>
<view class="right">
<text class="blue">{{ totalVistaNum }}</text>
<text class="line">/</text>
<text class="">{{ item.applyNum }}</text>
</view>
</view>
<view class="listBottom">
<view class="bottomTitle" @click="show = !show">
<view class="desc">卷条码明细</view>
<view class="topIcons">
<view v-if="show">
<u-icon name="arrow-down" color="#aaa" size="32"></u-icon>
展开
</view>
<view v-else>
<u-icon name="arrow-up" color="#aaa" size="32"></u-icon>
收起
</view>
</view>
</view>
<view v-if="!show" class="bottomBox">
<view
class="bottomItem"
v-for="(ele, idx) in item.details"
:key="ele.workorderCode"
>
<view class="items">PL:{{ ele.PLNR }}</view>
<view class="items">库位:{{ ele.LGORT }} - {{ ele.LGOBE }}</view>
<view class="items">仓位:{{ ele.NLPLA }}</view>
<view class="items inputItem">
数量:{{ ele.PACMG }}
</view>
</view>
</view>
</view>
</view>
</template>
<script>
import StickyNavBar from "@/components/StickyNavBar/index.vue";
import ContentLoadingMore from "@/components/ContentLoadingMore/index.vue";
import BottomBtn from "@/components/BottomBtn/index.vue";
export default {
components: {
StickyNavBar,
ContentLoadingMore,
BottomBtn,
},
props: {
item: {
type: Object,
default: function () {
return {};
},
},
list: {
type: Array,
default: function () {
return [];
},
},
},
computed: {
totalVistaNum() {
return this.list.reduce((acc, cur) => {
return acc + cur.PACMG;
}, 0);
},
},
watch: {
details: {
handler: function (val, oldVal) {
console.log(val, "00-------");
},
immediate: true,
deep: true,
},
},
data() {
return {
show: true,
};
},
created() {},
methods: {},
};
</script>
<style lang="scss" scoped>
page {
background: #f8f8f8;
}
.headerTitle {
padding: 20rpx;
font-weight: 600;
.items {
line-height: 40rpx;
}
}
.btn {
padding: 20rpx;
background: #fff;
.topSearch {
margin-bottom: 20rpx;
}
}
.bottomBtn {
position: sticky;
padding: 20rpx;
display: flex;
justify-content: space-between;
background: #fff;
bottom: 0rpx;
margin-top: 20rpx;
.u-btn {
width: 300rpx;
}
}
.blue {
color: #3f9dcc;
}
.total {
background: #fff;
color: #000;
padding: 0rpx 40rpx;
display: flex;
justify-content: space-between;
font-size: 32rpx;
.line {
margin: 0px 10rpx;
}
}
.listItemTitle {
display: flex;
justify-content: space-between;
padding: 20rpx;
border-bottom: 2px solid #f8f8f8;
.u-btn {
width: 150rpx;
margin: 0px;
margin-top: 10rpx;
}
.item {
line-height: 50rpx;
color: #333;
font-size: 28rpx;
font-weight: 500;
word-break: break-all;
font-weight: 600;
}
}
.listBottom {
.bottomTitle {
height: 80rpx;
position: relative;
.desc {
color: #bbb;
font-size: 24rpx;
line-height: 80rpx;
padding-left: 20rpx;
}
.topIcons {
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
color: #aaa;
}
}
.bottomBox {
padding: 20rpx;
.bottomItem {
background: #f8f8f8;
padding: 20rpx;
margin-bottom: 20rpx;
.items {
color: #333;
font-size: 24rpx;
line-height: 40rpx;
word-break: break-all;
/deep/ .uni-easyinput {
width: 200rpx;
}
}
.inputItem {
display: inline-flex;
// line-height: 76rpx;
}
}
}
}
/deep/ .u-sticky {
top: 0 !important;
background: #fff;
}
.progress {
width: 45%;
margin-left: 20rpx;
/deep/ .uni-progress-info {
font-size: 24rpx;
}
}
/deep/ .uni-progress {
line-height: 40rpx;
}
.proItem {
display: flex;
}
</style>
...@@ -85,7 +85,7 @@ ...@@ -85,7 +85,7 @@
nlpla: "", nlpla: "",
wxparams: "", wxparams: "",
goodsList: [], goodsList: [],
orderItem: {}, orderItem: {},
resFlag: false resFlag: false
}; };
}, },
...@@ -121,9 +121,9 @@ ...@@ -121,9 +121,9 @@
}, },
methods: { methods: {
goSubmit() { goSubmit() {
if (!this.goodsList.length) return if (!this.goodsList.length) return
if (this.resFlag) { if (this.resFlag) {
return this.$u.toast("当前单据已经提交成功!无需继续提交!"); return this.$u.toast("当前单据已经提交成功!无需继续提交!");
} }
const flag = this.goodsList.every((ele) => { const flag = this.goodsList.every((ele) => {
return ( return (
...@@ -163,7 +163,10 @@ ...@@ -163,7 +163,10 @@
}); });
if (!flag) { if (!flag) {
this.$u.toast("提交成功"); this.$u.toast("提交成功");
this.resFlag = true // this.resFlag = true
setTimeout(() => {
this.goBack()
}, 1000)
} }
}); });
}, },
...@@ -293,4 +296,4 @@ ...@@ -293,4 +296,4 @@
background: #fff; background: #fff;
margin-bottom: 20rpx; margin-bottom: 20rpx;
} }
</style> </style>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment