Browse Source

新增库内语音和自提扫描的零担牵手

myd
qb 1 year ago
parent
commit
278f388cd1
  1. 38
      api/user.js
  2. 16
      compoment/tiplist/tiplist.vue
  3. 4
      config/host.js
  4. 4
      manifest.json
  5. 2
      pages/user/user.vue
  6. 115
      pagesHome/pages/CustomerOrdersDetails/CustomerOrdersDetails.vue
  7. 15
      pagesHome/pages/CustomerTrayDetails/CustomerTrayDetails.vue
  8. 20
      pagesHome/pages/DownGoods/DownGoods.vue
  9. 14
      pagesHome/pages/OrderSortingDetail/OrderSortingDetail.vue
  10. 55
      pagesHome/pages/PeopleScanUp/PeopleScanUp.vue
  11. 40
      pagesHome/pages/PeopleSortingDetail/PeopleSortingDetail.vue
  12. 2
      pagesHome/pages/RelocationAllocationId/RelocationAllocationId.vue
  13. 5
      pagesHome/pages/ScanSortingType/ScanSortingType.vue
  14. 104
      pagesHome/pages/ScanUp/ScanUp.vue
  15. 422
      pagesHome/pages/SelfPScanList/SelfPScanList.vue
  16. 153
      pagesHome/pages/SelfPickupDetails/SelfPickupDetails.vue
  17. 4
      pagesHome/pages/StockUplist/StockUplist.vue
  18. 289
      pagesHome/pages/StockUplistScandetails/StockUplistScandetails.vue
  19. 2
      pagesHome/pages/lnventorysortinglist/lnventorysortinglist.vue
  20. 2
      pagesHome/pages/pickingScan/pickingScan.vue
  21. 2
      unpackage/dist/build/app-plus/pagesHome/pages/CustomerOrdersDetails/CustomerOrdersDetails.css
  22. 1318
      unpackage/dist/dev/app-plus/app-service.js
  23. 12
      unpackage/dist/dev/app-plus/app.css
  24. 4
      unpackage/dist/dev/app-plus/manifest.json
  25. 22
      unpackage/dist/dev/app-plus/pagesHome/pages/CustomerOrdersDetails/CustomerOrdersDetails.css

38
api/user.js

@ -151,7 +151,7 @@ export function billLadingdetailList(data) {
export function billLadingzeroBillData(data) {
return request({
url: `logpm-distribution/app/billLading/zeroBillData`,
url: `logpm-distribution/app/billLading/zeroBillPackData`,
method: "post",
data
});
@ -457,6 +457,18 @@ export function billLadinggetInventory(data) {
data
});
}
/**
* 自提零担订单提交
* @param {Object} data
*/
export function billLadinggetZeroBillPack(data) {
return request({
url: `logpm-distribution/app/billLading/zeroBillPack`,
method: "post",
data
});
}
/**
* 自提详情库存品
* @param {Object} data
@ -481,6 +493,18 @@ export function billLadingscan(data) {
data
});
}
/**
* 自提扫描 -- 零担订单列表的数据
* @param {Object} data
*/
export function billLadingZeroBillOrderData(data) {
return request({
url: `logpm-distribution/app/billLading//zeroBillOrderData`,
method: "post",
data
});
}
/**
* 订单分拣列表
* @param {Object} data
@ -961,6 +985,18 @@ export function warehouseUpdownTypedownScanPackage(data) {
data
});
}
/**
* 下架扫描包件
* @param {Object} data
*/
export function warehouseUpdownTypedownDownAllocation(data) {
return request({
url: `logpm-warehouse/api/warehouseUpdownType/downAllocation`,
method: "post",
data
});
}
/**
* 扫描来源托盘
* @param {Object} data

16
compoment/tiplist/tiplist.vue

@ -71,9 +71,6 @@
:placeholder="item.placeholder" :disabled="item.disabled" type="number" v-model="item.value"
@input="inputNum(item)" />
<text v-else-if="item.disabled" style="flex: 1;"> {{item.value}}</text>
<up-input v-else :placeholder="item.placeholder" border="surround" :disabled="item.disabled"
:type="item.type" v-model="item.value" clearable></up-input>
</view>
</view>
</scroll-view>
@ -478,7 +475,7 @@
.scvboxs {
width: 100%;
height: 500upx;
max-height: 500upx;
}
.imgbx {
@ -639,16 +636,21 @@
margin-bottom: 10upx;
}
&:last-child {
border-bottom: 0px;
}
.inpNum-value {
display: flex;
align-items: center;
justify-content: space-between;
.inpNum {
margin-left: 20upx;
margin-left: 10upx;
flex: 1;
padding: 0 10upx;
border: 1upx solid #000;
padding: 5upx 10upx;
border: 1upx solid #afafaf;
border-radius: 10upx;
}
}
}

4
config/host.js

@ -10,9 +10,9 @@
// zhy
// const devhost = 'http://192.168.10.48:8888/'
// tjj
// const devhost = 'http://192.168.10.29:13000/'
const devhost = 'http://192.168.10.29:13000/'
// cyz
const devhost = 'http://192.168.10.75:8777/'
// const devhost = 'http://192.168.10.75:8777/'
// 正式
// const devhost = 'http://h5uapi.huitongys.com/'
// cg

4
manifest.json

@ -2,8 +2,8 @@
"name" : "货无忧",
"appid" : "__UNI__EB22F37",
"description" : "",
"versionName" : "1.0.9",
"versionCode" : 109,
"versionName" : "1.0.11",
"versionCode" : 1011,
"transformPx" : false,
/* 5+App */
"app-plus" : {

2
pages/user/user.vue

@ -173,7 +173,7 @@
//
// let version = await utils.getversion()
let version = {
version: '1.0.9',
version: '1.0.11',
pkName: 'com.hwy.pda'
}
console.log("version 版本>>>>", version)

115
pagesHome/pages/CustomerOrdersDetails/CustomerOrdersDetails.vue

@ -54,40 +54,57 @@
</view>
<scroll-view class="scve" scroll-y="true">
<view class="mabx">
<view class="itec" @click="checkphon(index)" v-if="orderStatus==1" v-for="(item,index) in datalist">
<view class="contenbx1">
<view><text style="color: #90A0AF;" @click.stop="goorderdetail(item)">订单编号</text>{{item.orderCode}}
<block v-for="(item,index) in datalist" :key="item">
<template v-if="orderStatus==1">
<view class="itec" @click="checkphon(index)">
<view class="contenbx1">
<view><text style="color: #90A0AF;"
@click.stop="goorderdetail(item)">订单编号</text>{{item.orderCode}}
</view>
</view>
<view class="contenbx1">
<view><text style="color: #90A0AF;">配送数</text>{{item.reservationNum}}</view>
<view><text style="color: #90A0AF;">已扫码数</text>{{item.loadingNub}}</view>
</view>
<view class="xialaxz" v-if="listcheckindex==index">
<view v-for="ite in item.distributionAppParcelListVOS">
<view>包条码{{ite.orderPackageCode}}</view>
<view>货物品类{{ite.thirdProduct}}</view>
<view>扫描状态{{ite.isScan?ite.isScan:'未扫'}}</view>
</view>
</view>
<view v-if="item.complete"
:class="item.completecode==3?'tip tp1':item.completecode==1?'tip tp2':'tip tp3'">
{{item.complete}}
</view>
<!-- 当有异常状态时, 显示异常状态 -->
<template v-if="item.isHaveAbnormalPackageName">
<view class="abnormalStyleContainer">
<view class="abnormalStyle">
{{item.isHaveAbnormalPackageName}}
</view>
</view>
</template>
</view>
</view>
<view class="contenbx1">
<view><text style="color: #90A0AF;">配送数</text>{{item.reservationNum}}</view>
<view><text style="color: #90A0AF;">已扫码数</text>{{item.loadingNub}}</view>
</view>
<view class="xialaxz" v-if="listcheckindex==index">
<view v-for="ite in item.distributionAppParcelListVOS">
<view>包条码{{ite.orderPackageCode}}</view>
<view>货物品类{{ite.thirdProduct}}</view>
<view>扫描状态{{ite.isScan?ite.isScan:'未扫'}}</view>
</template>
<template v-if="orderStatus==2">
<view class="itec" @click="checkphon(index)">
<view class="contenbx1">
<view><text style="color: #90A0AF;">SKU</text>{{item.sku}}</view>
</view>
<view class="contenbx1">
<view><text style="color: #90A0AF;">物品</text>{{item.descriptionGoods}}</view>
<view><text style="color: #90A0AF;">规格</text>{{item.specification}}</view>
</view>
<view class="contenbx1">
<view><text style="color: #90A0AF;">单位</text>{{item.logpmUnit}}</view>
<!-- <view><text style="color: #90A0AF;">签收</text>{{item.signforNub}}</view> -->
</view>
<!-- <view :class="item.completecode==3?'tip tp1':item.completecode==1?'tip tp2':'tip tp3'">{{item.complete}}</view> -->
</view>
</view>
<view v-if="item.complete" :class="item.completecode==3?'tip tp1':item.completecode==1?'tip tp2':'tip tp3'">
{{item.complete}}
</view>
</view>
<view class="itec" @click="checkphon(index)" v-if="orderStatus==2" v-for="(item,index) in datalist">
<view class="contenbx1">
<view><text style="color: #90A0AF;">SKU</text>{{item.sku}}</view>
</view>
<view class="contenbx1">
<view><text style="color: #90A0AF;">物品</text>{{item.descriptionGoods}}</view>
<view><text style="color: #90A0AF;">规格</text>{{item.specification}}</view>
</view>
<view class="contenbx1">
<view><text style="color: #90A0AF;">单位</text>{{item.logpmUnit}}</view>
<!-- <view><text style="color: #90A0AF;">签收</text>{{item.signforNub}}</view> -->
</view>
<!-- <view :class="item.completecode==3?'tip tp1':item.completecode==1?'tip tp2':'tip tp3'">{{item.complete}}</view> -->
</view>
</template>
</block>
</view>
</scroll-view>
@ -208,7 +225,9 @@
details.datalist = response.data.records || []
if (loadingNub.value != 0 && details.isscan) {
console.log(loadingNub.value + '件')
utils.ttsspke(loadingNub.value + '件')
setTimeout(() => {
utils.ttsspke(loadingNub.value + '件')
}, 1000)
}
}
function checktype(e) {
@ -247,6 +266,7 @@
const { code, audio } = res
//
if (code === 5000) {
console.log(123123)
utils.ttsspke('不在本次计划, 是否继续装车')
//
@ -268,6 +288,7 @@
//
const res = await postAbnormalTruckLoading(data)
console.log('res :>> ', res);
tiplists.value.setdetails({ isshow: false })
},
cancel: () => {
tiplists.value.setdetails({ isshow: false })
@ -295,7 +316,6 @@
console.log('err :>> ', err);
//TODO handle the exception
} finally {
tiplists.value.setdetails({ isshow: false })
initpage()
}
}
@ -308,7 +328,6 @@
details.listcheckindex = index
}
}
const { listcheckindex, inputtxt, orderStatus, schanvalue, typearr, items, datalist } = toRefs(details)
</script>
@ -431,6 +450,7 @@
box-sizing: border-box;
position: relative;
margin-bottom: 20upx;
overflow: hidden;
&:nth-last-child(1) {
margin-bottom: 0;
@ -580,4 +600,29 @@
}
}
}
.abnormalStyleContainer {
top: -20upx;
left: -20upx;
position: absolute;
padding: 10upx;
border: 1upx solid #f8544b;
border-radius: 50%;
}
//
.abnormalStyle {
font-size: 28upx;
height: 80upx;
width: 80upx;
display: flex;
align-items: center;
text-align: center;
color: #f8544b;
padding: 10upx;
border-radius: 50%;
border: 1upx solid #f8544b;
opacity: 0.6;
}
</style>

15
pagesHome/pages/CustomerTrayDetails/CustomerTrayDetails.vue

@ -106,7 +106,7 @@
orderType: 0,
inputtxt: '',
listcheckindex: -1,
isscan:false
isscan: false
})
const tiplists = ref(null)
onLoad((op) => {
@ -136,7 +136,7 @@
const loadingNub = computed(() => {
let num = 0
if (!!details.datalist){
if (!!details.datalist) {
details.datalist.map(item => {
if (item.loadingNub) {
num += item.loadingNub
@ -181,11 +181,11 @@
// }
const res = await distributionTrayDetail(data)
console.log('res', res);
const {code } = res
const { code } = res
const resData = res.data
//
details.datalist = []
if (code === 200 && !!resData){
if (code === 200 && !!resData) {
details.datalist = resData.records
}
if (loadingNub.value != 0 && details.isscan) {
@ -224,11 +224,10 @@
type: 2,
barcode: details.scancode
}
data.barcode = 'HTLQ000019'
let res = await deliveryloadingscan(data)
console.log('res', res);
const {code} = res
const { code } = res
//
if (code === 3001 || code === 200) utils.ttsspke(res.audio)
initpage()
@ -241,7 +240,7 @@
details.listcheckindex = index
}
}
const { listcheckindex, inputtxt, orderStatus, schanvalue, typearr, items, datalist } = toRefs(details)
</script>

20
pagesHome/pages/DownGoods/DownGoods.vue

@ -62,7 +62,7 @@
<view>托盘码{{details.resdata.trayCode}}</view>
</view>
</view>
<scroll-view scroll-y="true" class="scvorder" :style="{'--height':pageType=='1'?'60vh':pageType=='2'?'77vh':'65vh'}">
<scroll-view scroll-y="true" class="scvorder" :style="{'--height':pageType=='1'?'60vh':pageType=='2'?'60vh':'65vh'}">
<view class="itembox" v-for="(item,index) in datalist" v-if="details.pageType!=2&&details.pageType!=1">
<view class="topon1" @click="checkite(item)">
@ -265,6 +265,7 @@
import {
warehouseUpdownTypedownScanPackage,
warehouseUpdownTypeupShelfScanAllocation,
warehouseUpdownTypedownDownAllocation,
warehouseUpdownTypedownPackage,
warehouseUpdownTypedownTrayCode,
warehouseUpdownTypedownZeroOrder,
@ -325,7 +326,9 @@
// details.scancode='23072400555-1'
// scandata()
// },4500)
})
onShow(() => {
uni.$on('scancodedate', function (code) {
if (code) {
// console.log(code);
@ -334,6 +337,11 @@
}
})
})
onHide(() => {
uni.$off('scancodedate')
})
function backun() {
uni.navigateBack()
}
@ -454,7 +462,7 @@
data = {
allocationId: details.resdata.allocationId
}
res = await warehouseUpdownTypeupShelfScanAllocation(data)
res = await warehouseUpdownTypedownDownAllocation(data)
break;
case 3:
list = []
@ -500,7 +508,14 @@
res = await warehouseUpdownTypedownZeroOrder(data)
break;
}
console.log('res :>> ', res);
uni.hideLoading()
if (res.code == 200) {
uni.showToast({
title: res.msg,
icon: 'none'
})
utils.ttsspke(res.msg)
details.checkdatalist = []
details.datalist = []
details.codelist = []
@ -513,7 +528,6 @@
title: '下架失败'
})
}
uni.hideLoading()
}
function checkite(item) {
if (details.checkdatalist.indexOf(item) == -1) {

14
pagesHome/pages/OrderSortingDetail/OrderSortingDetail.vue

@ -114,7 +114,7 @@
onLoad((op) => {
details.trayCode = op.trayCode
details.trayType = op.trayType
utils.ttsspke('当前打托方式为' + op.pageName)
if (op.pageName) utils.ttsspke('当前打托方式为' + op.pageName)
console.log('details.trayType :>> ', details.trayType);
if (!op.trayType) {
uni.showToast({
@ -203,12 +203,11 @@
}
})
}
if (details?.detauser?.trayNum && details?.detauser?.trayNum > 0 && details.iscan) {
utils.ttsspke('托盘件数' + details.detauser.trayNum + '件')
}
} else {
}
return res
}
async function scandata() {
let data = {
@ -218,8 +217,11 @@
}
let response = await warehouseTrayTypeorderScanOrderPackageCode(data)
console.log(response);
initlist()
utils.ttsspke('')
const res = await initlist()
if (details?.detauser?.trayNum && details?.detauser?.trayNum > 0) {
utils.ttsspke(details.detauser.trayNum + '件')
}
}
// watchEffect(()=>{
// if(details?.detauser?.trayNum){

55
pagesHome/pages/PeopleScanUp/PeopleScanUp.vue

@ -324,7 +324,7 @@
onLoad((op) => {
details.pageName = op.pageName
details.upshelfScanType = op.type
utils.ttsspke(`当前上架方式为 ${op.pageName}, 请扫描货位`)
if (op.pageName) utils.ttsspke(`当前上架方式为 ${op.pageName}, 请扫描货位`)
initmarke()
})
@ -494,7 +494,32 @@
}
function uplist() {
utils.ttsspke(`当前待上架${details.uplistarr.length}件, 是否进行上架`)
if (details.uplistarr.length == 0) {
let content = ''
let msg = ''
if (details.allocationId === '') {
content = '请先扫描库位'
msg = '请先扫描库位'
}
else if (Number(details.upshelfScanType) == 4) {
content = '请先扫描托盘码'
msg = '请先扫描托盘码'
} else {
content = '请先扫描包件数据'
msg = '请先扫描包件'
}
uni.showToast({
title: content,
icon: "none"
})
utils.ttsspke(msg)
return
}
//
const _totalShelfNum = uplistarr.value.reduce((curr, item) => curr + item.shelfNum, 0)
utils.ttsspke(`当前待上架${_totalShelfNum}件, 是否进行上架`)
tip.value.setdetails({
title: '提示',
@ -503,31 +528,7 @@
isshow: true,
isshowcancel: true,
success: async () => {
if (details.uplistarr.length == 0) {
let content = ''
if (Number(details.upshelfScanType) == 4) {
content = '请先扫描托盘码'
} else {
content = '请先扫描包件数据'
}
tip.value.setdetails({
title: '警告',
content,
confirmTxt: '确认',
isshow: true,
isshowcancel: true,
success: () => {
tip.value.setisshow(false)
},
cancel: () => {
tip.value.setisshow(false)
},
close: () => {
tip.value.setisshow(false)
}
})
return
}
uni.showLoading({
mask: true,
title: '上架中'

40
pagesHome/pages/PeopleSortingDetail/PeopleSortingDetail.vue

@ -173,6 +173,7 @@
warehouseTrayenterZeroOrderByTrayCode,
warehouseTrayTypegetZeroOrderByWaybillCode,
} from '@/api/user.js'
import utils from '@/utils/utils.js';
import { reactive, toRefs, watchEffect, ref } from "vue";
let details = reactive({
showstate: 0,
@ -191,6 +192,7 @@
onLoad((op) => {
details.trayCode = op.trayCode
details.trayType = op.trayType
if (op.pageName) utils.ttsspke(`当前打托方式为${op.pageName}`)
if (!op.trayType) {
uni.showToast({
title: '获取打托方式出错',
@ -248,28 +250,28 @@
let zeroList = []
// 退
let isfl = false
isfl = !details.codelist.every(item => item.number > 0)
// ,
if (isfl || details.codelist) {
return tip.value.setdetails({
title: '警告',
content: '最少修改一项物料',
confirmTxt: '确认',
isshow: true,
isshowcancel: false,
success: () => {
tip.value.setisshow(false)
},
cancel: () => {
tip.value.setisshow(false)
},
close: () => {
tip.value.setisshow(false)
}
})
title: '警告',
content: '最少修改一项物料',
confirmTxt: '确认',
isshow: true,
isshowcancel: false,
success: () => {
tip.value.setisshow(false)
},
cancel: () => {
tip.value.setisshow(false)
},
close: () => {
tip.value.setisshow(false)
}
})
}
//
details.codelist.forEach(item => {
if (item.number == 0) {
@ -302,12 +304,12 @@
zeroList.push(obj)
}
})
// , 退
if (isfl) {
return
}
let data = {
trayType: details.trayType,
trayCode: details.trayCode,

2
pagesHome/pages/RelocationAllocationId/RelocationAllocationId.vue

@ -227,7 +227,7 @@
})
onLoad((op) => {
details.pagetype = op.type
utils.ttsspke(`当前移库方式为${op.pageName}, 请先扫描要移动的库位,再扫描目标库位`)
if (op.pageName) utils.ttsspke(`当前移库方式为${op.pageName}, 请先扫描要移动的库位,再扫描目标库位`)
})
// ,
onHide(() => {

5
pagesHome/pages/ScanSortingType/ScanSortingType.vue

@ -27,7 +27,6 @@
let typelist = ref<{ type : number, name : string, src : string }[]>([])
let pageType = ref<string | number>('')
let trayCode = ref<string>('')
utils.ttsspke('请进行服务号/订单自编码/商场/客户/仓库/门店/其它分拣')
onLoad((op) => {
pageType.value = op.type
trayCode.value = op.trayCode
@ -42,6 +41,7 @@
{ type: 7, name: '其他', src: '/pagesHome/static/scicon7.png' },
]
let trayCodeTypearr = uni.getStorageSync('trayCodeType')
utils.ttsspke('请进行服务号/订单自编码/商场/客户/仓库/门店/其它分拣')
console.log(trayCodeTypearr);
trayCodeTypearr.map((item, index) => {
typelist.value.map((ite, inde) => {
@ -55,6 +55,7 @@
{ type: 1, name: '运单号', src: '/pagesHome/static/scicon1.png' },
{ type: 2, name: '订单自编码', src: '/pagesHome/static/scicon2.png' },
]
utils.ttsspke('请进行运单号/订单自编码分拣')
let trayCodeTypearr = uni.getStorageSync('trayCodeType')
console.log(trayCodeTypearr);
trayCodeTypearr.map((item, index) => {
@ -75,7 +76,7 @@
+ trayCode.value + '&trayType=' + item.dictKey + '&pageName=' + item.name
} else if (Number(pageType.value) == 2) {
url = '/pagesHome/pages/PeopleSortingDetail/PeopleSortingDetail?trayCode='
+ trayCode.value + '&trayType=' + item.dictKey
+ trayCode.value + '&trayType=' + item.dictKey + '&pageName=' + item.name
}
uni.redirectTo({
url

104
pagesHome/pages/ScanUp/ScanUp.vue

@ -230,7 +230,7 @@
onLoad((op) => {
details.upshelfScanType = op.type
utils.ttsspke(`当前上架方式为${op.pageName},请先扫描库位码`)
if (op.pageName) utils.ttsspke(`当前上架方式为${op.pageName},请先扫描库位码`)
})
//
@ -253,6 +253,12 @@
//
onPullDownRefresh(() => {
setTimeout(() => {
//
details.allocationId = ''
details.reqobj = []
details.renderList = []
details.datalist = []
details.uplistarr = []
//
uni.stopPullDownRefresh()
@ -277,22 +283,6 @@
}
} else {
if (Number(details.upshelfScanType) == 4 && details.reqobj.trayCode) {
tip.value.setdetails({
title: '提示',
content: '该库位已绑托盘',
confirmTxt: '确认',
isshow: true,
isshowcancel: true,
success: () => {
tip.value.setisshow(false)
},
cancel: () => {
tip.value.setisshow(false)
},
close: () => {
tip.value.setisshow(false)
}
})
// #ifdef APP
utils.ttsspke('该库位已绑托盘')
// #endif
@ -302,22 +292,6 @@
if (details.upshelfScanType === '3') {
const flag = details.uplistarr.findIndex(val => val.orderPackageCode === details.scancode)
if (flag !== -1) {
tip.value.setdetails({
title: '提示',
content: '重复扫描包件',
confirmTxt: '确认',
isshow: true,
isshowcancel: true,
success: () => {
tip.value.setisshow(false)
},
cancel: () => {
tip.value.setisshow(false)
},
close: () => {
tip.value.setisshow(false)
}
})
// #ifdef APP
utils.ttsspke('包件重复扫描')
// #endif
@ -330,10 +304,15 @@
code: details.scancode,
}
let res = await warehouseUpdownTypeupShelfScanGoods(data)
console.log(res);
console.log('res>>>>>', res);
if (res.code == 200) {
details.uplistarr = details.uplistarr.concat(res.data)
if (details.upshelfScanType === '4') utils.ttsspke(details.uplistarr.reduce((curr, item) => curr + item.shelfNum, 0) + '件')
else utils.ttsspke(details.uplistarr.length + '件')
if (details.checkstate === 1) return details.renderList = details.uplistarr
} else if (res.code === 3001 && res.audio) {
utils.ttsspke(res.audio)
}
}
@ -346,7 +325,32 @@
})
}
function uplist() {
utils.ttsspke(`待上架${uplistarr.value.length}件, 是否进行上架`)
if (details.uplistarr.length == 0) {
let content = ''
let msg = ''
if (details.allocationId === '') {
content = '请先扫描库位'
msg = '请先扫描库位'
}
else if (Number(details.upshelfScanType) == 4) {
content = '请先扫描托盘码'
msg = '请先扫描托盘码'
} else {
content = '请先扫描包件数据'
msg = '请先扫描包件'
}
uni.showToast({
title: content,
icon: "none"
})
utils.ttsspke(msg)
return
}
let _totalShelfNum = 0
//
if (details.upshelfScanType === '3') _totalShelfNum = uplistarr.value.length
if (details.upshelfScanType === '4') _totalShelfNum = uplistarr.value.reduce((curr, item) => curr + item.shelfNum, 0)
utils.ttsspke(`待上架${_totalShelfNum}件, 是否进行上架`)
tip.value.setdetails({
title: '提示',
@ -355,33 +359,6 @@
isshow: true,
isshowcancel: true,
success: async () => {
if (details.uplistarr.length == 0) {
let content = ''
if (Number(details.upshelfScanType) == 4) {
utils.ttsspke('请先扫描托盘码')
content = '请先扫描托盘码'
} else {
utils.ttsspke('请先扫描包件数据')
content = '请先扫描包件数据'
}
tip.value.setdetails({
title: '警告',
content,
confirmTxt: '确认',
isshow: true,
isshowcancel: true,
success: () => {
tip.value.setisshow(false)
},
cancel: () => {
tip.value.setisshow(false)
},
close: () => {
tip.value.setisshow(false)
}
})
return
}
let res : any = null
// loading
uni.showLoading({
@ -410,10 +387,11 @@
}
if (res.code == 200) {
utils.ttsspke(`成功上架${uplistarr.value.length}`)
// utils.ttsspke(`${_totalShelfNum}`)
details.uplistarr = []
details.scancode = details.allocationId
details.allocationId = ''
details.renderList = []
scandata()
}
// loading

422
pagesHome/pages/SelfPScanList/SelfPScanList.vue

@ -1,9 +1,7 @@
<template>
<!-- <u-navbar title="自提扫描" placeholder border=true :autoBack="true" leftIconSize='35'></u-navbar> -->
<u-navbar title="自提扫描"
bgColor='#D3832A' leftIconColor='#ffffff'
titleStyle='color:#ffffff' placeholder
:autoBack="true" leftIconSize='35'></u-navbar>
<u-navbar title="自提扫描" bgColor='#D3832A' leftIconColor='#ffffff' titleStyle='color:#ffffff' placeholder
:autoBack="true" leftIconSize='35'></u-navbar>
<view class="hdtpnum">
<view>
<view>订单总数</view>
@ -29,10 +27,11 @@
<view class="scinp">
<view>齐套状态</view>
<view>
<cusSelects @change='checktype' :data='typearr' :value="schanvalue" placeholder='全部' :arrLeft='5' size='145' :clearable='true'></cusSelects>
<cusSelects @change='checktype' :data='typearr' :value="schanvalue" placeholder='全部' :arrLeft='5' size='145'
:clearable='true'></cusSelects>
</view>
<view class="inputs">
<input v-model="orderCode" placeholder="请输入查询的订单号"/>
<input v-model="orderCode" placeholder="请输入查询的订单号" />
</view>
<view class="btscan" @click="initpage">查询</view>
</view>
@ -43,36 +42,67 @@
<view @click="setorderStatus(2)">
<view :class="orderType==2?'xz':''">库存品</view>
</view>
<view @click="setorderStatus(3)">
<view :class="orderType==3?'xz':''">零担</view>
</view>
</view>
<scroll-view class="scve" scroll-y="true">
<view class="mabx">
<view class="itec" @click="showsdqs" v-if="orderType==1" v-for="item in datalist">
<view class="contenbx1">
<view>
<text style="color: #90A0AF;">订单编号</text>
{{item.orderSelfNumbering}}
<block v-for="item in datalist" :key="item">
<template v-if="orderType==1">
<view class="itec" @click="showsdqs">
<view class="contenbx1">
<view>
<text style="color: #90A0AF;">订单编号</text>
{{item.orderSelfNumbering}}
</view>
</view>
<view class="contenbx1">
<view><text style="color: #90A0AF;">配送数</text>{{item.planNum}}</view>
<view><text style="color: #90A0AF;">已扫码数</text>{{item.signedNum}}</view>
</view>
<view :class="item.orderStatusStr=='齐套'?'tip tp1':item.orderStatusStr=='部分扫'?'tip tp3':'tip tp2'">
{{item.orderStatusStr}}
</view>
</view>
</template>
<template v-if="orderType==2">
<view class="itec" @click="showsdqs">
<view class="contenbx1">
<view><text style="color: #90A0AF;">SKU</text>{{item.sku}}</view>
</view>
<view class="contenbx1">
<view><text style="color: #90A0AF;">物品</text>{{item.descriptionGoods}}</view>
<view><text style="color: #90A0AF;">规格</text>{{item.specification}}</view>
</view>
<view class="contenbx1">
<view><text style="color: #90A0AF;">单位</text>{{item.cargoUnit}}</view>
<view><text style="color: #90A0AF;">自提数</text>{{item.quantity}}</view>
</view>
<!-- <view :class="item.signforNub==0?'tip tp2':item.signforNub==item.reservationNum?'tip tp1':'tip tp3'">{{item.signforNub==0?'未扫':item.signforNub==item.reservationNum?'齐套':'部分扫'}}</view> -->
</view>
</view>
<view class="contenbx1">
<view><text style="color: #90A0AF;">配送数</text>{{item.planNum}}</view>
<view><text style="color: #90A0AF;">已扫码数</text>{{item.signedNum}}</view>
</view>
<view :class="item.orderStatusStr=='齐套'?'tip tp1':item.orderStatusStr=='部分扫'?'tip tp3':'tip tp2'">{{item.orderStatusStr}}</view>
</view>
<view class="itec" @click="showsdqs" v-if="orderType==2" v-for="item in datalist">
<view class="contenbx1">
<view><text style="color: #90A0AF;">SKU</text>{{item.sku}}</view>
</view>
<view class="contenbx1">
<view><text style="color: #90A0AF;">物品</text>{{item.descriptionGoods}}</view>
<view><text style="color: #90A0AF;">规格</text>{{item.specification}}</view>
</view>
<view class="contenbx1">
<view><text style="color: #90A0AF;">单位</text>{{item.cargoUnit}}</view>
<view><text style="color: #90A0AF;">自提数</text>{{item.quantity}}</view>
</view>
<!-- <view :class="item.signforNub==0?'tip tp2':item.signforNub==item.reservationNum?'tip tp1':'tip tp3'">{{item.signforNub==0?'未扫':item.signforNub==item.reservationNum?'齐套':'部分扫'}}</view> -->
</view>
</template>
<!-- 零担 -->
<template v-if="orderType==3">
<view class="itec" @click="showsTipsZero(item)">
<view class="contenbx1">
<view><text style="color: #90A0AF;">订单号</text>{{item.orderCode}}</view>
</view>
<view class="contenbx1">
<view><text style="color: #90A0AF;">运单号</text>{{item.waybillNumber}}</view>
</view>
<view class="contenbx1">
<view><text style="color: #90A0AF;">产品名称</text>{{item.firsts}}</view>
</view>
<view class="contenbx1">
<view><text style="color: #90A0AF;">预计签收件数</text>{{item.reservationQuantity}}</view>
</view>
</view>
</template>
</block>
</view>
</scroll-view>
<tiplist ref="tiplists"></tiplist>
@ -86,158 +116,223 @@
onHide,
onUnload
} from '@dcloudio/uni-app'
import {
import {
billLadingorderList,
billLadinggetInventory,
billLadingscan
billLadingscan,
billLadingZeroBillOrderData
} from '@/api/user.js'
import cusSelects from '@/compoment/cus-selects-fan/cus-selects-fan.vue'
import { reactive, toRefs,ref } from "vue";
import { reactive, toRefs, ref } from "vue";
import { pagedetails } from '@/interfaces/pagesHome/SelfPScanList'
let details=reactive<pagedetails>({
schanvalue:'',
typearr:[
let details = reactive<pagedetails>({
schanvalue: '',
typearr: [
{
value:1,
label:'齐套'
value: 1,
label: '齐套'
},
{
value:2,
label:'部分扫'
value: 2,
label: '部分扫'
},
{
value:3,
label:'未扫'
value: 3,
label: '未扫'
}
],
orderStatus:0,
orderType:1,
billLadingId:'',
datalist:[],
orderCode:'',
orderNum:'',
completeNum:'',
planNum:'',
signedNum:'',
inventoryNub:'',
scancode:'',
orderStatus: 0,
orderType: 1,
billLadingId: '',
datalist: [],
orderCode: '',
orderNum: '',
completeNum: '',
planNum: '',
signedNum: '',
inventoryNub: '',
scancode: '',
})
const tiplists=ref(null)
onLoad((op)=>{
details.billLadingId=op.billLadingId
const tiplists = ref(null)
onLoad((op) => {
details.billLadingId = op.billLadingId
initpage()
// details.scancode='TESTCodeBJ2308030001'
})
onShow(()=>{
uni.$on('scancodedate', function(code) {
onShow(() => {
uni.$on('scancodedate', function (code) {
if (code) {
console.log(code);
details.scancode=code
details.scancode = code
sacn()
}
})
})
onHide(()=>{
onHide(() => {
uni.$off('scancodedate')
})
function showsdqs(){
function showsdqs() {
tiplists.value.setdetails({
isshow:true,
tipstate:1,
title:'请输入扫描的码',
placeholder:'请输入扫描的码',
inputtext:'',
success:(detail)=>{
details.scancode=detail.inputtext
isshow: true,
tipstate: 1,
title: '请输入扫描的码',
placeholder: '请输入扫描的码',
inputtext: '',
success: (detail) => {
details.scancode = detail.inputtext
sacn()
tiplists.value.setdetails({isshow:false})
tiplists.value.setdetails({ isshow: false })
},
cancel:()=>{
tiplists.value.setdetails({isshow:false})
cancel: () => {
tiplists.value.setdetails({ isshow: false })
},
close:()=>{
tiplists.value.setdetails({isshow:false})
close: () => {
tiplists.value.setdetails({ isshow: false })
}
})
}
async function sacn(){
let data={
id:details.billLadingId,
coding:details.scancode,
type:details.orderType==1?'2':'1'
async function sacn() {
let data = {
id: details.billLadingId,
coding: details.scancode,
type: details.orderType == 1 ? '2' : '1'
}
let res=await billLadingscan(data)
let res = await billLadingscan(data)
console.log(res);
if(res.code==200){
if (res.code == 200) {
initpage()
}
}
async function initpage(){
details.datalist=[]
if(details.orderType==1){
let data={
orderStatus:details.orderStatus,
billLadingId:details.billLadingId,
orderCode:details.orderCode
async function initpage() {
details.datalist = []
if (details.orderType == 1) {
let data = {
orderStatus: details.orderStatus,
billLadingId: details.billLadingId,
orderCode: details.orderCode
}
let response=await billLadingorderList(data)
details.datalist=response.data.list
details.orderNum=response.data.orderNum
details.completeNum=response.data.completeNum
details.planNum=response.data.planNum
details.inventoryNub=response.data.inventoryNub
details.signedNum=response.data.signedNum
}else if(details.orderType==2){
let date={
id:details.billLadingId,
current:1,
size:10
let response = await billLadingorderList(data)
details.datalist = response.data.list
details.orderNum = response.data.orderNum
details.completeNum = response.data.completeNum
details.planNum = response.data.planNum
details.inventoryNub = response.data.inventoryNub
details.signedNum = response.data.signedNum
} else if (details.orderType == 2) {
let date = {
id: details.billLadingId,
current: 1,
size: 10
}
let response=await billLadinggetInventory(date)
details.datalist.map(item=>{
if(item.esauInventoryNum==-1){
let response = await billLadinggetInventory(date)
details.datalist.map(item => {
if (item.esauInventoryNum == -1) {
uni.showToast({
title:'物品备货未完成,请前往备货',
icon:'none'
title: '物品备货未完成,请前往备货',
icon: 'none'
})
}
})
details.datalist=response.data.records
details.datalist = response.data.records
// details.orderNum=response.data.orderNum
// details.completeNum=response.data.completeNum
// details.planNum=response.data.planNum
// details.signedNum=response.data.signedNum
} else if (details.orderType === 3) {
let deta = {
billLadingId: details.billLadingId,
current: 1,
size: 10
}
const res = await billLadingZeroBillOrderData(deta)
console.log('res :>> ', res);
const { code, data } = res
if (code === 200) details.datalist = data
}
// sacn()
}
function setorderStatus(state:number){
details.orderType=state
function setorderStatus(state : number) {
details.orderType = state
initpage()
}
function checktype(e){
if(e==''){
details.schanvalue=''
details.orderStatus=0
function showsTipsZero(item) {
console.log('item :>> ', item);
const inpList = [
{
title: item.firsts,
maxNum: item.reservationQuantity,
minNum: 0,
type: 'Number',
value: 0
}
]
//
tiplists.value.setdetails({
isshow: true,
tipstate: 4,
inpList,
title: '签收零担',
placeholder: `订单${item.orderCode}${item.firsts}的数量`,
inputtext: '',
success: async (detail) => {
try {
console.log('item :>> ', item);
const { inpList: [_info] } = detail
if (_info.value === 0) return uni.showToast({
title: '请输入签收的零担数量',
icon: 'none'
})
const submitForm = {
id: item.id,
stockArticleId: item.stockArticleId,
quantity: _info.value
}
// const res = await billLadinggetZeroBillPack({ billLadingId: details.billLadingId, billLadingZeroVO: submitForm })
// if (res.code === 200) initpage()
} catch (err) {
console.log('err :>> ', err);
//TODO handle the exception
} finally {
tiplists.value.setdetails({ isshow: false })
}
},
cancel: () => {
tiplists.value.setdetails({ isshow: false })
},
close: () => {
tiplists.value.setdetails({ isshow: false })
}
})
}
function checktype(e) {
if (e == '') {
details.schanvalue = ''
details.orderStatus = 0
return
}
details.typearr.map(item=>{
if(item.value==e){
details.schanvalue=item.label
details.orderStatus=item.value
details.typearr.map(item => {
if (item.value == e) {
details.schanvalue = item.label
details.orderStatus = item.value
console.log(details.schanvalue)
}
})
}
const { orderType,schanvalue,typearr,orderCode,datalist }=toRefs(details)
const { orderType, schanvalue, typearr, orderCode, datalist } = toRefs(details)
</script>
<style lang="scss">
.tabtip{
.tabtip {
display: flex;
align-items: center;
justify-content: space-between;
>view{
>view {
width: 50%;
display: flex;
align-items: center;
@ -246,7 +341,8 @@
font-size: 32upx;
font-weight: 400;
color: #90A0AF;
>view{
>view {
height: 80upx;
border-bottom: 8upx solid #ffffff;
display: flex;
@ -254,21 +350,25 @@
justify-content: center;
}
}
.xz{
.xz {
color: #D3832A;
border-bottom: 8upx solid #D3832A;
// border-radius: 5upx;
}
}
.scve{
.scve {
width: 100%;
height: 69vh;
margin-top: 20upx;
.mabx{
.mabx {
display: flex;
flex-direction: column;
align-items: center;
>.itec{
>.itec {
width: 686upx;
// height: 176upx;
background: #FFFFFF;
@ -277,26 +377,31 @@
box-sizing: border-box;
position: relative;
margin-bottom: 20upx;
&:nth-last-child(1){
&:nth-last-child(1) {
margin-bottom: 0;
}
>.contenbx1{
>.contenbx1 {
display: flex;
align-items: flex-start;
justify-content: space-between;
font-size: 28upx;
color: #092C4D;
margin-bottom: 20upx;
&:nth-last-child(1){
&:nth-last-child(1) {
margin-bottom: 0;
}
>view{
>view {
flex: 1;
word-wrap: break-word;
word-break: break-all;
}
}
.tip{
.tip {
position: absolute;
right: 0;
top: 0;
@ -308,34 +413,39 @@
justify-content: center;
font-size: 24upx;
}
.tp1{
.tp1 {
background-color: #0086F120;
color: #0086F1;
}
.tp2{
.tp2 {
background-color: #F8544B20;
color: #F8544B;
}
.tp3{
.tp3 {
background-color: #FA8C1620;
color: #FA8C16;
}
}
}
}
.scinp{
.scinp {
display: flex;
align-items: center;
justify-content: space-between;
padding: 12upx 32upx;
box-sizing: border-box;
background-color: #ffffff;
>view:nth-of-type(1){
>view:nth-of-type(1) {
font-size: 28upx;
font-weight: 400;
color: #092C4D;
}
.inputs {
width: 276upx;
height: 64upx;
@ -348,13 +458,15 @@
font-size: 24upx;
font-weight: 400;
color: #AFB4BA;
>input{
>input {
flex: 1;
font-size: 24upx;
color: #092C4D;
}
}
.btscan{
.btscan {
width: 128upx;
height: 64upx;
background: #D3832A;
@ -367,41 +479,48 @@
color: #FFFFFF;
}
}
.hdtpnum{
.hdtpnum {
display: flex;
align-items: center;
justify-content: space-around;
background-color: #ffffff;
padding: 28upx 0;
border-bottom: 3upx solid #EEEEEE;
>view{
>view {
display: flex;
align-items: center;
flex-direction: column;
font-size: 28upx;
font-weight: 400;
color: #092C4D;
&:nth-of-type(1){
>view:nth-of-type(2){
&:nth-of-type(1) {
>view:nth-of-type(2) {
color: #092C4D;
}
}
&:nth-of-type(2){
>view:nth-of-type(2){
&:nth-of-type(2) {
>view:nth-of-type(2) {
color: #0086F1;
}
}
&:nth-of-type(3){
>view:nth-of-type(2){
&:nth-of-type(3) {
>view:nth-of-type(2) {
color: #3AD8BC;
}
}
&:nth-of-type(4){
>view:nth-of-type(2){
&:nth-of-type(4) {
>view:nth-of-type(2) {
color: #FA8C16;
}
}
>view:nth-of-type(2){
>view:nth-of-type(2) {
font-size: 36upx;
font-weight: 400;
color: #092C4D;
@ -409,5 +528,4 @@
}
}
}
</style>
</style>

153
pagesHome/pages/SelfPickupDetails/SelfPickupDetails.vue

@ -50,49 +50,60 @@
</view>
<scroll-view scroll-y="true" class="scrollv">
<view class="mabxs">
<!-- 定制品 -->
<view class="ite" @click="showsdqs" v-if="orderType==1" v-for="item in dataList">
<view>
<view @click.stop="goorderdetail(item)">订单号{{item.orderCode}}</view>
<view>包条码{{item.orderPackageCode}}</view>
</view>
<view>
<view>是否扫描{{item.scanStatusStr}}</view>
<view>异常{{item.errorStatusStr}}</view>
</view>
</view>
<!-- 库存品 -->
<view class="ite" @click="showsdqs" v-if="orderType==2" v-for="item in dataList">
<view>
<view>SKU{{item.sku}}</view>
<view>包件号{{item.coding}}</view>
</view>
<view>
<view>物品{{item.descriptionGoods}}</view>
<view>规格{{item.specification}}</view>
</view>
<view>
<view>单位{{item.cargoUnit}}</view>
<view>扫描{{item.scanStatus==1?'未扫描':item.scanStatus==''?'未扫描':'扫描'}}</view>
<!-- <view>规格{{item.specification}}</view> -->
</view>
</view>
<!-- 零担 -->
<view class="ite" @click="showsdqs" v-if="orderType==3" v-for="item in dataList">
<view>
<view>订单号{{item.orderCode}}</view>
</view>
<view>
<view>物料名称{{item.firsts}}</view>
</view>
<view>
<view>总数{{item.quantity}}</view>
<view>剩余数量{{item.cargoUnit}}</view>
<!-- <view>规格{{item.specification}}</view> -->
</view>
</view>
<block v-for="item in dataList" :key="item">
<!-- 定制品 -->
<template v-if="orderType==1">
<view class="ite" @click="showsdqs">
<view>
<view @click.stop="goorderdetail(item)">订单号{{item.orderCode}}</view>
<view>包条码{{item.orderPackageCode}}</view>
</view>
<view>
<view>是否扫描{{item.scanStatusStr}}</view>
<view>异常{{item.errorStatusStr}}</view>
</view>
</view>
</template>
<!-- 库存品 -->
<template v-if="orderType==2">
<view class="ite" @click="showsdqs">
<view>
<view>SKU{{item.sku}}</view>
<view>包件号{{item.coding}}</view>
</view>
<view>
<view>物品{{item.descriptionGoods}}</view>
<view>规格{{item.specification}}</view>
</view>
<view>
<view>单位{{item.cargoUnit}}</view>
<view>扫描{{item.scanStatus==1?'未扫描':item.scanStatus==''?'未扫描':'扫描'}}</view>
<!-- <view>规格{{item.specification}}</view> -->
</view>
</view>
</template>
<!-- 零担 -->
<template v-if="orderType==3">
<view class="ite" @click="showsTipsZero(item)">
<view>
<view>订单号{{item.orderCode}}</view>
</view>
<view>
<view>运单号{{item.waybillNumber}}</view>
</view>
<view>
<view>产品名称{{item.firsts}}</view>
</view>
<view>
<view>预计签收件数{{item.reservationQuantity}}</view>
</view>
</view>
</template>
</block>
</view>
</scroll-view>
<tiplist ref="tiplists"></tiplist>
@ -110,7 +121,8 @@
billLadingdetailList,
billLadinggetInventoryNum,
billLadingzeroBillData,
billLadingscan
billLadingscan,
billLadinggetZeroBillPack
} from '@/api/user.js'
import { pagedetailType } from '@/interfaces/pagesHome/SelfPickupDetails'
import cusSelects from '@/compoment/cus-selects-fan/cus-selects-fan.vue'
@ -195,6 +207,59 @@
}
})
}
function showsTipsZero(item) {
console.log('item :>> ', item);
const inpList = [
{
title: item.firsts,
maxNum: item.reservationQuantity,
minNum: 0,
type: 'Number',
value: 0
}
]
//
tiplists.value.setdetails({
isshow: true,
tipstate: 4,
inpList,
title: '签收零担',
placeholder: `订单${item.orderCode}${item.firsts}的数量`,
inputtext: '',
success: async (detail) => {
try {
console.log('item :>> ', item);
const { inpList: [_info] } = detail
if (_info.value === 0) return uni.showToast({
title: '请输入签收的零担数量',
icon: 'none'
})
const submitForm = {
id: item.id,
stockArticleId: item.stockArticleId,
quantity: _info.value
}
const res = await billLadinggetZeroBillPack({ billLadingId: details.billLadingId, billLadingZeroVO: submitForm })
if (res.code === 200) initpage()
} catch (err) {
console.log('err :>> ', err);
//TODO handle the exception
} finally {
tiplists.value.setdetails({ isshow: false })
}
},
cancel: () => {
tiplists.value.setdetails({ isshow: false })
},
close: () => {
tiplists.value.setdetails({ isshow: false })
}
})
}
async function sacn() {
// 3,
if (details.orderCode === 3) return

4
pagesHome/pages/StockUplist/StockUplist.vue

@ -174,6 +174,8 @@
details.items = JSON.parse(op.item)
// details.user.goodsAreaName=op.stockupArea
// details.reservationId='1682676882390781953'
const _tts = ['定制品拣货', '库存品拣货', '零担拣货']
utils.ttsspke(_tts[details.orderStatus - 1])
})
onShow(() => {
uni.$on('scancodedate', function (code) {
@ -250,6 +252,8 @@
}
function setorderStatus(state : number) {
details.orderStatus = state
const _tts = ['定制品拣货', '库存品拣货', '零担拣货']
utils.ttsspke(_tts[details.orderStatus - 1])
initpage()
}
async function goBarCode(item : any) {

289
pagesHome/pages/StockUplistScandetails/StockUplistScandetails.vue

@ -1,9 +1,7 @@
<template>
<!-- <u-navbar title="备货列表" placeholder border=true :autoBack="true" leftIconSize='35'></u-navbar> -->
<u-navbar title="备货列表"
bgColor='#D3832A' leftIconColor='#ffffff'
titleStyle='color:#ffffff' placeholder
:autoBack="true" leftIconSize='35'></u-navbar>
<u-navbar title="备货列表" bgColor='#D3832A' leftIconColor='#ffffff' titleStyle='color:#ffffff' placeholder
:autoBack="true" leftIconSize='35'></u-navbar>
<view class="head">
<view class="type1">
<view>
@ -47,7 +45,7 @@
绑定托盘
</view>
</view> -->
</view>
</view>
<view class="butbox">
@ -98,7 +96,7 @@
<tiplist ref="tiplists"></tiplist>
<saomiao2></saomiao2>
</template>
<script lang="ts" setup>
import {
onLoad,
@ -106,87 +104,97 @@
onHide,
onUnload
} from '@dcloudio/uni-app'
import { distributionStockuporderInfo,distributionStockupstockupScan } from '@/api/user.js'
import { distributionStockuporderInfo, distributionStockupstockupScan } from '@/api/user.js'
import { detailType } from '@/interfaces/pagesHome/StockUplistScandetails'
import { reactive, ref, toRefs, inject } from "vue";
import utils from '../../../utils/utils';
const util = (inject('utils') as any)
let details=reactive<detailType>({
dataList:[],
stockArticleId:'',
orderStatus:'',
reservationId:'',
stockListId:'',
allocation:'',
pallet:'',
customer:'',
stockupArea:'',
planNum:'',
scanNum:'',
trays:'',
warehouseArea:'',
orderCode:'',
scancode:'',
stockupId:'',
address:'',
isscan:false,
allocationId:'',
status:'',
typeService:''
let details = reactive<detailType>({
dataList: [],
stockArticleId: '',
orderStatus: '',
reservationId: '',
stockListId: '',
allocation: '',
pallet: '',
customer: '',
stockupArea: '',
planNum: '',
scanNum: '',
trays: '',
warehouseArea: '',
orderCode: '',
scancode: '',
stockupId: '',
address: '',
isscan: false,
allocationId: '',
status: '',
typeService: ''
})
const tiplists=ref(null)
onLoad((op)=>{
details.stockArticleId=op.stockArticleId
details.status=op.status
details.stockupId=op.stockupId
details.orderStatus=op.orderStatus
details.reservationId=op.reservationId
details.allocationId=op.allocationId
const tiplists = ref(null)
onLoad((op) => {
details.stockArticleId = op.stockArticleId
details.status = op.status
details.stockupId = op.stockupId
details.orderStatus = op.orderStatus
details.reservationId = op.reservationId
details.allocationId = op.allocationId
// details.stockListId=op.stockListId
details.allocation=op.allocation
details.pallet=op.pallet
details.orderCode=op.orderCode
details.typeService=op.typeService
details.allocation = op.allocation
details.pallet = op.pallet
details.orderCode = op.orderCode
details.typeService = op.typeService
initpage()
// details.scancode='23072506516-3'
// scandata()
uni.$on('scancodedate', function(code) {
})
onShow(() => {
uni.$on('scancodedate', function (code) {
if (code) {
console.log(code);
details.scancode=code
details.scancode = code
scandata()
}
})
})
function goorderdetail(item){
uni.navigateTo({
url:'/pagesHome/pages/orderDetails/orderDetails?orderCode='+item.orderCode
})
}
function prinbut(){
let list=[],checklist=[]
details.dataList.map((item,index)=>{
onHide(() => {
uni.$off('scancodedate')
})
function goorderdetail(item) {
uni.navigateTo({
url: '/pagesHome/pages/orderDetails/orderDetails?orderCode=' + item.orderCode
})
}
function prinbut() {
let list = [], checklist = []
details.dataList.map((item, index) => {
list.push(item.packageBarCode)
checklist.push(index)
})
tiplists.value.setdetails({
title:'请选择需要打印的包条码',
isshow:true,
tipstate:2,
title: '请选择需要打印的包条码',
isshow: true,
tipstate: 2,
list,
checklist,
inputtext:'',
confirmTxt:'确认选择',
isonecheck:false,
success:(deta)=>{
if(deta.checklist.length==0){
inputtext: '',
confirmTxt: '确认选择',
isonecheck: false,
success: (deta) => {
if (deta.checklist.length == 0) {
uni.showToast({
title:'请选择包条码',
icon:'none'
title: '请选择包条码',
icon: 'none'
})
return
}
// #ifdef APP
deta.checklist.map(item=>{
deta.checklist.map(item => {
let text = '! 0 200 200 500 1\r\n'
text += 'SETBOLD 2\r\n'
text += `T 56 0 0 0 ${details.dataList[item]?.orderCode}\r\n`
@ -217,86 +225,89 @@
})
})
// #endif
tiplists.value.setdetails({isshow:false})
tiplists.value.setdetails({ isshow: false })
},
cancel:(details)=>{
tiplists.value.setdetails({isshow:false})
cancel: (details) => {
tiplists.value.setdetails({ isshow: false })
},
close:(details)=>{
tiplists.value.setdetails({isshow:false})
close: (details) => {
tiplists.value.setdetails({ isshow: false })
}
})
}
function showsdqs(){
function showsdqs() {
tiplists.value.setdetails({
isshow:true,
tipstate:1,
title:'请输入扫描的码',
placeholder:'请输入扫描的码',
inputtext:'',
success:(detail)=>{
details.scancode=detail.inputtext
isshow: true,
tipstate: 1,
title: '请输入扫描的码',
placeholder: '请输入扫描的码',
inputtext: '',
success: (detail) => {
details.scancode = detail.inputtext
scandata()
tiplists.value.setdetails({isshow:false})
tiplists.value.setdetails({ isshow: false })
},
cancel:()=>{
tiplists.value.setdetails({isshow:false})
cancel: () => {
tiplists.value.setdetails({ isshow: false })
},
close:()=>{
tiplists.value.setdetails({isshow:false})
close: () => {
tiplists.value.setdetails({ isshow: false })
}
})
}
async function scandata(){
let data={
scanType:1,
orderCode:details.orderCode,
packetBarCode:details.scancode,
stockupArea:details.stockupArea,
reservationId:details.reservationId,
allocationId:details.allocationId,
stockupId:details.stockupId,
typeService:details.typeService
async function scandata() {
let data = {
scanType: 1,
orderCode: details.orderCode,
packetBarCode: details.scancode,
stockupArea: details.stockupArea,
reservationId: details.reservationId,
allocationId: details.allocationId,
stockupId: details.stockupId,
typeService: details.typeService
}
let res=await distributionStockupstockupScan(data)
let res = await distributionStockupstockupScan(data)
console.log(res);
if(res.code==200){
details.isscan=true
if (res.code == 200) {
details.isscan = true
initpage()
} else if (res.code === 3001) {
//
if (res.audio) utils.ttsspke(res.audio)
}
}
async function initpage(){
let data={
orderStatus:details.orderStatus,
reservationId:details.reservationId,
stockArticleId:details.stockArticleId,
async function initpage() {
let data = {
orderStatus: details.orderStatus,
reservationId: details.reservationId,
stockArticleId: details.stockArticleId,
// stockListId:details.stockListId,
allocationId:details.allocationId,
allocation:details.allocation,
pallet:details.pallet,
stockupId:details.stockupId,
status:details.status,
typeService:details.typeService
allocationId: details.allocationId,
allocation: details.allocation,
pallet: details.pallet,
stockupId: details.stockupId,
status: details.status,
typeService: details.typeService
}
let response=await distributionStockuporderInfo(data)
let response = await distributionStockuporderInfo(data)
console.log(response);
details.dataList=response.data.packageList
details.customer=response.data.customer
details.stockupArea=response.data.stockupArea
details.planNum=response.data.planNum
details.scanNum=response.data.scanNum
details.trays=response.data.trays
details.warehouseArea=response.data.warehouseArea
details.address=response.data.address
if(Number(details.scanNum)>0&&details.isscan){
util.ttsspke(details.scanNum+'件')
details.dataList = response.data.packageList
details.customer = response.data.customer
details.stockupArea = response.data.stockupArea
details.planNum = response.data.planNum
details.scanNum = response.data.scanNum
details.trays = response.data.trays
details.warehouseArea = response.data.warehouseArea
details.address = response.data.address
if (Number(details.scanNum) > 0 && details.isscan) {
util.ttsspke('扫描' + details.scanNum + '件')
}
}
const { dataList }=toRefs(details)
const { dataList } = toRefs(details)
</script>
<style lang="scss">
.butbox{
.butbox {
display: flex;
flex-direction: column;
width: 686upx;
@ -306,17 +317,20 @@
padding: 16upx 0upx;
background-color: #ffffff;
border-radius: 8upx;
.scrollv{
.scrollv {
width: 100%;
height: 50vh;
// padding: 10upx;
box-sizing: border-box;
.mabxs{
.mabxs {
display: flex;
flex-direction: column;
align-items: center;
padding-top: 5upx;
.ite{
.ite {
width: 93%;
// width: 100%;
display: flex;
@ -327,16 +341,19 @@
border-radius: 8upx;
box-shadow: 0upx 2upx 10upx 0upx #e2e2e3;
margin-bottom: 20upx;
>view{
>view {
display: flex;
align-items: center;
justify-content: space-between;
width: 100%;
margin-bottom: 10upx;
&:nth-last-child(1){
&:nth-last-child(1) {
margin-bottom: none;
}
>view{
>view {
width: 50%;
// flex: 1;
font-size: 28upx;
@ -347,7 +364,8 @@
}
}
}
.prtbut{
.prtbut {
margin: auto;
margin-top: 20upx;
width: 320upx;
@ -362,7 +380,8 @@
justify-content: center;
}
}
.head{
.head {
display: flex;
flex-direction: column;
align-items: center;
@ -370,7 +389,8 @@
padding: 20upx;
box-sizing: border-box;
background-color: #ffffff;
>.type1{
>.type1 {
width: 100%;
display: flex;
align-items: center;
@ -378,16 +398,19 @@
font-size: 28upx;
font-weight: 400;
color: #092C4D;
>view{
>view {
flex: 1;
word-wrap: break-word;
word-break: break-all;
&:nth-of-type(1){
&:nth-of-type(1) {
margin-right: 30upx;
}
}
}
>.type2{
>.type2 {
width: 100%;
display: flex;
align-items: center;
@ -396,11 +419,13 @@
font-size: 28upx;
font-weight: 400;
color: #092C4D;
>view:nth-of-type(2){
>view:nth-of-type(2) {
width: 50%;
display: flex;
align-items: center;
>view:nth-of-type(2){
>view:nth-of-type(2) {
font-size: 28upx;
font-weight: 400;
color: #0086F1;
@ -409,4 +434,4 @@
}
}
}
</style>
</style>

2
pagesHome/pages/lnventorysortinglist/lnventorysortinglist.vue

@ -176,8 +176,6 @@
onLoad((op) => {
// details.pageType = op.type
details.pageType = 1
// details.scancode='HT20230800004'
// scandata()
})
onShow(() => {
// initpage()

2
pagesHome/pages/pickingScan/pickingScan.vue

@ -103,6 +103,7 @@
import { pageData } from '@/interfaces/pagesHome/pickingScan'
import { timeType } from '@/interfaces/pagesHome/allType'
import { inject, reactive, ref, toRefs, watchEffect } from "vue";
import utils from '../../../utils/utils';
// const functions=inject('functions')
let details = reactive<pageData>({
datatime: '',
@ -137,6 +138,7 @@
details.currentPage = 1
date.value[0] = (uni as any).$u.timeFormat((new Date().valueOf() - 1000 * 60 * 60 * 24 * 3), 'yyyy-mm-dd')
date.value[1] = (uni as any).$u.timeFormat((new Date().valueOf()), 'yyyy-mm-dd')
utils.ttsspke('请选择拣货任务')
// initpage()
})
function init() {

2
unpackage/dist/build/app-plus/pagesHome/pages/CustomerOrdersDetails/CustomerOrdersDetails.css vendored

File diff suppressed because one or more lines are too long

1318
unpackage/dist/dev/app-plus/app-service.js vendored

File diff suppressed because it is too large Load Diff

12
unpackage/dist/dev/app-plus/app.css vendored

@ -745,7 +745,7 @@ body {
}
.modtips .scvboxs[data-v-a3a2f036] {
width: 100%;
height: 15.625rem;
max-height: 15.625rem;
}
.modtips .imgbx[data-v-a3a2f036] {
width: 17.1875rem;
@ -881,16 +881,20 @@ body {
.inpNumList > uni-view[data-v-a3a2f036] {
margin-bottom: 0.3125rem;
}
.inpNumList[data-v-a3a2f036]:last-child {
border-bottom: 0px;
}
.inpNumList .inpNum-value[data-v-a3a2f036] {
display: flex;
align-items: center;
justify-content: space-between;
}
.inpNumList .inpNum-value .inpNum[data-v-a3a2f036] {
margin-left: 0.625rem;
margin-left: 0.3125rem;
flex: 1;
padding: 0 0.3125rem;
border: 0.03125rem solid #000;
padding: 0.15625rem 0.3125rem;
border: 0.03125rem solid #afafaf;
border-radius: 0.3125rem;
}
.inputNum[data-v-92b65ffd]{

4
unpackage/dist/dev/app-plus/manifest.json vendored

@ -7,8 +7,8 @@
"id": "__UNI__EB22F37",
"name": "货无忧",
"version": {
"name": "1.0.9",
"code": 109
"name": "1.0.11",
"code": 1011
},
"description": "",
"developer": {

22
unpackage/dist/dev/app-plus/pagesHome/pages/CustomerOrdersDetails/CustomerOrdersDetails.css vendored

@ -487,6 +487,7 @@ uni-view[data-v-f631659b], uni-scroll-view[data-v-f631659b], uni-swiper-item[dat
box-sizing: border-box;
position: relative;
margin-bottom: 0.625rem;
overflow: hidden;
}
.scve .mabx > .itec:nth-last-child(1) {
margin-bottom: 0;
@ -605,4 +606,25 @@ uni-view[data-v-f631659b], uni-scroll-view[data-v-f631659b], uni-swiper-item[dat
font-weight: 400;
color: #092C4D;
margin-top: 0.625rem;
}
.abnormalStyleContainer {
top: -0.625rem;
left: -0.625rem;
position: absolute;
padding: 0.3125rem;
border: 0.03125rem solid #f8544b;
border-radius: 50%;
}
.abnormalStyle {
font-size: 0.875rem;
height: 2.5rem;
width: 2.5rem;
display: flex;
align-items: center;
text-align: center;
color: #f8544b;
padding: 0.3125rem;
border-radius: 50%;
border: 0.03125rem solid #f8544b;
opacity: 0.6;
}
Loading…
Cancel
Save