Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
梁建民
/
wmsApp
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Settings
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
6a8559d8
authored
Jan 24, 2024
by
LJM
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
bug
parent
80ee0eaf
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
238 additions
and
17 deletions
assets/css/picking/sort.scss
pages/immediatelyStockIn/list.vue
pages/picking/sort.vue
pages/transfer/record.vue
assets/css/picking/sort.scss
View file @
6a8559d8
...
...
@@ -529,3 +529,94 @@
}
}
}
.batchNotification
{
position
:
relative
;
width
:
520rpx
;
border-radius
:
10rpx
;
background
:
#fff
;
padding
:
70rpx
0
100rpx
50rpx
;
.title
{
position
:
absolute
;
left
:
12rpx
;
top
:
9rpx
;
font-size
:
26rpx
;
font-weight
:
bold
;
}
.pick_type_val
{
position
:
absolute
;
right
:
6px
;
top
:
10rpx
;
font-size
:
17rpx
;
color
:
#1969f9
;
border
:
1px
solid
#f0f0f2
;
width
:
40rpx
;
height
:
40rpx
;
border-radius
:
50%
;
}
.p1
{
font-size
:
18rpx
;
color
:
#292b33
;
margin-bottom
:
24rpx
;
}
.text
{
margin-bottom
:
12rpx
;
.t1
{
text-align
:
right
;
font-size
:
17rpx
;
color
:
#292b33
;
white-space
:
nowrap
;
}
.t2
{
font-size
:
18rpx
;
color
:
#292b33
;
white-space
:
nowrap
;
text-overflow
:
ellipsis
;
overflow
:
hidden
;
}
.t3
{
font-size
:
18rpx
;
color
:
#f98119
;
}
}
.desc
{
font-size
:
18rpx
;
color
:
#f98119
;
margin
:
12rpx
0rpx
;
}
.button-group
{
position
:
absolute
;
bottom
:
0
;
left
:
0
;
right
:
0
;
width
:
100%
;
height
:
90rpx
;
display
:
flex
;
flex-direction
:
row
;
border-top-color
:
#f5f5f5
;
border-top-style
:
solid
;
border-top-width
:
1px
;
.button-left
{
display
:
flex
;
flex
:
1
;
flex-direction
:
row
;
justify-content
:
center
;
align-items
:
center
;
height
:
100%
;
font-size
:
26rpx
;
}
.button-right
{
display
:
flex
;
flex
:
1
;
flex-direction
:
row
;
justify-content
:
center
;
align-items
:
center
;
height
:
100%
;
border-left-color
:
#f0f0f0
;
border-left-style
:
solid
;
border-left-width
:
1px
;
font-size
:
26rpx
;
color
:
#007aff
;
}
}
}
pages/immediatelyStockIn/list.vue
View file @
6a8559d8
...
...
@@ -81,6 +81,7 @@
</view>
</view>
</view>
<view
class=
"row rowCenter verCenter"
v-if=
"!hasMoreData && page > 1"
style=
"color: #999;font-size: 16rpx;padding: 10px 0;flex: 0 0 100%;font-weight: normal;"
>
--
已经到底了
--
</view>
</view>
<!-- 无数据展示 -->
<view
class=
"no-date column rowCenter verCenter"
v-else
>
...
...
@@ -91,12 +92,15 @@
</
template
>
<
script
>
import
{
API
}
from
'@/util/api.js'
;
export
default
{
import
{
API
}
from
'@/util/api.js'
;
export
default
{
data
()
{
return
{
list
:
[],
countList
:
''
,
page
:
1
,
limit
:
30
,
hasMoreData
:
true
,
//是否分页加载
formParams
:
{
goods_sn
:
''
,
goods_name
:
''
,
...
...
@@ -107,6 +111,13 @@ export default {
}
};
},
onReachBottom
()
{
if
(
!
this
.
hasMoreData
)
{
return
;
}
this
.
page
++
;
this
.
getData
();
},
onNavigationBarButtonTap
(
e
)
{
if
(
e
.
index
==
0
)
{
uni
.
reLaunch
({
...
...
@@ -130,11 +141,16 @@ export default {
* 获取列表数据
*/
getData
()
{
this
.
request
(
API
.
searchStockList
,
'POST'
,
this
.
formParams
,
true
).
then
(
res
=>
{
this
.
request
(
API
.
searchStockList
,
'POST'
,
{
page
:
this
.
page
,
limit
:
this
.
limit
,
...
this
.
formParams
}
,
true
).
then
(
res
=>
{
if
(
res
.
code
===
0
)
{
this
.
list
=
res
.
data
.
list
;
if
(
res
.
data
.
list
.
length
>
0
)
{
this
.
hasMoreData
=
true
;
this
.
list
=
this
.
list
.
concat
(
res
.
data
.
list
);
this
.
countList
=
res
.
data
.
countList
;
}
else
{
this
.
hasMoreData
=
false
;
}
}
else
{
uni
.
showToast
({
title
:
res
.
msg
,
icon
:
'error'
...
...
@@ -143,9 +159,9 @@ export default {
});
}
}
};
};
</
script
>
<
style
scoped
lang=
"scss"
>
@import
'@/assets/css/immediatelyStockIn/index.scss'
;
@import
'@/assets/css/immediatelyStockIn/index.scss'
;
</
style
>
\ No newline at end of file
pages/picking/sort.vue
View file @
6a8559d8
...
...
@@ -300,7 +300,9 @@
</view>
<view
class=
"form-input"
style=
"margin-bottom: 0;"
>
<view
class=
"input-title"
><text
class=
"input-title-t1"
>
拣货数量:
</text></view>
<view
class=
"input-box"
><input
type=
"number"
class=
"uni-input"
placeholder-style=
"color:#919399"
placeholder=
"请输入拣货数量"
v-model=
"formParams.pick_qty"
@
input=
"handleInputNumber($event, detail.lock_qty - detail.pick_qty)"
/></view>
<view
class=
"input-box"
>
<input
type=
"number"
class=
"uni-input"
placeholder-style=
"color:#919399"
placeholder=
"请输入拣货数量"
v-model=
"formParams.pick_qty"
@
input=
"handleInputNumber($event, detail.lock_qty - detail.pick_qty)"
/>
</view>
</view>
<view
class=
"form-input"
>
<view
class=
"input-title"
><text
class=
"input-title-t1"
>
拣货备注:
</text></view>
...
...
@@ -345,7 +347,8 @@
</view>
</scroll-view>
<!-- 拆货打印标签-->
<view
class=
"print row verCenter"
>
<view
class=
"print row verCenter bothSide"
>
<view
class=
"row verCenter"
>
<checkbox-group
@
change=
"onCheckboxChange"
>
<label>
<checkbox
value=
"1"
color=
"#1969f9"
style=
"transform:scale(0.7)"
:checked=
"is_print"
/>
...
...
@@ -373,6 +376,8 @@
</
template
>
</view>
</view>
<view
style=
"font-size: 18rpx;color: #F98119;"
>
该货品需拆出部分拣货并重贴标签
</view>
</view>
<view
class=
"btn row verCenter bothSide"
>
<view
class=
"btn1 row rowCenter verCenter"
@
click=
"pick(detail.lock_id, formParams.pick_qty, detail.stock_out_item_id)"
>
拣 货
</view>
</view>
...
...
@@ -590,6 +595,35 @@
</view>
</view>
</uni-drawer>
<!-- 拆货提醒 -->
<uni-popup
ref=
"message"
type=
"dialog"
>
<view
class=
"batchNotification column rowCenter verCente"
>
<view
class=
"title"
>
拆货提醒
</view>
<text
class=
"pick_type_val row rowCenter verCenter"
>
散
</text>
<view
class=
"p1"
>
{{pick_data[0].stock_in_batch_sn}}
</view>
<view
class=
"text row verCente"
>
<text
class=
"t1"
>
型
号:
</text>
<text
class=
"t2"
>
{{pick_data[0].goods_name}}
</text>
</view>
<view
class=
"text row verCente"
>
<text
class=
"t1"
>
标准品牌:
</text>
<text
class=
"t2"
>
{{pick_data[0].brand_name}}
</text>
</view>
<view
class=
"text row verCente"
>
<text
class=
"t1"
>
库存数量:
</text>
<text
class=
"t2"
>
{{pick_data[0].stock_num}}
</text>
</view>
<view
class=
"text row verCente"
>
<text
class=
"t1"
>
应拣数量:
</text>
<text
class=
"t3"
>
{{pick_data[0].lock_qty - pick_data[0].pick_qty}}
</text>
</view>
<view
class=
"desc"
>
该货品需拆出部分拣货并重贴标签,建议单个拣货!
</view>
<view
class=
"button-group"
>
<view
class=
"button-left"
@
click=
"close()"
>
关闭提醒
</view>
<view
class=
"button-right"
@
click=
"showDrawer(1, pick_data[0])"
>
单个拣货
</view>
</view>
</view>
</uni-popup>
</view>
</template>
...
...
@@ -632,6 +666,9 @@
print_style_index
:
1
,
print_language
:
[
'中文标签'
,
'英文标签'
],
print_language_index
:
0
,
is_required
:
false
,
//若该货品整散标识为“散”货且该出库单据的仓库不为“深圳自营仓”时,则【拣货数量】字段,系统不自动填入
pick_data
:
[],
//拆货数据
is_batchNotification
:
false
,
searchParams
:
{
stock_out_id
:
''
,
position_name
:
''
,
...
...
@@ -762,6 +799,15 @@
list
.
forEach
((
item
,
index
)
=>
{
this
.
filterChange
(
index
);
});
var
filteredList
=
list
.
slice
(
-
1
).
filter
(
item
=>
item
.
pick_type_val
===
'散'
);
if
(
filteredList
.
length
>
0
)
{
this
.
pick_data
=
filteredList
;
this
.
is_batchNotification
=
true
;
}
else
{
this
.
is_batchNotification
=
false
;
}
}
else
{
this
.
is_batchNotification
=
false
;
}
//如果后台有消息返回,就提示
...
...
@@ -783,8 +829,16 @@
return
false
;
}
else
{
uni
.
showToast
({
icon
:
'success'
icon
:
'success'
,
duration
:
500
});
//扫描入库批次号识别物品后,若整散标识为“散”货且该出库单据的仓库不为“深圳自营仓”时,则弹出提醒窗口
setTimeout
(()
=>
{
if
(
this
.
is_batchNotification
)
{
this
.
open
();
}
},
500
)
}
this
.
clearInputAndFocus
();
//执行最后再次获取焦点
...
...
@@ -837,6 +891,7 @@
* @param {Object} data
*/
showDrawer
(
type
,
data
)
{
this
.
close
();
if
(
type
==
1
)
{
//按货品拣货
this
.
formParams
.
pick_remark
=
''
;
...
...
@@ -851,6 +906,12 @@
this
.
is_print
=
false
;
}
//若该货品整散标识为“散”货且该出库单据的仓库不为“深圳自营仓”时,则【拣货数量】字段,系统不自动填入
if
(
data
.
pick_type_val
==
'散'
&&
this
.
warehouse_id
!=
9
)
{
this
.
is_required
=
true
;
this
.
formParams
.
pick_qty
=
''
;
}
}
else
if
(
type
==
2
)
{
//按容器拣货
this
.
formParams
.
pick_remark
=
''
;
...
...
@@ -903,6 +964,18 @@
this
.
$refs
.
showRightPackMultiPick
.
close
();
},
/**
* 拆货提醒打开
*/
open
()
{
this
.
$refs
.
message
.
open
(
'center'
)
},
/**
* 拆货提醒关闭
*/
close
()
{
this
.
$refs
.
message
.
close
()
},
/**
* 找出false对应的下标
* @param {Object} arr
* @param {Object} target
...
...
@@ -1082,7 +1155,10 @@
this
.
searchParams
.
container_sn
=
''
;
this
.
input_flag_container_sn
=
false
;
}
this
.
clearInputAndFocus
();
//再次获取焦点
//普通模式下获取焦点
if
(
!
this
.
is_batch
)
{
this
.
clearInputAndFocus
();
}
this
.
getData
();
},
/**
...
...
@@ -1189,6 +1265,15 @@
* 按货品拣货提交
*/
pick
(
lock_id
,
pick_qty
,
stock_out_item_id
)
{
if
(
this
.
is_required
)
{
uni
.
showModal
({
title
:
'提示'
,
content
:
'拣货数量必填'
,
showCancel
:
false
});
return
false
;
}
var
num
=
Number
(
this
.
detail
.
lock_qty
)
-
Number
(
this
.
detail
.
pick_qty
);
//需求拣货的数量
var
pick_qty_num
=
pick_qty
*
1
;
//真实拣货数量
//拣货图片集合
...
...
@@ -1221,6 +1306,10 @@
this
.
search_keyword
=
''
;
this
.
searchParams
.
stock_in_batch_sn
=
''
;
this
.
closeDrawer
();
//注意这里是前提是入库标签处于输入的情况下
if
(
this
.
searchParams
.
position_name
)
{
this
.
clearInputAndFocus
();
//再次获取焦点
}
}
else
{
this
.
picked_num
=
Number
(
this
.
picked_num
)
-
pick_qty_num
;
}
...
...
@@ -1228,7 +1317,7 @@
},
timeoutDuration
);
}
else
{
uni
.
showModal
({
itle
:
'提示'
,
t
itle
:
'提示'
,
content
:
res
.
msg
,
showCancel
:
false
});
...
...
@@ -1270,21 +1359,27 @@
const
timeoutDuration
=
this
.
is_print
?
4000
:
2000
;
setTimeout
(()
=>
{
if
(
flag
)
{
//清空数据
//
批量拣货
清空数据
this
.
history_id
=
[];
this
.
filter_id
=
[];
this
.
search_keyword
=
''
;
this
.
searchParams
.
stock_in_batch_sn
=
''
;
this
.
is_batch_active
=
false
;
this
.
closeDrawer
();
//注意这里是前提是入库标签处于输入的情况下
if
(
this
.
searchParams
.
position_name
)
{
this
.
clearInputAndFocus
();
//再次获取焦点
}
}
else
{
//容器拣货关闭数据
this
.
closeDrawer
();
}
this
.
getData
();
},
timeoutDuration
);
}
else
{
uni
.
showModal
({
itle
:
'提示'
,
t
itle
:
'提示'
,
content
:
res
.
msg
,
showCancel
:
false
});
...
...
@@ -1295,7 +1390,9 @@
* 再次获取焦点
*/
clearInputAndFocus
()
{
this
.
input_flag
=
false
;
//关闭叉叉
this
.
input_flag_position_name
=
false
;
//关闭叉叉
this
.
input_flag_stock_in_batch_sn
=
false
;
//关闭叉叉
this
.
is_focus
=
false
;
setTimeout
(()
=>
{
this
.
is_focus
=
true
;
...
...
pages/transfer/record.vue
View file @
6a8559d8
...
...
@@ -5,7 +5,7 @@
<view
class=
"time-interval-box row verCenter bothSide"
>
<view
class=
"row verCenter"
>
<text
class=
"iconfont icon-juxing4"
></text>
<picker
mode=
"date"
@
change=
"bindTimeChange(1, $event)"
>
<picker
mode=
"date"
@
change=
"bindTimeChange(1, $event)"
:value=
"searchParams.exec_start_time"
>
<input
type=
"text"
class=
"uni-input"
placeholder=
"请选择起始时间"
placeholder-style=
"color:#919399"
v-model=
"searchParams.exec_start_time"
/>
</picker>
</view>
...
...
@@ -160,7 +160,23 @@
import
{
API
}
from
'@/util/api.js'
;
import
debounce
from
'lodash/debounce'
;
// 获取当前日期
const
currentDate
=
new
Date
();
// 获取前一个月的日期
const
lastMonthDate
=
new
Date
(
currentDate
);
lastMonthDate
.
setMonth
(
currentDate
.
getMonth
()
-
1
);
// 格式化日期为 YYYY-MM-DD
const
formatDate
=
(
date
)
=>
{
const
year
=
date
.
getFullYear
();
const
month
=
(
date
.
getMonth
()
+
1
).
toString
().
padStart
(
2
,
'0'
);
const
day
=
date
.
getDate
().
toString
().
padStart
(
2
,
'0'
);
return
`
${
year
}
-
${
month
}
-
${
day
}
`
;
};
export
default
{
data
()
{
return
{
is_focus
:
true
,
//获取焦点动态化
...
...
@@ -175,8 +191,8 @@
search_val
:
''
,
from_position_code
:
''
,
//源库位
to_position_code
:
''
,
//目的库位
exec_start_time
:
''
,
//开始时间
exec_end_time
:
''
//结束时间
exec_start_time
:
formatDate
(
lastMonthDate
)
,
//开始时间
exec_end_time
:
formatDate
(
currentDate
)
//结束时间
}
};
},
...
...
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