Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in
Toggle navigation
M
mes-pda-scan
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
ximai
mes-pda-scan
Commits
dca143ff
Commit
dca143ff
authored
Oct 31, 2024
by
tanjunxin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat: 增加余料退库、余料上架功能
parent
76b36d62
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
1542 additions
and
986 deletions
+1542
-986
manifest.json
manifest.json
+2
-2
pages.json
pages.json
+0
-14
monolithInfo.vue
pages/produceReturn/components/monolithInfo.vue
+513
-0
oddmentsInfo.vue
pages/produceReturn/components/oddmentsInfo.vue
+307
-0
oddmentsItem.vue
pages/produceReturn/components/oddmentsItem.vue
+261
-0
putawayInfo.vue
pages/produceReturn/components/putawayInfo.vue
+115
-37
putwayItem.vue
pages/produceReturn/components/putwayItem.vue
+147
-0
oddNumList.vue
pages/produceReturn/oddNumList.vue
+7
-27
oddmentsInfo.vue
pages/produceReturn/oddmentsInfo.vue
+0
-453
produceReturnList.vue
pages/produceReturn/produceReturnList.vue
+190
-453
No files found.
manifest.json
View file @
dca143ff
...
...
@@ -2,8 +2,8 @@
"name"
:
"mes-pda"
,
"appid"
:
"__UNI__FB0FD5F"
,
"description"
:
"MES-PDA"
,
"versionName"
:
"1.
0.0
"
,
"versionCode"
:
"100"
,
"versionName"
:
"1.
1.7
"
,
"versionCode"
:
117
,
"transformPx"
:
false
,
/*
5
+App特有相关
*/
"app-plus"
:
{
...
...
pages.json
View file @
dca143ff
...
...
@@ -173,20 +173,6 @@
"enablePullDownRefresh"
:
false
}
},
//
{
//
"path"
:
"pages/produceReturn/oddmentsInfo"
,
//
"style"
:
{
//
"navigationBarTitleText"
:
"生产退料"
,
//
"enablePullDownRefresh"
:
false
//
}
//
},
//
{
//
"path"
:
"pages/produceReturn/putawayInfo"
,
//
"style"
:
{
//
"navigationBarTitleText"
:
"生产退料"
,
//
"enablePullDownRefresh"
:
false
//
}
//
},
{
"path"
:
"pages/produceReturn/oddNumList"
,
"style"
:
{
...
...
pages/produceReturn/components/monolithInfo.vue
0 → 100644
View file @
dca143ff
This diff is collapsed.
Click to expand it.
pages/produceReturn/components/oddmentsInfo.vue
0 → 100644
View file @
dca143ff
<
template
>
<view
class=
"page"
>
<view
class=
"headerTitle"
>
<view
class=
""
>
<view
class=
"items"
>
退料申请:
{{
goodsList
[
0
]
&&
goodsList
[
0
].
applyNo
}}
</view>
<view
class=
"items"
>
编排单号:
{{
goodsList
[
0
]
&&
goodsList
[
0
].
arrangeCode
}}
</view>
<view
class=
"items"
>
退料日期:
{{
goodsList
[
0
]
&&
goodsList
[
0
].
createTime
}}
</view>
<view
class=
"items"
>
WC001:
{{
goodsList
[
0
]
&&
goodsList
[
0
].
workshopCode
}}
</view>
<view
class=
"items"
>
退料方式:
{{
goodsList
[
0
]
&&
(
goodsList
[
0
].
complete
==
"N"
?
"余料退料"
:
"整单退料"
)
}}
</view>
</view>
</view>
<view
class=
"total"
>
<view
class=
"left"
>
物料明细
</view>
<view
class=
"right"
>
物料数量:
<text
class=
""
>
{{
goodsList
.
length
}}
</text>
</view>
</view>
<ContentLoadingMore
class=
"cardbox"
:list=
'goodsList'
>
<scroll-view
scroll-y=
"true"
style=
"height: 680rpx;"
>
<view
class=
"cardContent"
v-for=
"(item, index) in goodsList"
:key=
"index"
>
<OddmentsItem
:item=
'item'
:list=
'list'
/>
</view>
</scroll-view>
</ContentLoadingMore>
<BottomBtn
:btnArr=
"btnArr"
@
getBtnHandle=
"getBtnHandle"
></BottomBtn>
</view>
</
template
>
<
script
>
import
ContentLoadingMore
from
'@/components/ContentLoadingMore/index.vue'
;
import
OddmentsItem
from
'./oddmentsItem.vue'
;
import
BottomBtn
from
'@/components/BottomBtn/index.vue'
;
export
default
{
components
:
{
ContentLoadingMore
,
OddmentsItem
,
BottomBtn
,
},
data
()
{
return
{
number
:
0
,
show
:
true
,
nlpla
:
''
,
btnArr
:
[{
style
:
''
,
type
:
'warning'
,
text
:
'返回'
,
way
:
'goBack'
},
{
style
:
''
,
type
:
'primary'
,
text
:
'提交'
,
way
:
'goSubmit'
}
],
goodsList
:
[],
applyNo
:
''
,
list
:
[],
};
},
computed
:
{},
onLoad
(
option
)
{},
watch
:
{},
created
()
{
const
pages
=
getCurrentPages
();
// 获取页面栈
const
currentPage
=
pages
[
pages
.
length
-
1
];
// 获取当前页面的对象
const
options
=
currentPage
.
options
;
// 如果是通过路由带参数的话,参数会在这里
console
.
log
(
'当前页面参数:'
,
options
);
if
(
currentPage
.
options
.
complete
==
"N"
)
{
this
.
applyNo
=
currentPage
.
options
.
order
;
this
.
getOrder
(
currentPage
.
options
.
order
);
}
},
methods
:
{
getOrder
(
applyNo
)
{
this
.
$u
.
api
.
mesApi
.
pdaMaterialReturn
({
pageNum
:
1
,
pageSize
:
10
,
applyNo
})
.
then
((
res
)
=>
{
if
(
res
&&
res
.
code
-
200
===
0
)
{
this
.
list
=
res
.
rows
const
data
=
res
.
rows
const
result
=
data
.
filter
((
item
,
index
,
self
)
=>
{
return
self
.
findIndex
(
t
=>
t
.
sapItemCode
===
item
.
sapItemCode
)
===
index
;
});
this
.
goodsList
=
[...
result
]
}
else
{
this
.
$u
.
toast
(
res
.
msg
);
}
this
.
loading
=
false
;
});
},
getBtnHandle
(
row
)
{
this
[
row
.
way
]();
},
goBack
()
{
console
.
log
(
'进来'
)
uni
.
navigateBack
();
},
goSubmit
()
{
let
flag
=
true
;
if
(
this
.
list
.
length
===
0
)
{
return
;
}
let
arr
=
this
.
list
arr
.
forEach
((
ele
,
index
)
=>
{
if
(
!
ele
.
ERFMG
)
{
flag
=
false
}
else
{
ele
.
MATNR
=
ele
.
sapItemCode
ele
.
WERKS
=
this
.
vuex_user_factory
ele
.
CHARG
=
ele
.
batchNo
ele
.
AUFNR
=
ele
.
workorderCode
ele
.
MTSNR
=
ele
.
applyNo
ele
.
ZEILE
=
index
+
1
ele
.
ZYL
=
'X'
}
})
if
(
!
flag
)
{
return
this
.
$u
.
toast
(
`存在未填写退料数量的物料单`
)
}
const
params
=
{
'zencode'
:
'A009'
,
'item'
:
arr
}
this
.
$u
.
api
.
sapApi
.
sapProiss
(
params
)
.
then
((
res
)
=>
{
this
.
loading
=
false
;
if
(
!
Array
.
isArray
(
res
))
{
return
}
if
(
res
.
every
((
item
)
=>
item
.
TYPE
===
'S'
))
{
// this.$u.toast('提交成功');
this
.
handleMes
(
arr
)
}
const
foundObject
=
res
.
find
(
item
=>
item
.
TYPE
===
'E'
);
if
(
foundObject
&&
foundObject
.
MESSAGE
)
{
this
.
$u
.
toast
(
foundObject
.
MESSAGE
);
}
});
},
handleMes
(
arr
)
{
arr
.
forEach
(
ele
=>
{
ele
.
batchCode
=
ele
.
CHARG
ele
.
returnNum
=
ele
.
ERFMG
});
this
.
$u
.
api
.
mesApi
.
pdaMaterialReturnNum
(
arr
)
.
then
((
res
)
=>
{
this
.
loading
=
false
;
console
.
log
(
res
);
if
(
res
&&
res
.
code
==
200
)
{
this
.
$u
.
toast
(
'提交成功'
);
setTimeout
(()
=>
{
this
.
goBack
()
},
1000
);
}
else
{
this
.
$u
.
toast
(
res
.
msg
);
}
});
},
}
};
</
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
>
\ No newline at end of file
pages/produceReturn/components/oddmentsItem.vue
0 → 100644
View file @
dca143ff
<
template
>
<view
class=
"oddments-item"
>
<view
class=
"listItemTitle"
>
<view
class=
"item title"
>
{{
item
.
sapItemCode
}}
<br>
{{
item
.
itemName
}}
<u-button
class=
"openBtn"
size=
"mini"
type=
"primary"
plain
@
click=
"handleOpen()"
>
均摊明细
</u-button>
</view>
<view
class=
"item input"
>
退料数量:
<uni-easyinput
v-model=
"num"
trim=
"all"
type=
"number"
@
input=
"handleChange"
></uni-easyinput>
/PCS
</view>
<view
class=
"item"
>
申请数量:
{{
batchNum
}}
/PCS
</view>
</view>
<view
class=
"listBottom"
>
<view
class=
"bottomTitle"
@
tap=
"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 sapList"
>
<view
class=
"items"
>
{{
ele
.
batchNo
}}
</view>
<view
class=
"items"
>
{{
ele
.
sapItemCode
}}
<br>
{{
ele
.
itemName
}}
</view>
<view
class=
"items"
>
PL号:
<br>
<view
class=
"items"
v-for=
"p in ele.plNum.split('|')"
>
{{
p
}}
</view>
</view>
<view
class=
"items"
>
批次数量:
{{
ele
.
backNum
}}
/PCS
</view>
<view
class=
"items"
>
生产日期:
{{
ele
.
produceTime
}}
</view>
</view>
</view>
</view>
<u-popup
class=
"oddments-popup"
v-model=
"visible"
mode=
"center"
:mask-close-able=
"false"
>
<scroll-view
scroll-y=
"true"
style=
"height: 600rpx;"
>
<view
class=
"content"
v-for=
"(ele, idx) in pordList"
>
<view
class=
"item"
>
生产单号:
{{
ele
.
workorderCode
}}
</view>
<view
class=
"item"
>
{{
ele
.
sapItemCode
}}
<br>
{{
ele
.
itemName
}}
</view>
<view
class=
"item"
>
工单计划数:
{{
ele
.
quantity
}}
/PCS
</view>
<view
class=
"item"
>
均摊数:
{{
ele
.
ERFMG
}}
/PCS
</view>
</view>
</scroll-view>
<u-button
class=
"btn"
size=
"medium"
type=
"primary"
plain
@
click=
"handleClose()"
>
关闭
</u-button>
</u-popup>
</view>
</
template
>
<
script
>
export
default
{
props
:
{
item
:
{
type
:
Object
,
default
:
()
=>
{}
},
list
:
{
typeof
:
Array
,
default
:
()
=>
[{}]
},
},
computed
:
{
sapList
()
{
let
arr
=
[];
this
.
list
.
forEach
((
item
,
index
)
=>
{
if
(
item
.
sapItemCode
==
this
.
item
.
sapItemCode
)
{
arr
.
push
(
item
)
}
})
return
arr
;
},
batchList
()
{
const
temp
=
this
.
sapList
.
filter
((
item
,
index
,
self
)
=>
{
return
self
.
findIndex
(
t
=>
t
.
batchNo
===
item
.
batchNo
)
===
index
});
const
arr
=
JSON
.
parse
(
JSON
.
stringify
(
temp
))
arr
.
forEach
((
item
,
index
)
=>
{
item
.
backNum
=
0
this
.
sapList
.
forEach
((
val
,
key
)
=>
{
if
(
item
.
batchNo
==
val
.
batchNo
)
{
item
.
backNum
+=
val
.
backNum
}
})
})
return
arr
},
batchNum
()
{
let
num
=
0
this
.
sapList
.
forEach
((
item
,
index
)
=>
{
if
(
item
.
sapItemCode
==
this
.
item
.
sapItemCode
)
{
num
+=
item
.
backNum
}
});
return
num
},
pordList
()
{
return
this
.
sapList
.
filter
((
item
,
index
,
self
)
=>
{
return
self
.
findIndex
(
t
=>
t
.
workorderCode
===
item
.
workorderCode
)
===
index
;
});
},
totalNum
()
{
let
num
=
0
this
.
list
.
filter
((
item
,
index
,
self
)
=>
{
if
(
self
.
findIndex
(
t
=>
t
.
workorderCode
===
item
.
workorderCode
)
===
index
)
{
num
+=
item
.
quantity
}
});
return
num
}
},
data
()
{
return
{
num
:
""
,
show
:
false
,
visible
:
false
}
},
methods
:
{
handleOpen
()
{
this
.
visible
=
true
},
handleClose
()
{
this
.
visible
=
false
},
handleChange
(
val
)
{
if
(
val
>
this
.
batchNum
)
{
this
.
$u
.
toast
(
"退料数量不可以超过申请数量!"
);
}
else
{
this
.
sapList
.
forEach
(
ele
=>
{
ele
.
ERFMG
=
(
val
*
(
ele
.
quantity
/
this
.
totalNum
)).
toFixed
(
2
);
})
}
},
}
}
</
script
>
<
style
lang=
"scss"
scoped
>
.listItemTitle
{
display
:
flex
;
flex-direction
:
column
;
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
;
}
.title
{
display
:
flex
;
align-items
:
flex-start
;
justify-content
:
space-between
;
}
.input
{
width
:
400rpx
;
display
:
flex
;
justify-content
:
flex-start
;
align-items
:
center
;
}
}
.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
;
}
}
}
}
/
deep
/
.u-sticky
{
top
:
0
!
important
;
background
:
#fff
;
}
.boxBtn
{
display
:
flex
;
justify-content
:
space-between
;
/
deep
/
.u-btn
{
margin-right
:
0
!
important
;
}
}
.oddments-popup
{
/
deep
/
.u-mode-center-box
{
padding
:
12rpx
;
background-color
:
#f2f3f7
;
text-align
:
center
;
.uni-scroll-view
{
.content
{
background
:
#fff
;
margin-bottom
:
8rpx
;
padding
:
4rpx
;
border-radius
:
8rpx
;
text-align
:
left
;
.item
{
color
:
#000
;
font-size
:
28rpx
;
font-weight
:
500
;
}
}
}
}
.btn
{
margin-top
:
12rpx
;
}
}
</
style
>
\ No newline at end of file
pages/produceReturn/putawayInfo.vue
→
pages/produceReturn/
components/
putawayInfo.vue
View file @
dca143ff
<
template
>
<view
class=
"page"
>
<StickyNavBar>
<NavBar
title=
"采购入库扫描"
></NavBar>
<FactorySelect
v-model=
"warehouseCode"
@
change=
"warehouseChange"
/>
<view
class=
"btn"
>
<FactorySelect
v-model=
"warehouseCode"
@
change=
"warehouseChange"
/>
<uni-easyinput
v-if=
"vuex_user_factory !== '1010'"
prefixIcon=
"search"
class=
"topSearch"
v-model=
"nlpla"
focus
placeholder=
"请扫描仓位"
@
change=
"handleInputNlpla"
></uni-easyinput>
<uni-easyinput
prefixIcon=
"search"
confirm-type=
"search"
:disabled=
"isDisabled"
v-model=
"wxparams"
:focus=
"isFocus"
placeholder=
"请扫描产品包装条码/外箱码"
@
confirm=
"handleConfirm"
></uni-easyinput>
<!--
<view
class=
"checkedCase"
>
<checkbox-group
@
change=
"checkedChange"
>
<checkbox
value=
"r1"
:checked=
"checkedBox"
/>
是否结案
</checkbox-group>
</view>
-->
</view>
<view
class=
"total"
>
<view
class=
"left"
>
入库明细
</view>
...
...
@@ -19,41 +22,45 @@
<text
class=
"blue"
>
{{
totalNum
}}
</text>
</view>
</view>
</StickyNavBar>
<ContentLoadingMore
class=
"cardbox"
:list=
'chargaArr'
>
<scroll-view
scroll-y=
"true"
style=
"height: 680rpx;"
>
<view
class=
"cardContent"
v-for=
"(item, index) in chargaArr"
>
<listItem
:item=
"item"
:goodsList=
"goodsList"
:nlpla=
"nlpla"
@
deleGonds=
"dele
Gonds"
/>
<PutwayItem
:item=
'item'
:list=
'chargaArr'
@
delGonds=
"del
Gonds"
/>
</view>
</scroll-view>
</ContentLoadingMore>
<BottomBtn
:btnArr=
"btnArr"
@
getBtnHandle=
"getBtnHandle"
></BottomBtn>
</view>
</
template
>
<
script
>
import
listItem
from
"@/pages/purchaseStorage/listItem.vue"
import
StickyNavBar
from
'@/components/StickyNavBar/index.vue'
;
import
FactorySelect
from
'@/components/FactorySelect/FactorySelect.vue'
import
ContentLoadingMore
from
'@/components/ContentLoadingMore/index.vue'
;
import
PutwayItem
from
'./putwayItem.vue'
;
import
BottomBtn
from
'@/components/BottomBtn/index.vue'
;
import
FactorySelect
from
'@/components/FactorySelect/FactorySelect.vue'
import
{
parseTime
}
from
"@/utils/ruoyi"
;
export
default
{
components
:
{
StickyNavBar
,
FactorySelect
,
ContentLoadingMore
,
PutwayItem
,
BottomBtn
,
listItem
,
FactorySelect
},
data
()
{
return
{
r1
:
''
,
checkedBox
:
true
,
number
:
0
,
totalNum
:
0
,
show
:
true
,
nlpla
:
''
,
wxparams
:
''
,
warehouseCode
:
''
,
applyNo
:
''
,
btnArr
:
[{
style
:
''
,
type
:
'warning'
,
...
...
@@ -67,6 +74,7 @@
way
:
'goSubmit'
}
],
list
:
[],
goodsList
:
[],
isFocus
:
false
,
isDisabled
:
false
,
...
...
@@ -74,14 +82,46 @@
};
},
created
()
{
// this.getPlnr('100001240428000002|00100000000000014.000|10002442800002');
// this.getPlnr('100001240428000002|00100000000000019.500|10002442800001');
const
pages
=
getCurrentPages
();
// 获取页面栈
const
currentPage
=
pages
[
pages
.
length
-
1
];
// 获取当前页面的对象
const
options
=
currentPage
.
options
;
// 如果是通过路由带参数的话,参数会在这里
console
.
log
(
'当前页面参数:'
,
options
);
if
(
currentPage
.
options
.
complete
==
"N"
)
{
this
.
applyNo
=
currentPage
.
options
.
order
;
this
.
getOrder
(
currentPage
.
options
.
order
);
}
},
methods
:
{
getOrder
(
applyNo
)
{
this
.
$u
.
api
.
mesApi
.
pdaMaterialReturn
({
pageNum
:
1
,
pageSize
:
10
,
applyNo
})
.
then
((
res
)
=>
{
if
(
res
&&
res
.
code
-
200
===
0
)
{
const
data
=
res
.
rows
const
arr
=
[];
const
result
=
data
.
filter
((
item
,
index
,
self
)
=>
{
if
(
!
arr
.
includes
((
item
.
sapItemCode
)))
{
arr
.
push
(
item
.
sapItemCode
)
}
});
this
.
list
=
arr
}
else
{
this
.
$u
.
toast
(
res
.
msg
);
}
this
.
loading
=
false
;
});
},
warehouseChange
(
e
)
{
console
.
log
(
this
.
warehouseCode
,
'----'
);
},
deleGonds
(
detail
)
{
// checkedChange() {
// this.checkedBox = !this.checkedBox
// },
delGonds
(
detail
)
{
this
.
goodsList
.
forEach
((
ele
,
idx
)
=>
{
if
(
detail
.
PLNR
===
ele
.
PLNR
)
{
this
.
goodsList
.
splice
(
idx
,
1
);
...
...
@@ -107,6 +147,8 @@
}
const
data
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
goodsList
))
data
.
forEach
(
ele
=>
{
ele
.
applyNo
=
this
.
applyNo
ele
.
windCase
=
this
.
checkedBox
?
'Y'
:
'N'
ele
.
ERFMG
=
ele
.
TOMNG
ele
.
ERFME
=
ele
.
MEINS
// 添加仓库别
...
...
@@ -126,6 +168,9 @@
return
}
if
(
res
&&
res
.
every
((
item
)
=>
item
.
TYPE
===
'S'
))
{
if
(
this
.
checkedBox
)
{
this
.
handleMes
(
data
)
}
this
.
goodsList
=
[];
this
.
chargaArr
=
[]
this
.
totalNum
=
0
;
...
...
@@ -139,20 +184,32 @@
}
});
},
handleMes
(
arr
)
{
arr
.
forEach
(
ele
=>
{
ele
.
batchCode
=
ele
.
CHARG
ele
.
returnNum
=
0
});
this
.
$u
.
api
.
mesApi
.
pdaMaterialReturnNum
(
arr
)
.
then
((
res
)
=>
{
this
.
loading
=
false
;
console
.
log
(
res
);
if
(
res
&&
res
.
code
==
200
)
{
this
.
$u
.
toast
(
'提交成功'
);
// setTimeout(() => {
// this.goBack()
// }, 1000);
}
else
{
this
.
$u
.
toast
(
res
.
msg
);
}
});
},
handleConfirm
(
e
)
{
this
.
isFocus
=
false
;
// e&& e.length > 79 && this.getPlnr(e);
// console.log(e);
e
&&
this
.
getPlnr
(
e
);
},
handleInputNlpla
(
e
)
{
if
(
e
)
{
// this.nlpla = e;
// this.goodsList.forEach((ele) => {
// this.totalNum += ele.TOMNG-0;
// ele.NLPLA = ele.NLPLA || this.nlpla;
// });
}
if
(
e
)
{}
},
getPlnr
(
plnr
)
{
this
.
isDisabled
=
true
;
...
...
@@ -171,6 +228,7 @@
zType
:
'001'
},
300
)
.
then
((
res
)
=>
{
console
.
log
(
this
.
list
);
if
(
res
&&
res
.
RESULT
.
TYPE
===
'S'
)
{
if
(
this
.
goodsList
.
some
((
item
)
=>
item
.
PLNR
===
plnr
))
{
setTimeout
(()
=>
{
...
...
@@ -181,6 +239,17 @@
this
.
$u
.
toast
(
'已经存在当前条码'
);
return
}
// console.log(this.list);
// console.log(res.DATA[0]["MATNR"]);
console
.
log
(
this
.
list
.
includes
(
res
.
DATA
[
0
][
"MATNR"
]));
if
(
!
this
.
list
.
includes
(
res
.
DATA
[
0
][
"MATNR"
]))
{
setTimeout
(()
=>
{
this
.
wxparams
=
''
;
this
.
isFocus
=
true
;
this
.
isDisabled
=
false
;
},
1000
);
return
this
.
$u
.
toast
(
'当前条码物料编号不匹配'
);
}
const
arr
=
[{
...
res
.
DATA
[
0
],
NLPLA
:
this
.
nlpla
...
...
@@ -232,9 +301,18 @@
padding
:
20rpx
;
background
:
#fff
;
.factoryBox
{
padding
:
0
;
margin-bottom
:
10px
;
}
.topSearch
{
margin-bottom
:
20rpx
;
}
.checkedCase
{
margin-top
:
10rpx
;
}
}
.bottomBtn
{
...
...
pages/produceReturn/components/putwayItem.vue
0 → 100644
View file @
dca143ff
<
template
>
<view
class=
"putway-item"
>
<view
class=
"listItemTitle"
>
<view
class=
"boxBtn"
>
<view
class=
"item"
>
入库批次:
{{
item
.
CHARG
}}
</view>
<u-button
size=
"mini"
type=
"primary"
plain
@
click=
"handleDelete()"
>
<u-icon
name=
"trash"
size=
"28"
></u-icon>
删除
</u-button>
</view>
<view
class=
"item"
>
物料编号:
{{
item
.
MATNR
}}
</view>
<view
class=
"item"
>
物料描述:
{{
item
.
MAKTX
}}
</view>
<view
class=
"item"
>
入库数量:
{{
item
.
cardNum
}}
</view>
</view>
<view
class=
"listBottom"
>
<view
class=
"bottomTitle"
@
tap=
"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 list"
v-if=
"ele.CHARG === item.CHARG"
>
<view
class=
"items plNum"
>
{{
ele
.
PLNR
}}
</view>
<view
class=
"item"
>
入库库位:
{{
ele
.
NLPLA
}}
</view>
<view
class=
"items"
>
数量:
{{
ele
.
TOMNG
}}
</view>
<view
class=
"items"
>
生产日期:
{{
ele
.
BLDAT
}}
</view>
</view>
</view>
</view>
</view>
</
template
>
<
script
>
export
default
{
props
:
{
item
:
{
type
:
Object
,
default
:
()
=>
{}
},
list
:
{
typeof
:
Array
,
default
:
()
=>
[{}]
},
},
data
()
{
return
{
num
:
""
,
show
:
true
,
}
},
methods
:
{
handleDelete
()
{
this
.
$emit
(
'delGonds'
,
this
.
item
)
}
}
}
</
script
>
<
style
lang=
"scss"
scoped
>
.listItemTitle
{
display
:
flex
;
flex-direction
:
column
;
width
:
100%
;
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
;
}
.plNum
{
height
:
80rpx
;
word-break
:
break-all
;
}
}
}
}
/
deep
/
.u-sticky
{
top
:
0
!
important
;
background
:
#fff
;
}
.boxBtn
{
display
:
flex
;
justify-content
:
space-between
;
/
deep
/
.u-btn
{
margin-right
:
0
!
important
;
}
}
</
style
>
\ No newline at end of file
pages/produceReturn/oddNumList.vue
View file @
dca143ff
...
...
@@ -3,7 +3,6 @@
<StickyNavBar>
<NavBar
title=
"生产退料单号"
></NavBar>
</StickyNavBar>
<!--
<u-tabs
:list=
"tabList"
:current=
"current"
@
change=
"handleTabChange"
></u-tabs>
-->
<ContentLoadingMore
class=
"cardbox"
:loadmore=
'true'
:status=
"status"
:list=
'goodsList'
>
<view
class=
"cardContent"
v-for=
"(item, index) in goodsList"
>
<view
class=
"listItemTitle"
@
click=
"handleClick(item)"
>
...
...
@@ -13,6 +12,7 @@
<view
class=
"item"
>
物料描述:
{{
item
.
itemName
}}
</view>
<view
class=
"item"
>
作业单元:
{{
item
.
workunitName
}}
</view>
<view
class=
"item"
>
作业类型:
{{
item
.
materialType
?
'补料'
:
'领料'
}}
</view>
<view
class=
"item"
>
退料方式:
{{
!
item
.
complete
?
'整单退料'
:
'余料退料'
}}
</view>
<view
class=
"item"
>
备料状态:
{{
item
.
grantNum
?
'配货中'
:
'未配货'
}}
</view>
<view
class=
"item"
>
计划时间:
{{
item
.
startTime
}}
</view>
</view>
...
...
@@ -27,31 +27,14 @@
import
StickyNavBar
from
'@/components/StickyNavBar/index.vue'
;
import
ContentLoadingMore
from
'@/components/ContentLoadingMore/index.vue'
;
import
BottomBtn
from
'@/components/BottomBtn/index.vue'
;
// import Rectification from './components/rectification.vue';
// import Oddments from './components/oddments.vue';
// import Putaway from './components/putaway.vue';
export
default
{
components
:
{
StickyNavBar
,
ContentLoadingMore
,
BottomBtn
,
// Rectification,
// Oddments,
// Putaway
},
data
()
{
return
{
// current: 1,
// tabList: [{
// name: '整退',
// comName: 'Rectification'
// }, {
// name: '余料',
// comName: 'Oddments'
// }, {
// name: '上架',
// comName: 'Putaway'
// }],
number
:
0
,
totalNum
:
0
,
show
:
true
,
...
...
@@ -97,7 +80,7 @@
},
handleClick
(
item
)
{
uni
.
navigateTo
({
url
:
`/pages/produceReturn/produceReturnList?
order=
${
item
.
applyNo
}
`
url
:
`/pages/produceReturn/produceReturnList?
complete=
${
!
item
.
complete
?
'Y'
:
'N'
}
&order=
${
item
.
applyNo
}
`
});
// switch (this.current) {
// case 0:
...
...
@@ -178,17 +161,14 @@
})
.
then
((
res
)
=>
{
if
(
res
&&
res
.
code
-
200
===
0
)
{
this
.
goodsList
=
this
.
goodsList
.
concat
(
res
.
rows
);
this
.
goodsList
=
this
.
goodsList
.
concat
(
res
.
rows
).
filter
((
item
,
index
,
self
)
=>
{
return
self
.
findIndex
(
t
=>
t
.
applyNo
===
item
.
applyNo
)
===
index
;
});
this
.
total
=
res
.
total
}
else
{
this
.
$u
.
toast
(
res
.
msg
);
}
});
},
handleTabChange
(
index
)
{
console
.
log
(
index
);
this
.
current
=
index
;
this
.
getPlnr
();
}
}
};
...
...
pages/produceReturn/oddmentsInfo.vue
deleted
100644 → 0
View file @
76b36d62
This diff is collapsed.
Click to expand it.
pages/produceReturn/produceReturnList.vue
View file @
dca143ff
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment