|
|
@@ -0,0 +1,252 @@
|
|
|
+<template>
|
|
|
+ <div class="container">
|
|
|
+ <van-nav-bar
|
|
|
+ title="盲收-多人任务"
|
|
|
+ left-arrow
|
|
|
+ fixed
|
|
|
+ placeholder
|
|
|
+ >
|
|
|
+ <template #left>
|
|
|
+ <van-icon name="arrow-left" size="25" @click="goBack" />
|
|
|
+ <div style="color: #fff" @click="onClickLeft">返回</div>
|
|
|
+ </template>
|
|
|
+ <template #right>
|
|
|
+ <div style="color: #fff" @click="onClickRight">任务中心</div>
|
|
|
+ <van-icon name="newspaper-o" size="25" @click="onClickRight" />
|
|
|
+ </template>
|
|
|
+ </van-nav-bar>
|
|
|
+ <div class="mode">
|
|
|
+ <div class="mode-input-box">
|
|
|
+ <div class="mode-input-text">请扫描盲收/般仓任务号</div>
|
|
|
+ <van-field class="mode-input" ref="taskNoRef"
|
|
|
+ :style="taskNo!==''?'border: 2px solid #07c160':''" clearable v-model="taskNo"
|
|
|
+ placeholder="请扫描盲收/般仓任务号"
|
|
|
+ @keydown.enter="_getBlindTask()"
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ <div class="mode-select">
|
|
|
+ <div class="select-list">
|
|
|
+ <div class="select-item" @click="onSelect(2)">
|
|
|
+ <i class="iconfont icon-zaixianqingdian select-item-icon" style="color: #7598ca"></i>
|
|
|
+ <div class="left">
|
|
|
+ <div class="select-item-title">清点模式</div>
|
|
|
+ <div class="select-item-tips">步骤:扫描条码->进行装箱</div>
|
|
|
+ </div>
|
|
|
+ <div class="right">
|
|
|
+ <van-button type="primary" round size="small">选择</van-button>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="select-item" @click="onSelect(1)">
|
|
|
+ <i class="iconfont icon-anxiangshoufenhuozuoyedansvg select-item-icon" style="color: #1989fa"></i>
|
|
|
+ <div class="left">
|
|
|
+ <div class="select-item-title" >分货模式</div>
|
|
|
+ <div class="select-item-tips">步骤:扫描条码->相同条码分配格口</div>
|
|
|
+ </div>
|
|
|
+ <div class="right">
|
|
|
+ <van-button type="primary" round size="small"> 选择</van-button>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ </div>
|
|
|
+ <div class="select-item" @click="onSelect(3)">
|
|
|
+ <i class="iconfont icon-shoudongluru select-item-icon" style="color: #ef9a00"></i>
|
|
|
+ <div class="left">
|
|
|
+ <div class="select-item-title">录入模式</div>
|
|
|
+ <div class="select-item-tips">步骤:扫描条码->录入效期、批次信息->输入数量->进行装箱</div>
|
|
|
+ </div>
|
|
|
+ <div class="right">
|
|
|
+ <van-button type="primary" round size="small"> 选择</van-button>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="select-item" @click="onSelect(5)">
|
|
|
+ <i class="iconfont icon-zhuangxiangyanhuodan select-item-icon" style="color:#55d1c2;"></i>
|
|
|
+ <div class="left">
|
|
|
+ <div class="select-item-title">按箱清点+分货多人</div>
|
|
|
+ <div class="select-item-tips">步骤:扫描箱号->扫描条码->统计数量</div>
|
|
|
+ </div>
|
|
|
+ <div class="right">
|
|
|
+ <van-button type="primary" round size="small"> 选择</van-button>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <task-list ref="taskListRef" />
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+<script setup>
|
|
|
+import { goBack } from '@/utils/android.ts'
|
|
|
+import { useRoute, useRouter } from 'vue-router'
|
|
|
+import { onMounted, ref } from 'vue'
|
|
|
+import { openListener, scanInit } from '@/utils/keydownListener.js'
|
|
|
+import { getBlindTask, getBlindTaskList, getMovingTask, setBlindTaskMode } from '@/api/blind/index.ts'
|
|
|
+import { showConfirmDialog, showToast } from 'vant'
|
|
|
+import TaskList from '@/views/inbound/blindCollection/components/TaskList.vue'
|
|
|
+import { closeLoading, showLoading } from '@/utils/loading.ts'
|
|
|
+const route = useRoute()
|
|
|
+const router = useRouter()
|
|
|
+//任务号
|
|
|
+const taskNo=ref('')
|
|
|
+const taskNoRef=ref(null)
|
|
|
+// 扫描
|
|
|
+onMounted(() => {
|
|
|
+ openListener()
|
|
|
+ setTimeout(() => {
|
|
|
+ taskNoRef.value?.focus()
|
|
|
+ scanInit(_handlerScan)
|
|
|
+ },300)
|
|
|
+})
|
|
|
+//监听扫描
|
|
|
+const _handlerScan=(code)=>{
|
|
|
+ if (/[a-zA-Z]/.test(code)) {
|
|
|
+ code =code.toUpperCase(); // 强制转换为大写字母
|
|
|
+ }
|
|
|
+ taskNo.value=code
|
|
|
+ _getBlindTask()
|
|
|
+}
|
|
|
+const onClickLeft = () => {
|
|
|
+ if(route.query.type==='picking'){
|
|
|
+ history.back();
|
|
|
+ }else {
|
|
|
+ goBack()
|
|
|
+ }
|
|
|
+};
|
|
|
+const link=(code,type)=>{
|
|
|
+ router.push({name:'BlindTask',query: { code,type }})
|
|
|
+}
|
|
|
+//查询盲收任务
|
|
|
+const taskModel=ref({})
|
|
|
+const _getBlindTask=()=>{
|
|
|
+ if(taskNo.value===''){
|
|
|
+ showToast({duration:5000,message:'请先扫描盲收或般仓任务号'})
|
|
|
+ return
|
|
|
+ }
|
|
|
+ taskModel.value={}
|
|
|
+ let url=getBlindTask,data={taskNo:taskNo.value},type=0
|
|
|
+ if(taskNo.value.startsWith("BC")) {
|
|
|
+ url=getMovingTask
|
|
|
+ data={code:taskNo.value}
|
|
|
+ type=1
|
|
|
+ }
|
|
|
+ url(data).then(res=>{
|
|
|
+ taskModel.value=res.data
|
|
|
+ //盲收任务
|
|
|
+ if(type===0){
|
|
|
+ if(res.data && res.data.type){
|
|
|
+ link(res.data.code,res.data.type)
|
|
|
+ }else {
|
|
|
+ showToast({duration:5000,message:'该任务未绑定模式,请选择模式!'})
|
|
|
+ }
|
|
|
+ }else {
|
|
|
+ //般仓任务
|
|
|
+ if(res.data){
|
|
|
+ }
|
|
|
+ }
|
|
|
+ })
|
|
|
+}
|
|
|
+//设置盲收任务类型
|
|
|
+const onSelect=(type)=>{
|
|
|
+ const modeMap={
|
|
|
+ 1:'分货模式',
|
|
|
+ 2:'清点模式',
|
|
|
+ 3:'录入模式',
|
|
|
+ 5:'按箱清点+分货多人',
|
|
|
+ }
|
|
|
+ if(taskNo.value===''){
|
|
|
+ showToast({duration:5000,message:'请先扫描盲收或般仓任务号'})
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if(Object.keys(taskModel.value).length===0){
|
|
|
+ showToast({duration:5000,message:'未检测到任务,请检查任务号是否正确!'})
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if(taskModel.value.type){
|
|
|
+ link(taskModel.value.code,taskModel.value.type)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ showConfirmDialog({
|
|
|
+ title: '温馨提示',
|
|
|
+ message:
|
|
|
+ `是否将盲收任务:${taskNo.value},设置为:${modeMap[type]}`,
|
|
|
+ })
|
|
|
+ .then(() => {
|
|
|
+ const params={
|
|
|
+ type:modeMap[type],
|
|
|
+ warehouseCode:taskModel.value.warehouseCode,
|
|
|
+ ownerCode:taskModel.value.ownerCode,
|
|
|
+ code:taskModel.value.code,
|
|
|
+ }
|
|
|
+ setBlindTaskMode(params).then(res=>{
|
|
|
+ link(taskModel.value.code,modeMap[type])
|
|
|
+ })
|
|
|
+ })
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+const taskListRef=ref(null)
|
|
|
+/**
|
|
|
+ * 任务中心
|
|
|
+ */
|
|
|
+const onClickRight = () => {
|
|
|
+ showLoading()
|
|
|
+ getBlindTaskList().then(res=>{
|
|
|
+ closeLoading()
|
|
|
+ if(res.data.length>0){
|
|
|
+ taskListRef.value?.show(res.data)
|
|
|
+ }else {
|
|
|
+ showToast({duration:5000,message:'未检测到近两天盲收任务!'})
|
|
|
+ }
|
|
|
+ }).catch(err=>{
|
|
|
+ closeLoading()
|
|
|
+ })
|
|
|
+
|
|
|
+};
|
|
|
+
|
|
|
+</script>
|
|
|
+<style scoped lang="sass">
|
|
|
+.mode
|
|
|
+ .mode-input-box
|
|
|
+ padding: 10px
|
|
|
+ .mode-input-text
|
|
|
+ font-size: 18px
|
|
|
+ font-weight: bold
|
|
|
+ margin: 10px 0
|
|
|
+
|
|
|
+ .mode-input
|
|
|
+ background: #eff0f2
|
|
|
+ padding: 10px 20px
|
|
|
+ font-size: 20px
|
|
|
+ border-radius: 20px
|
|
|
+ border: 2px solid #0077ff
|
|
|
+ font-weight: 500
|
|
|
+ .mode-select
|
|
|
+ padding: 10px
|
|
|
+ .select-list
|
|
|
+ margin-top: 10px
|
|
|
+ text-align: left
|
|
|
+ .select-item
|
|
|
+ padding: 6px 10px
|
|
|
+ background: #ffffff
|
|
|
+ border-radius: 16px
|
|
|
+ display: flex
|
|
|
+ justify-content: space-between
|
|
|
+ align-items: center
|
|
|
+ margin-bottom: 10px
|
|
|
+ position: relative
|
|
|
+ box-sizing: content-box
|
|
|
+ box-shadow: 1px 1px 5px rgba(0, 0, 0, 0.4)
|
|
|
+ .select-item-icon
|
|
|
+ font-size: 40px
|
|
|
+ margin-right: 10px
|
|
|
+ .left
|
|
|
+ flex: 1
|
|
|
+ .right
|
|
|
+ width: 20%
|
|
|
+ text-align: right
|
|
|
+ .select-item-title
|
|
|
+ font-size: 18px
|
|
|
+ font-weight: bold
|
|
|
+ .select-item-tips
|
|
|
+ font-size: 14px
|
|
|
+ color: #666
|
|
|
+
|
|
|
+</style>
|