11 changed files with 886 additions and 3 deletions
@ -0,0 +1,41 @@ |
|||
<!-- 收货任务详情 --> |
|||
<template> |
|||
<view class="device-detail" style="padding-bottom: 0 !important;"> |
|||
<comRequestTopInfo :requestContent="dataContent"></comRequestTopInfo> |
|||
<view class="" style="font-size: 32rpx;"> |
|||
订单号 : {{dataContent.asnNumber}} |
|||
</view> |
|||
<view class="" style="font-size: 32rpx;"> |
|||
供应商代码 : {{dataContent.supplierCode}} |
|||
</view> |
|||
</view> |
|||
</template> |
|||
|
|||
<script> |
|||
import comRequestTopInfo from '@/mycomponents/comRequest/comRequestTopInfo.vue' |
|||
|
|||
export default { |
|||
components: { |
|||
comRequestTopInfo |
|||
}, |
|||
props: { |
|||
dataContent: { |
|||
type: Object, |
|||
default: {} |
|||
} |
|||
}, |
|||
data() { |
|||
return { |
|||
|
|||
}; |
|||
}, |
|||
|
|||
mounted() { |
|||
|
|||
}, |
|||
methods: {} |
|||
} |
|||
</script> |
|||
|
|||
<style scoped lang="scss"> |
|||
</style> |
@ -0,0 +1,54 @@ |
|||
<!-- 收货任务详情 --> |
|||
<template> |
|||
<view class="task_num"> |
|||
<view class="ljh_box nopad"> |
|||
<view class="tit_ljh"> |
|||
<text class="state-style" :class="requestContent.requestStatus | requestStatusStyle"> |
|||
{{requestContent.requestStatus | requestStatusColor}} |
|||
</text> |
|||
<text class="text_bold" style="padding:4rpx 2rpx;">{{requestContent.number}}</text> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
</template> |
|||
|
|||
<script> |
|||
import { |
|||
getRequestStatusDesc, |
|||
getRequestStatusStyle |
|||
} from '@/common/basic.js'; |
|||
|
|||
export default { |
|||
name: 'comJobScanDetail', |
|||
components: { |
|||
|
|||
}, |
|||
props: { |
|||
requestContent: { |
|||
type: Object, |
|||
default: {} |
|||
} |
|||
}, |
|||
data() { |
|||
return { |
|||
|
|||
}; |
|||
}, |
|||
|
|||
filters: { |
|||
requestStatusStyle: function(val) { |
|||
return getRequestStatusStyle(val); |
|||
}, |
|||
requestStatusColor: function(val) { |
|||
return getRequestStatusDesc(val); |
|||
}, |
|||
}, |
|||
mounted() { |
|||
|
|||
}, |
|||
methods: {} |
|||
} |
|||
</script> |
|||
|
|||
<style scoped lang="scss"> |
|||
</style> |
@ -0,0 +1,216 @@ |
|||
<template> |
|||
<page-meta root-font-size="18px"></page-meta> |
|||
<view class=""> |
|||
<win-blank-view @goScan='openScanPopup' v-if="itemList.length==0"></win-blank-view> |
|||
<uni-swipe-action> |
|||
</uni-swipe-action> |
|||
<scroll-view scroll-y="true" class="scroll-Y"> |
|||
<view class="detail-list margin_top" v-for="(item, index) in itemList" :key="index"> |
|||
<uni-swipe-action> |
|||
<uni-swipe-action-item :right-options="options2" @click="removeClick($event,index)"> |
|||
<com-balance-item :dataContent='item'></com-balance-item> |
|||
</uni-swipe-action-item> |
|||
</uni-swipe-action> |
|||
</view> |
|||
</scroll-view> |
|||
<div class="new_bot_box" v-show="itemList.length>0"> |
|||
<view class="new_btn_bot"> |
|||
<button class="new_save_btn" @click="submit()">提交</button> |
|||
</view> |
|||
</div> |
|||
|
|||
<win-scan-button @goScan='openScanPopup' v-if="itemList.length>0"></win-scan-button> |
|||
<win-scan-by-pack ref="scanPopup" @getScanResult='getScanResult'></win-scan-by-pack> |
|||
<com-balance ref="balanceItems" @selectedItem='selectedBalanceItem'></com-balance> |
|||
<com-message ref="comMessage" @afterCloseScanMessage='closeScanMessage'></com-message> |
|||
</view> |
|||
</template> |
|||
|
|||
<script> |
|||
import { |
|||
getBalancesByFilter, |
|||
} from '@/api/index.js'; |
|||
import winBlankView from '@/mycomponents/wincom/winBlankView.vue' |
|||
import winScanButton from '@/mycomponents/wincom/winScanButton.vue' |
|||
import winScanByPack from '@/mycomponents/wincom/winScanByPack.vue' |
|||
import comMessage from '@/mycomponents/common/comMessage.vue' |
|||
import comBalanceItem from '@/mycomponents/comItem/comBalanceItem.vue' |
|||
import comBalance from '@/mycomponents/common/comBalance.vue' |
|||
|
|||
export default { |
|||
name: 'return', |
|||
components: { |
|||
comMessage, |
|||
winBlankView, |
|||
winScanButton, |
|||
winScanByPack, |
|||
comBalanceItem, |
|||
comBalance |
|||
|
|||
}, |
|||
data() { |
|||
return { |
|||
options1: [{ |
|||
text: '取消置顶' |
|||
}], |
|||
options2: [{ |
|||
text: '移除', |
|||
style: { |
|||
backgroundColor: '#ff0000' |
|||
} |
|||
}], |
|||
|
|||
itemList: [], |
|||
currentLabel: null, |
|||
}; |
|||
}, |
|||
onReady() { |
|||
this.openScanPopup(); |
|||
}, |
|||
methods: { |
|||
//扫描箱标签 |
|||
getScanResult(result) { |
|||
|
|||
let code = result.data.code; |
|||
if (code == '') return; |
|||
this.currentLabel = result.data; |
|||
let items = this.itemList.filter(r => { |
|||
return r.packingCode === code |
|||
}) |
|||
|
|||
if (items.length > 0) { |
|||
this.showMessage('箱码【' + code + '】已经存在,请扫描其他箱码.'); |
|||
|
|||
} else { |
|||
this.getBalances() |
|||
} |
|||
}, |
|||
|
|||
getBalances() { |
|||
let that = this; |
|||
let code = this.currentLabel.packingCode; |
|||
uni.showLoading({ |
|||
title: "加载中....", |
|||
mask: true |
|||
}); |
|||
let params = { |
|||
pageSize: 1000, |
|||
pageIndex: 1, |
|||
packingCode: code, |
|||
locationTypes: [2] //原材料 |
|||
}; |
|||
getBalancesByFilter(params).then(res => { |
|||
if (res.totalCount == 0) { |
|||
this.showScanMessage('箱码【' + code + '】在【原料库】未查询到库存信息'); |
|||
} else if (res.totalCount == 1) { |
|||
let balanceItem = res.items[0]; |
|||
let item = this.createItem(balanceItem); |
|||
that.itemList.unshift(item) |
|||
that.scanPopupGetFocus(); |
|||
} else { |
|||
this.$refs.balanceItems.openPopup(res.items); |
|||
} |
|||
uni.hideLoading(); |
|||
}).catch(ex => { |
|||
uni.hideLoading(); |
|||
that.showMessage(ex.message); |
|||
}); |
|||
}, |
|||
createItem(item) { |
|||
item.remark = item.remrak; |
|||
item.itemCode = item.itemCode |
|||
item.itemName = item.itemName; |
|||
item.itemDesc1 = item.itemDesc1; |
|||
item.itemDesc2 = item.itemDesc2; |
|||
item.uom = item.uom; |
|||
item.qty = item.qty; |
|||
// item.stdPackUom = |
|||
// item.stdPackQty = |
|||
item.fromPackingCode = item.packingCode; |
|||
item.toPackingCode = item.packingCode; |
|||
item.fromContainerCode = item.containerCode; |
|||
item.toContainerCode = item.containerCode; |
|||
item.fromLot = item.lot; |
|||
item.toLot = item.lot; |
|||
item.supplierBatch = item.supplierBatch; |
|||
item.arriveDate = item.arriveDate; |
|||
item.produceDate = item.produceDate; |
|||
item.expireDate = item.expireDate; |
|||
item.fromLocationCode = item.locationCode; |
|||
item.fromLocationGroup = item.locationGroup; |
|||
item.fromLocationArea = item.locationArea; |
|||
item.fromLocationErpCode = item.locationErpCode; |
|||
item.fromWarehouseCode = localStorage.warehouseCode; |
|||
item.toLocationCode = item.locationCode; |
|||
item.toLocationGroup = item.locationGroup; |
|||
item.toLocationArea = item.locationArea; |
|||
item.toLocationErpCode = item.locationErpCode; |
|||
item.toWarehouseCode = localStorage.warehouseCode; |
|||
item.fromStatus = item.status; |
|||
item.toStatus = item.status; |
|||
item.reasonCode = this.scrapReason; |
|||
return item; |
|||
}, |
|||
selectedBalanceItem(balanceItem) { |
|||
let item = this.createItem(balanceItem); |
|||
this.itemList.unshift(item) |
|||
}, |
|||
|
|||
scanPopupGetFocus() { |
|||
this.$refs.scanPopup.getfocus(); |
|||
}, |
|||
|
|||
openScanPopup() { |
|||
this.$refs.scanPopup.openScanPopup() |
|||
}, |
|||
closeScanMessage() { |
|||
this.scanPopupGetFocus(); |
|||
}, |
|||
showMessage(message) { |
|||
this.$refs.comMessage.showMessage(message); |
|||
}, |
|||
|
|||
removeClick(e, index) { |
|||
if (e.content.text === '移除') { |
|||
uni.showModal({ |
|||
title: '提示', |
|||
content: '是否移除选择的行?', |
|||
success: res => { |
|||
if (res.confirm) { |
|||
this.itemList.splice(index, 1); |
|||
} |
|||
} |
|||
}); |
|||
} |
|||
}, |
|||
submit(){ |
|||
if(this.itemList.length==0){ |
|||
this.showMessage("请先扫描箱码") |
|||
return; |
|||
} |
|||
} |
|||
} |
|||
|
|||
} |
|||
</script> |
|||
|
|||
<style scoped lang="scss"> |
|||
movable-view { |
|||
display: flex; |
|||
align-items: center; |
|||
justify-content: center; |
|||
height: 150rpx; |
|||
width: 150rpx; |
|||
} |
|||
|
|||
movable-area { |
|||
height: 500rpx; |
|||
width: 100%; |
|||
overflow: hidden; |
|||
} |
|||
|
|||
.movable-max { |
|||
width: 500rpx; |
|||
height: 500rpx; |
|||
} |
|||
</style> |
@ -0,0 +1,200 @@ |
|||
<template> |
|||
<page-meta root-font-size="18px"></page-meta> |
|||
<view class=""> |
|||
<win-empty-view v-if="returnList.length==0"></win-empty-view> |
|||
<view v-for="(item, index) in returnList" :key="index" @click="openDetail(item)"> |
|||
<com-return :returnItem="item" :isRequest="true"></com-return> |
|||
</view> |
|||
<uni-load-more :status="loadingType" v-if="returnList.length>0" /> |
|||
<comMessage ref="comMessage"></comMessage> |
|||
</view> |
|||
</template> |
|||
|
|||
<script> |
|||
import { |
|||
getReturnRequestList, |
|||
} from '@/api/index.js'; |
|||
import { |
|||
getJobStatuStyle, |
|||
getJobStatuDesc, |
|||
goHome |
|||
} from '@/common/basic.js'; |
|||
|
|||
import winEmptyView from '@/mycomponents/wincom/winEmptyView.vue' |
|||
import comReturn from '@/mycomponents/return/comReturn.vue' |
|||
import winScanButton from '@/mycomponents/wincom/winScanButton.vue' |
|||
import winScanByCode from '@/mycomponents/wincom/winScanByCode.vue' |
|||
import winMulitScan from '@/mycomponents/wincom/winMulitScan.vue' |
|||
import comMessage from '@/mycomponents/common/comMessage.vue' |
|||
|
|||
export default { |
|||
name: 'return', |
|||
components: { |
|||
winEmptyView, |
|||
comReturn, |
|||
winScanButton, |
|||
winScanByCode, |
|||
winMulitScan, |
|||
comMessage, |
|||
}, |
|||
data() { |
|||
return { |
|||
returnList: [], |
|||
reload: false, |
|||
status: '', |
|||
contentText: { |
|||
contentdown: '上拉加载更多', |
|||
contentrefresh: '加载中', |
|||
contentnomore: '没有更多' |
|||
}, |
|||
|
|||
titleArray: ['任务编号'], |
|||
loadingType: "nomore", |
|||
pageSize: this.modelConfig, |
|||
maxResultCount: 10, |
|||
skipCount: 0, |
|||
pageIndex: 0, |
|||
totalCount: 0, |
|||
filter: [] |
|||
}; |
|||
}, |
|||
|
|||
onShow() { |
|||
this.getList('refresh'); |
|||
}, |
|||
onReachBottom() { |
|||
//避免多次触发 |
|||
if (this.loadingType == 'loading' || this.loadingType == 'nomore') { |
|||
return; |
|||
} |
|||
this.getList("more"); |
|||
}, |
|||
|
|||
onPullDownRefresh() { |
|||
this.getList('refresh'); |
|||
}, |
|||
|
|||
//后退按钮 |
|||
onBackPress(options) { |
|||
if (options.from === 'navigateBack') { |
|||
return false; |
|||
} |
|||
goHome(); |
|||
return true; |
|||
}, |
|||
|
|||
//返回首页 |
|||
onNavigationBarButtonTap(e) { |
|||
if (e.index === 0) { |
|||
goHome(); |
|||
}else if(e.index === 1){ |
|||
window.location.reload(); |
|||
} |
|||
}, |
|||
filters: { |
|||
statusStyle: function(val) { |
|||
return getJobStatuStyle(val); |
|||
}, |
|||
statusColor: function(val) { |
|||
return getJobStatuDesc(val); |
|||
}, |
|||
|
|||
}, |
|||
methods: { |
|||
openScanPopup() { |
|||
this.$refs.scanPopup.openScanPopup(); |
|||
}, |
|||
closeScanPopup() { |
|||
this.$refs.popup.close() |
|||
}, |
|||
|
|||
getList(type) { |
|||
let that = this; |
|||
uni.showLoading({ |
|||
title: "加载中....", |
|||
mask: true |
|||
}); |
|||
this.loadingType = "loading"; |
|||
if (type === "refresh") { |
|||
this.skipCount = 0; |
|||
this.pageIndex = 0; |
|||
this.returnList = []; |
|||
} |
|||
let params = { |
|||
maxResultCount: this.maxResultCount, |
|||
skipCount: this.skipCount, |
|||
sorting: "", |
|||
condition: { |
|||
filters: this.filter |
|||
// [ |
|||
// { |
|||
// logic: "And", |
|||
// column: "CreationTime", |
|||
// action: "==", |
|||
// value: "1" |
|||
// } |
|||
// ] |
|||
}, |
|||
}; |
|||
getReturnRequestList(params) |
|||
.then(res => { |
|||
uni.hideLoading(); |
|||
if (type === "refresh") { |
|||
uni.stopPullDownRefresh(); |
|||
} |
|||
|
|||
var list = res.items; |
|||
var totalCount = res.totalCount |
|||
this.loadingType = "loadmore"; |
|||
if (this.returnList.length < totalCount) { |
|||
this.returnList = type === "refresh" ? list : this.returnList.concat(list); |
|||
this.pageIndex++; |
|||
this.skipCount = this.pageIndex * this.pageSize; |
|||
} else { |
|||
this.loadingType = "nomore"; |
|||
} |
|||
}) |
|||
.catch(err => { |
|||
this.loadingType = ""; |
|||
this.showMessage(err.message); |
|||
uni.hideLoading(); |
|||
if (type === "refresh") { |
|||
uni.stopPullDownRefresh(); |
|||
} |
|||
}); |
|||
}, |
|||
|
|||
|
|||
openDetail(item) { |
|||
uni.navigateTo({ |
|||
url: './purchaseReturnRequestApprove_detail?id=' + item.id |
|||
}); |
|||
}, |
|||
|
|||
showMessage(message) { |
|||
this.$refs.comMessage.showMessage(message); |
|||
}, |
|||
}, |
|||
} |
|||
</script> |
|||
|
|||
<style scoped lang="scss"> |
|||
movable-view { |
|||
display: flex; |
|||
align-items: center; |
|||
justify-content: center; |
|||
height: 150rpx; |
|||
width: 150rpx; |
|||
} |
|||
|
|||
movable-area { |
|||
height: 500rpx; |
|||
width: 100%; |
|||
overflow: hidden; |
|||
} |
|||
|
|||
.movable-max { |
|||
width: 500rpx; |
|||
height: 500rpx; |
|||
} |
|||
</style> |
@ -0,0 +1,189 @@ |
|||
<!-- 收货任务详情 --> |
|||
<template> |
|||
<page-meta root-font-size="18px"></page-meta> |
|||
<view class=""> |
|||
<view class="top_card"> |
|||
<comRequestDetail :dataContent="dataContent"> |
|||
</comRequestDetail> |
|||
</view> |
|||
<scroll-view scroll-y="true" class="scroll-Y" style="padding-bottom: 180rpx;"> |
|||
<view class="" style="background-color: #fff;"> |
|||
<uni-table border stripe emptyText="" v-for="(item, index) in dataList" style="width: 100%;"> |
|||
<uni-tr style="width: 100%;" v-for="(item1, index1) in item" :key="index1"> |
|||
<uni-td>{{item1.title}}</uni-td> |
|||
<uni-td>{{item1.content}}</uni-td> |
|||
</uni-tr> |
|||
<view style=" height: 30rpx; width: 100%;"> |
|||
</view> |
|||
</uni-table> |
|||
|
|||
</view> |
|||
</scroll-view> |
|||
<view class="uni-flex uni-row new_btn_bot"> |
|||
<button class="new_clear_btn btn_double" @click="approve()">审批</button> |
|||
<button class="new_save_btn btn_double" @click="reject()">驳回</button> |
|||
</view> |
|||
<comMessage ref="comMessage"></comMessage> |
|||
</view> |
|||
</template> |
|||
|
|||
<script> |
|||
import { |
|||
getReturnRequestDetail, |
|||
purchaseReturnRequestAgree, |
|||
purchaseReturnRequestReject |
|||
} from '@/api/index.js'; |
|||
|
|||
import { |
|||
navigateBack |
|||
} from '@/common/basic.js'; |
|||
|
|||
import comRequestDetail from '@/mycomponents/comRequest/comRequestDetail.vue' |
|||
import comMessage from '@/mycomponents/common/comMessage.vue' |
|||
export default { |
|||
components: { |
|||
comRequestDetail, |
|||
comMessage |
|||
}, |
|||
data() { |
|||
return { |
|||
dataContent: {}, |
|||
dataList: [], |
|||
id: "" |
|||
}; |
|||
}, |
|||
mounted: function() { |
|||
|
|||
}, |
|||
onLoad(option) { |
|||
if (option.id != undefined) { |
|||
this.id = option.id |
|||
this.getDetail(option.id); |
|||
} |
|||
}, |
|||
//返回首页 |
|||
onNavigationBarButtonTap(e) { |
|||
if (e.index === 0) { |
|||
goHome(); |
|||
} else if (e.index === 1) { |
|||
window.location.reload(); |
|||
} |
|||
}, |
|||
mounted() { |
|||
uni.setNavigationBarColor({ |
|||
frontColor: '#ffffff', |
|||
backgroundColor: "#5A7CF3 !important" |
|||
}) |
|||
}, |
|||
methods: { |
|||
|
|||
getDetail(id) { |
|||
getReturnRequestDetail(id) |
|||
.then(res => { |
|||
this.dataContent = res; |
|||
this.initData(res.details) |
|||
}) |
|||
.catch(err => { |
|||
this.showMessage(err.message); |
|||
}); |
|||
}, |
|||
approve() { |
|||
uni.showModal({ |
|||
title: '提示', |
|||
content: '确认审批?', |
|||
success: res => { |
|||
if (res.confirm) { |
|||
purchaseReturnRequestAgree(this.id).then(res => { |
|||
if (res) { |
|||
this.showMessage("审批成功"); |
|||
navigateBack(1) |
|||
}else { |
|||
this.showMessage("审批失败"); |
|||
} |
|||
}).catch(error => { |
|||
this.showMessage("审批失败" + error.message); |
|||
}) |
|||
} |
|||
} |
|||
}); |
|||
}, |
|||
reject() { |
|||
uni.showModal({ |
|||
title: '提示', |
|||
content: '确认驳回?', |
|||
success: res => { |
|||
if (res.confirm) { |
|||
purchaseReturnRequestReject(this.id).then(res => { |
|||
if (res) { |
|||
this.showMessage("驳回成功"); |
|||
navigateBack(1) |
|||
}else { |
|||
this.showMessage("驳回失败"); |
|||
} |
|||
|
|||
}).catch(error => { |
|||
this.showMessage("驳回失败" + error.message); |
|||
}) |
|||
} |
|||
} |
|||
}); |
|||
}, |
|||
|
|||
initData(data) { |
|||
this.dataList = [] |
|||
data.forEach(res => { |
|||
var list = [{ |
|||
title: '物品代码', |
|||
content: res.itemCode |
|||
}, { |
|||
title: '物品名称', |
|||
content: res.itemName, |
|||
}, |
|||
{ |
|||
title: '物品描述', |
|||
content: res.itemDesc1, |
|||
}, |
|||
{ |
|||
title: '箱码', |
|||
content: res.packingCode, |
|||
}, |
|||
{ |
|||
title: '批次', |
|||
content: res.lot, |
|||
}, |
|||
{ |
|||
title: '退货库位', |
|||
content: res.locationCode, |
|||
}, |
|||
{ |
|||
title: '数量', |
|||
content: res.qty, |
|||
}, |
|||
{ |
|||
title: '单位', |
|||
content: res.uom, |
|||
}, |
|||
{ |
|||
title: '订单号', |
|||
content: res.poNumber, |
|||
}, |
|||
|
|||
|
|||
]; |
|||
this.dataList.push(list) |
|||
|
|||
}) |
|||
|
|||
}, |
|||
|
|||
|
|||
showMessage(message) { |
|||
this.$refs.comMessage.showMessage(message); |
|||
}, |
|||
|
|||
} |
|||
} |
|||
</script> |
|||
|
|||
<style scoped lang="scss"> |
|||
</style> |
Loading…
Reference in new issue