niexiting 11 months ago
parent
commit
9485e8eb82
  1. 38
      common/detail.js
  2. 2
      mycomponents/detail/comDetailCard.vue
  3. 1
      mycomponents/item/itemQty.vue
  4. 21
      mycomponents/qty/CountQtyEdit.vue
  5. 19
      mycomponents/qty/balanceQtyEdit.vue
  6. 26
      mycomponents/qty/recommendQtyEdit.vue
  7. 17
      pages/deliver/job/deliverDetail.vue
  8. 2
      pages/issue/coms/comIssueRequestPopup.vue
  9. 24
      pages/issue/job/issueDetail.vue
  10. 2
      pages/purchaseReturn/record/returnRecord.vue
  11. 16
      pages/repleinsh/job/repleinshDetail.vue
  12. 148
      pages/transfer/coms/comReceiptDetailCard.vue
  13. 20
      pages/transfer/job/receiptDetail.vue
  14. 2
      pages/unPlanned/coms/comReceiptDetailCard.vue

38
common/detail.js

@ -1,5 +1,7 @@
import { calc } from '@/common/calc'
export function getDataSource(subList) {
import {
calc
} from '@/common/calc'
export function getDataSource(subList) {
let items = [];
subList.forEach(detail => {
var item = items.find(r =>
@ -10,19 +12,19 @@ export function getDataSource(subList) {
item.subList.push(newDetail);
items.push(item)
} else {
item.qty = calc.add(item.qty,detail.qty)
item.qty = calc.add(item.qty, detail.qty)
let newDetail = createDetailInfo(detail); //
item.subList.push(newDetail);
}
})
return items;
}
}
export function createItemInfo(detail) {
export function createItemInfo(detail) {
let item = {
itemCode: detail.itemCode,
itemName: detail.itemName,
stdPackQty: Number(detail.stdPackQty)||undefined,
stdPackQty: Number(detail.stdPackQty) || undefined,
stdPackUnit: detail.stdPackUnit,
qty: Number(detail.qty),
handleQty: 0,
@ -30,17 +32,17 @@ export function createItemInfo(detail) {
subList: []
}
return item;
}
}
export function createDetailInfo(data) {
export function createDetailInfo(data) {
data.scaned = false;
// data.record = {};
let detail = data;
return detail;
}
}
//根据明细创建记录
export function createRecordInfo(detail, balance) {
//根据明细创建记录
export function createRecordInfo(detail, balance) {
var record = {}
// let record = JSON.parse(JSON.stringify(detail));
//克隆对象,深度克隆,防止双向绑定同一个变量
@ -51,22 +53,22 @@ export function createRecordInfo(detail, balance) {
detail.inventoryStatus = balance.inventoryStatus;
record.qty = Number(balance.qty);
return record;
}
}
//计算实际数量
export function calcHandleQty(detailSource) {
//计算实际数量
export function calcHandleQty(detailSource) {
for (let item of detailSource) {
item.handleQty = 0;
for (let detail of item.subList) {
if (detail != undefined && detail.scaned) {
item.handleQty = calc.add(item.handleQty,detail.handleQty)
item.handleQty = calc.add(item.handleQty, detail.handleQty)
}
}
}
}
}
export function getScanCount(subList) {
export function getScanCount(subList) {
let items = subList.filter(r => {
if (r.scaned) {
return r;
@ -74,4 +76,4 @@ export function getScanCount(subList) {
})
let scanCount = items != null ? items.length : 0;
return scanCount;
}
}

2
mycomponents/detail/comDetailCard.vue

@ -3,7 +3,7 @@
<uni-collapse ref="collapse1" @change="">
<uni-collapse-item :open="true">
<template v-slot:title>
<item-compare-qty :dataContent="dataContent" :handleQty="Number(dataContent.handleQty)" :isShowStdPack="false">
<item-compare-qty :dataContent="dataContent" :handleQty="dataContent.handleQty" :isShowStdPack="false">
</item-compare-qty>
</template>
<u-line></u-line>

1
mycomponents/item/itemQty.vue

@ -18,6 +18,7 @@
</view>
</template>
<script>
import item from '@/mycomponents/item/item.vue'
import balanceQty from '@/mycomponents/qty/balanceQty.vue'
import compareQty from '@/mycomponents/qty/compareQty.vue'

21
mycomponents/qty/CountQtyEdit.vue

@ -38,7 +38,9 @@
<text>数量 : </text>
<view class="uni-flex uni-row uni-center" style="align-items: center;">
<input class="qty_input" v-model="allQty" :focus="true" type="number"
@mousedown="mousedown" />
@mousedown="mousedown"
@input="checkNum"
:maxlength="maxlength" />
<uom :uom="dataContent.uom"></uom>
</view>
</view>
@ -107,7 +109,8 @@
seconds: 0,
timer: {},
showConfirmCountdown: false,
detaiList: []
detaiList: [],
maxlength: 10
}
},
watch: {
@ -140,6 +143,20 @@
},
},
methods: {
checkNum(e) {
let value = e.detail.value;
let dot = value.indexOf('.'); //
let reg = /^[0-9]+$/; //
if (dot > -1) {
this.maxlength = dot + 7; //
if (value.length > dot + 7) {
}
}
if (reg.test(value)) { //
this.maxlength = 10;
}
},
openEditPopup(item, detaiList) {
this.dataContent = item
this.inventoryStatus = this.dataContent.inventoryStatus;

19
mycomponents/qty/balanceQtyEdit.vue

@ -36,7 +36,7 @@
<text>数量 : </text>
<view class="uni-flex uni-row uni-center" style="align-items: center;">
<input class="qty_input" v-model="allQty" :focus="true" type="number"
@confirm="confirm()" />
@confirm="confirm()" @input="checkNum" :maxlength="maxlength" />
<uom :uom="dataContent.uom"></uom>
</view>
</view>
@ -94,7 +94,8 @@
inventoryStatus: "",
originalInventoryStatus: "",
dataContent: {},
handleQty: 0
handleQty: 0,
maxlength: 10
}
},
watch: {
@ -123,6 +124,20 @@
}
},
methods: {
checkNum(e) {
let value = e.detail.value;
let dot = value.indexOf('.'); //
let reg = /^[0-9]+$/; //
if (dot > -1) {
this.maxlength = dot + 7; //
if (value.length > dot + 7) {
}
}
if (reg.test(value)) { //
this.maxlength = 10;
}
},
openEditPopup(item, handleQty) {
this.dataContent = item
this.inventoryStatus = this.dataContent.inventoryStatus

26
mycomponents/qty/recommendQtyEdit.vue

@ -31,12 +31,13 @@
</view>
</view>
<u-line />
<view class="uni-flex uni-row space-between padding title u-col-center">
<text>总数量 : </text>
<view class="uni-flex uni-row uni-center" style="align-items: center;">
<input class="qty_input" v-model="allQty" :focus="false" type="number"
@confirm="confirm()" />
@input="checkNum" @confirm="confirm()" :maxlength="maxlength" />
<uom :uom="dataContent.uom"></uom>
</view>
</view>
@ -69,7 +70,8 @@
allQty: 0,
stdCount: 0,
labelQty: 0,
recommendQty: 0
recommendQty: 0,
maxlength: 10
}
},
watch: {
@ -104,6 +106,20 @@
},
},
methods: {
checkNum(e) {
let value = e.detail.value;
let dot = value.indexOf('.'); //
let reg = /^[0-9]+$/; //
if (dot > -1) {
this.maxlength = dot + 7; //
if (value.length > dot + 7) {
}
}
if (reg.test(value)) { //
this.maxlength = 10;
}
},
openEditPopup() {
this.$refs.popup.open('bottom')
},
@ -148,7 +164,8 @@
} else {
if (this.recommendQty != 0) {
if (this.allQty > this.recommendQty) {
if (this.settingParam.allowBiggerQty != null && this.settingParam.allowBiggerQty == "TRUE") {
if (this.settingParam.allowBiggerQty != null && this.settingParam.allowBiggerQty ==
"TRUE") {
this.callback();
} else {
this.$refs.comMessage.showErrorMessage('数量[' + this.allQty + ']不允许大于推荐数量[' +
@ -159,7 +176,8 @@
})
}
} else if (this.allQty < this.recommendQty) {
if (this.settingParam.allowSmallerQty != null && this.settingParam.allowSmallerQty == "TRUE") {
if (this.settingParam.allowSmallerQty != null && this.settingParam.allowSmallerQty ==
"TRUE") {
this.callback();
} else {
this.$refs.comMessage.showErrorMessage('数量[' + this.allQty + ']不允许小于推荐数量[' +

17
pages/deliver/job/deliverDetail.vue

@ -137,12 +137,21 @@
//
onBackPress(e) {
//
if (e.from == 'backbutton') {
if (this.received) {
//
cancleTakeDeliverJob(this.id).then(res => {}).catch(error => {
this.showMessage(err);
cancleTakeDeliverJob(this.id).then(res => {
uni.navigateBack();
}).catch(error => {
uni.navigateBack();
})
} else {
uni.navigateBack();
}
return true;
}
},
methods: {
@ -342,10 +351,10 @@
let handleQty = 0;
if (batch != undefined) {
batch.Records.forEach(res => {
handleQty = calc.add(handleQty,res.qty)
handleQty = calc.add(handleQty, res.qty)
})
batch.handleQty = handleQty;
itemHandleQty = calc.add(itemHandleQty,handleQty)
itemHandleQty = calc.add(itemHandleQty, handleQty)
}
})
}

2
pages/issue/coms/comIssueRequestPopup.vue

@ -46,7 +46,7 @@
:focus="numberFocus" @blur='numberFocus = false'>
</uni-number-box>
<view class="std_pack">
<view class="std_pack" v-if="itemCode!='请扫描物料信息'">
<text>
/{{stdQty}}
<!-- {{Number(dataContent.stdPackQty)}}{{getStdPackUnit(dataContent.uom)}} -->

24
pages/issue/job/issueDetail.vue

@ -62,6 +62,10 @@
getManagementPrecisions
} from '@/common/balance.js';
import {
calc
} from '@/common/calc.js';
import jobDetailPopup from '@/mycomponents/job/jobDetailPopup.vue'
import comIssueDetailCard from '@/pages/issue/coms/comIssueDetailCard.vue'
import winScanButton from '@/mycomponents/scan/winScanButton.vue'
@ -90,7 +94,8 @@
subList: [], //subList
detailSource: [], //
detailOptions: [],
scanOptions: []
scanOptions: [],
received:false
};
},
@ -122,12 +127,21 @@
//
onBackPress(e) {
//
if (e.from === 'backbutton') {
if (this.received) {
//
cancleTakeIssueJob(this.id).then(res => {}).catch(error => {
this.showMessage(err);
cancleTakeIssueJob(this.id).then(res => {
uni.navigateBack();
}).catch(error => {
uni.navigateBack();
})
} else {
uni.navigateBack();
}
return true;
}
},
watch: {
@ -392,10 +406,10 @@
let handleQty = 0;
if (batch != undefined) {
batch.Records.forEach(res => {
handleQty += Number(res.qty)
handleQty = calc.add(handleQty,res.qty)
})
batch.handleQty = handleQty;
itemHandleQty += handleQty;
itemHandleQty = calc.add(itemHandleQty,handleQty)
}
})
}

2
pages/purchaseReturn/record/returnRecord.vue

@ -252,7 +252,7 @@
purchaseReturnRecordSubmit(params).then(res => {
uni.hideLoading()
if (res.data) {
this.showCommitSuccessMessage("提交成功<br>生成采购退货记录" + res.data)
this.showCommitSuccessMessage("提交成功<br>生成采购退货记录<br>" + res.data)
} else {
this.showErrorMessage("提交失败" + res.msg)
}

16
pages/repleinsh/job/repleinshDetail.vue

@ -99,7 +99,8 @@
detailOptions: [],
scanOptions: [],
toLocationCode: '',
tolocationTypeList: []
tolocationTypeList: [],
received:false,
};
},
@ -131,12 +132,21 @@
//
onBackPress(e) {
//
if (e.from === 'backbutton') {
if (this.received) {
//
cancleTakeRepleinshJob(this.id).then(res => {}).catch(error => {
this.showMessage(err);
cancleTakeRepleinshJob(this.id).then(res => {
uni.navigateBack();
}).catch(error => {
uni.navigateBack();
})
} else {
uni.navigateBack();
}
return true;
}
},
watch: {

148
pages/transfer/coms/comReceiptDetailCard.vue

@ -0,0 +1,148 @@
<template>
<view class="" style="background-color: #fff;">
<uni-collapse ref="collapse1" @change="">
<uni-collapse-item :open="true">
<template v-slot:title>
<item-qty :dataContent="dataContent" :handleQty="dataContent.handleQty" :showItemQty ="false"></item-qty>
</template>
<u-line />
<view class="" v-for="(item,index) in dataContent.subList">
<uni-swipe-action ref="swipeAction">
<uni-swipe-action-item @click="swipeClick($event,item)"
:right-options="item.scaned?scanOptions:detailOptions">
<recommend :detail="item" :isShowFromLocation="false" :isShowToLocation="true">
</recommend>
</uni-swipe-action-item>
</uni-swipe-action>
<u-line color="#D8D8D8"></u-line>
</view>
</uni-collapse-item>
</uni-collapse>
<recommend-qty-edit ref="receiptEdit" :dataContent="editItem" :settingParam="settingParam"
@confirm="confirm">
</recommend-qty-edit>
<win-scan-location ref="scanLocationCode" title="目标库位" @getLocation='getLocation'
:locationTypeList="locationTypeList"></win-scan-location>
<detail-info-popup ref="detailInfoPopup"></detail-info-popup>
<comMessage ref="message"></comMessage>
</view>
</template>
<script>
import itemQty from '@/mycomponents/item/itemQty.vue'
import recommend from '@/mycomponents/recommend/recommend.vue'
import recommendQtyEdit from '@/mycomponents/qty/recommendQtyEdit.vue'
import jobDetailPopup from '@/mycomponents/job/jobDetailPopup.vue'
import comMessage from '@/mycomponents/common/comMessage.vue'
import detailInfoPopup from '@/pages/unPlanned/coms/detailInfoPopup.vue'
import winScanLocation from "@/mycomponents/scan/winScanLocation.vue"
import {
getDetailOption,
getPurchaseReceiptOption
} from '@/common/array.js';
export default {
components: {
itemQty,
recommend,
recommendQtyEdit,
detailInfoPopup,
comMessage,
winScanLocation
},
props: {
dataContent: {
type: Object,
default: {}
},
settingParam: {
type: Object,
default: {}
},
isShowLocation: {
type: Boolean,
default: false
},
locationTypeList: {
type: Object,
default: {}
},
},
watch: {
},
data() {
return {
showItem: {},
editItem: {
record: {
}
},
detailOptions: [],
scanOptions: []
}
},
mounted() {
if (this.detailOptions.length == 0) {
this.detailOptions = getDetailOption();
}
if (this.scanOptions.length == 0) {
this.scanOptions = getPurchaseReceiptOption(this.settingParam.allowModifyQty,this.settingParam.allowModifyLocation)
}
},
methods: {
swipeClick(e, item) {
if (e.content.text == "详情") {
this.detail(item)
} else if (e.content.text == "编辑") {
this.edit(item)
} else if (e.content.text == "库位") {
this.showLocation(item)
} else if (e.content.text == "移除") {
this.remove(item)
}
},
edit(item) {
this.editItem = item;
this.$refs.receiptEdit.openTaskEditPopup(item.qty, item.handleQty,item.labelQty);
},
showLocation(item) {
this.locatonItem =item;
this.$refs.scanLocationCode.openScanPopup();
},
//
getLocation(location, code) {
this.locatonItem.toLocationCode =code;
this.$emit('updateData')
},
detail(item) {
this.showItem = item;
this.$refs.detailInfoPopup.openPopup(item)
},
remove(item) {
this.$refs.message.showQuestionMessage("确定移除扫描信息?",
res => {
if (res) {
item.scaned = false
item.handleQty = null
this.$forceUpdate()
this.$emit('remove', item)
}
});
},
confirm(qty) {
this.editItem.handleQty = qty;
this.$emit('updateData')
}
}
}
</script>
<style>
</style>

20
pages/transfer/job/receiptDetail.vue

@ -17,10 +17,9 @@
<scroll-view scroll-y="true" class="page-main-scroll">
<view class="detail-list" v-for="(item, index) in detailSource" :key="item.id">
<view class="">
<com-detail-card :dataContent="item" :settingParam="jobContent" :isShowLocation="false"
@remove="updateData" @updateData="updateData" @openDetail="openDetail"
:locationTypeList='tolocationTypeList'>
</com-detail-card>
<com-receipt-detail-card :dataContent="item" :index="index" :settingParam="jobContent"
@remove="updateData" @updateData="updateData" :locationTypeList='toLocationTypeList'>
</com-receipt-detail-card>
</view>
</view>
</scroll-view>
@ -32,7 +31,7 @@
<view class="">
<requiredLocation ref='comScanLocation' title="目标库位" :locationCode="toLocationCode"
@getLocation='scanLocationCode' :isShowEdit="jobContent.allowModifyLocation == 'TRUE'"
:locationTypeList="tolocationTypeList"></requiredLocation>
:locationTypeList="toLocationTypeList"></requiredLocation>
</view>
<view class=" uni-flex uni-row">
<button class="btn_single_commit" hover-class="btn_commit_after" @click="commit">提交</button>
@ -85,6 +84,7 @@
import comDetailCard from "@/mycomponents/detail/comDetailCard.vue"
import detailInfoPopup from '@/pages/transfer/coms/detailInfoPopup.vue'
import jobTop from '@/mycomponents/job/jobTop.vue'
import comReceiptDetailCard from '@/pages/transfer/coms/comReceiptDetailCard.vue'
export default {
name: 'returnDetail',
@ -95,7 +95,8 @@
winScanPack,
comDetailCard,
detailInfoPopup,
jobTop
jobTop,
comReceiptDetailCard
},
data() {
return {
@ -108,7 +109,7 @@
toLocationCode: "",
businessTypeInfo: {},
managementList: [],
tolocationTypeList: []
toLocationTypeList: []
};
},
onLoad(option) {
@ -195,7 +196,7 @@
that.detailSource = getDataSource(that.subList)
that.fromLocationCode = that.subList[0].fromLocationCode
that.toLocationCode = that.subList[0].toLocationCode
that.tolocationTypeList = getDirectoryItemArray(that.jobContent.toLocationTypes)
that.toLocationTypeList = getDirectoryItemArray(that.jobContent.toLocationTypes)
} else {
that.showMessage('列表数据为0');
}
@ -258,11 +259,10 @@
this.detailSource[0].subList.sort(compareAsc('scaned')); //
itemDetail.handleQty = Number(result.label.qty);
itemDetail.toLocationCode = this.toLocationCode;
itemDetail.stdPackQty = result.package.stdPackQty
itemDetail.labelQty = Number(result.label.qty);
calcHandleQty(this.detailSource);
this.continueScan()
this.$forceUpdate()
var list = this.detailSource[0].subList;
}
}
}

2
pages/unPlanned/coms/comReceiptDetailCard.vue

@ -3,7 +3,7 @@
<uni-collapse ref="collapse1" @change="">
<uni-collapse-item :open="true">
<template v-slot:title>
<item-qty :dataContent="dataContent" :handleQty="dataContent.handleQty"></item-qty>
<item-qty :dataContent="dataContent" :handleQty="dataContent.handleQty" :showItemQty ="false"></item-qty>
</template>
<u-line />
<view class="" v-for="(item,index) in dataContent.subList">

Loading…
Cancel
Save