Browse Source

计划外入库申请

wms3.0_pda
lijuncheng 11 months ago
parent
commit
333e6ed925
  1. 69
      api/request2.js
  2. 9
      common/basic.js
  3. 20
      common/label.js
  4. 40
      common/scan.js
  5. 2
      mycomponents/scan/winComScan.vue
  6. 2
      mycomponents/scan/winScanPack.vue
  7. 6
      pages/productionReturn/request/returnRequestCreate.vue
  8. 254
      pages/unPlanned/coms/comReceiptRequestPopup.vue
  9. 3
      pages/unPlanned/job/receiptJobDetail.vue
  10. 10
      pages/unPlanned/request/issueRequestCreate.vue
  11. 133
      pages/unPlanned/request/receiptRequest.vue
  12. 382
      pages/unPlanned/request/receiptRequestCreate.vue
  13. 2
      static/config.json

69
api/request2.js

@ -1270,17 +1270,78 @@ export function unPlannedReceiptJobSubmit(params) {
}
/**
* 计划外入库申请 提交
* 计划外入库申请 创建
* @param {*} params
*/
export function unPlannedReceiptRequestbSubmit(params) {
export function unPlannedReceiptRequestCreate(params) {
return request({
url: baseApi + "/magic-api/pda/job/purchasereturn/jobSubmit",
method: "put",
url: baseApi + "/wms/unplannedreceipt-request-main/create",
method: "post",
data: params,
});
}
/**
* 计划外入库申请 提交审批
* @param {*} params
*/
export function unPlannedReceiptRequestApprove(id) {
return request({
url: baseApi + "/wms/unplannedreceipt-request-main/submit?id="+id,
method: "put",
data: {},
});
}
/**
* 计划外入库申请 关闭
* @param {*} params
*/
export function unPlannedReceiptRequestClose(id) {
return request({
url: baseApi + "/wms/unplannedreceipt-request-main/close?id="+id,
method: "put",
data: {},
});
}
/**
* 计划外入库申请 审批通过
* @param {*} params
*/
export function unPlannedReceiptRequestApproveAgree(id) {
return request({
url: baseApi + "/wms/unplannedreceipt-request-main/agree?id="+id,
method: "put",
data: {},
});
}
/**
* 计划外入库申请 审批驳回
* @param {*} params
*/
export function unPlannedReceiptRequestApproveRefused(id) {
return request({
url: baseApi + "/wms/unplannedreceipt-request-main/refusedd?id="+id,
method: "put",
data: {},
});
}
/**
* 计划外入库申请 处理
* @param {*} params
*/
export function unPlannedReceiptRequestHandle(id) {
return request({
url: baseApi + "/wms/unplannedreceipt-request-main/handle?id="+id,
method: "put",
data: {},
});
}
/**
* 计划外入库记录 提交
* @param {*} params

9
common/basic.js

@ -775,6 +775,15 @@ export function getCurrDateTimes() {
return time;
}
export function getBatch() {
var date = new Date();
var year = date.getFullYear(); //年
var month = date.getMonth() + 1; //月
var day = date.getDate(); //日
var batch =year.toString()+month.toString()+day.toString()
return batch;
}
export function getCurrDate() {
var date = new Date();
return getDate(date);

20
common/label.js

@ -34,7 +34,7 @@ export function getLabelInfo(scanMsg, callBack) {
code:""
},
package: null,
sucess: false,
success: false,
message: '标签格式不正确',
}
callBack(labelResult);
@ -50,12 +50,12 @@ export function getQRCodeInfo(header, version, scanMsg, callBack) {
barType: 'QRCode',
},
package: {},
sucess: true,
success: true,
message: ''
}
getLabelByHeader(header, version).then(res => {
if (res.data==null) {
labelResult.sucess = false;
labelResult.success = false;
labelResult.message = '未查找到标签头为[' + header + ']的标签类型';
callBack(labelResult);
} else {
@ -69,7 +69,7 @@ export function getQRCodeInfo(header, version, scanMsg, callBack) {
getLabelItems(newItem, scanMsg, callBack);
}
}).catch(err => {
labelResult.sucess = false;
labelResult.success = false;
labelResult.message = err;
callBack(err);
})
@ -86,7 +86,7 @@ export function getLabelItems(labelItem, scanMsg, callBack) {
if (packingNumber != undefined) {
getPackageByNumber(packingNumber).then(pack => {
if (pack.data.list.length == 0) {
labelResult.sucess = false;
labelResult.success = false;
labelResult.message = '包装号[' + packingNumber + ']没有包装信息';
} else {
labelResult.package = pack.data.list[0];
@ -94,12 +94,12 @@ export function getLabelItems(labelItem, scanMsg, callBack) {
}
callBack(labelResult);
}).catch(err => {
labelResult.sucess = false;
labelResult.success = false;
labelResult.message = err;
callBack(labelResult);
})
} else {
labelResult.sucess = false;
labelResult.success = false;
labelResult.message = '在条码中未解析到箱码';
callBack(labelResult);
}
@ -115,7 +115,7 @@ export function analysisQRCodeLabel(labelItem, scanMsg) {
barType: 'QRCode',
},
package: {},
sucess: true,
success: true,
message: ''
}
@ -124,7 +124,7 @@ export function analysisQRCodeLabel(labelItem, scanMsg) {
labelResult.message = "未读取到分隔符";
} else {
if (scanMsg.indexOf(separators) < 0) {
labelResult.sucess = false;
labelResult.success = false;
labelResult.message = "标签格式不正确";
} else {
try {
@ -165,7 +165,7 @@ export function getBarCodeInfo(header, version, value, callBack) {
code:value
},
package: null,
sucess: true,
success: true,
message: '',
}
callBack(labelResult);

40
common/scan.js

@ -13,12 +13,12 @@
//B:supplierBatch 供应商批次
//返回结果
//sucess true:成功 false:失败
//success true:成功 false:失败
//scanType barcode:条码 qrcode:二维码
//isPack true:箱码 false:托码
export function analyseScanInfo(scanMsg) {
let scanResult = {
sucess: false,
success: false,
message: "",
data: {
isPack: null,
@ -41,7 +41,7 @@ export function analyseScanInfo(scanMsg) {
console.log('1.扫描到的内容:', scanMsg);
//条码
if (scanMsg.indexOf(';') < 0) {
scanResult.sucess = true;
scanResult.success = true;
scanResult.data.code = scanMsg;
scanResult.data.scanType = 'barcode'; //条码
} else {
@ -107,15 +107,15 @@ export function analyseScanInfo(scanMsg) {
}
})
scanResult.sucess = true;
scanResult.success = true;
} else { //扫描的是条码,直接返回接收到的内容
scanResult.sucess = true;
scanResult.success = true;
scanResult.data.code = scanMsg;
scanResult.data.scanType = 'barcode';
}
}
} catch (ex) {
scanResult.sucess = false;
scanResult.success = false;
scanResult.message = "解析遇到异常" + ex.message;
}
}
@ -138,12 +138,12 @@ export function analyseScanInfo(scanMsg) {
//E:produceDate日期
//返回结果
//sucess true:成功 false:失败
//success true:成功 false:失败
//scanType barcode:条码 qrcode:二维码
//isPack true:箱码 false:托码
export function analyseProductLabelInfo(scanMsg) {
let scanResult = {
sucess: false,
success: false,
message: "",
data: {
itemCode: null,
@ -163,7 +163,7 @@ export function analyseProductLabelInfo(scanMsg) {
try {
//条码
if (scanMsg.indexOf(';') < 0) {
scanResult.sucess = false;
scanResult.success = false;
scanResult.message = "标签格式不正确";
} else {
let arrayItems = scanMsg.split(';');
@ -211,13 +211,13 @@ export function analyseProductLabelInfo(scanMsg) {
scanResult.data.produceDate = value;
break;
default:
scanResult.sucess = false;
scanResult.success = false;
scanResult.message = "无法识别的前缀" + type;
break;
}
scanResult.sucess = true;
scanResult.success = true;
} else {
scanResult.sucess = false;
scanResult.success = false;
scanResult.message = "标签信息不能为空" + type;
}
}
@ -225,12 +225,12 @@ export function analyseProductLabelInfo(scanMsg) {
} else { //扫描的是条码,直接返回接收到的内容
scanResult.sucess = false;
scanResult.success = false;
scanResult.message = "标签分隔符错误";
}
}
} catch (ex) {
scanResult.sucess = false;
scanResult.success = false;
scanResult.message = "解析遇到异常" + ex.message;
}
}
@ -243,7 +243,7 @@ export function analyseProductLabelInfo(scanMsg) {
//1.序号1,2.生产号2546311FL,3.零件号254FL004,4.批序号202207110009
export function analyseTJMesQRCode(scanMsg) {
let scanResult = {
sucess: false,
success: false,
message: "",
items: []
};
@ -252,7 +252,7 @@ export function analyseTJMesQRCode(scanMsg) {
} else {
try {
if (scanMsg.indexOf(':') < 0) {
scanResult.sucess = false;
scanResult.success = false;
scanResult.message = "标签格式不正确";
} else {
let arrayItems = scanMsg.split(':');
@ -290,18 +290,18 @@ export function analyseTJMesQRCode(scanMsg) {
}
}
} else {
scanResult.sucess = false;
scanResult.success = false;
scanResult.message = "标签信息不能为空";
}
})
scanResult.sucess = true;
scanResult.success = true;
} else { //扫描的是条码,直接返回接收到的内容
scanResult.sucess = false;
scanResult.success = false;
scanResult.message = "标签分隔符错误";
}
}
} catch (ex) {
scanResult.sucess = false;
scanResult.success = false;
scanResult.message = "解析遇到异常" + ex.message;
}
}

2
mycomponents/scan/winComScan.vue

@ -152,7 +152,7 @@
}
getLabelInfo(content, callback => {
let scanResult = callback;
if (scanResult.sucess) {
if (scanResult.success) {
that.clear();
// that.getfocus();//
that.$emit("getResult", scanResult);

2
mycomponents/scan/winScanPack.vue

@ -74,7 +74,7 @@
},
getScanResult(result) {
if (result.sucess) {
if (result.success) {
this.$emit("getResult", result);
} else {
this.showMessage(result.message)

6
pages/productionReturn/request/returnRequestCreate.vue

@ -5,8 +5,8 @@
</view>
<view v-else class="page-wraper">
<view class="page-main">
<comReturnRequestCreator ref="issueRequest" :dataContent="detailSource" :isSwipe ="false">
</comReturnRequestCreator>
<comReturnRequestInfo ref="issueRequest" :dataContent="detailSource" :isSwipe ="false">
</comReturnRequestInfo>
<button class="btn_add" @click="goScan(false)">+去添加</button>
</view>
@ -44,7 +44,7 @@
import comScanReturnPack from '@/pages/productionReturn/coms/comScanReturnPack.vue'
import comMessage from '@/mycomponents/common/comMessage.vue'
import comReturnRequestCreator from '@/pages/productionReturn/coms/comReturnRequestCreator.vue'
import comIssueRequestInfo from '@/pages/issue/coms/comIssueRequestInfo.vue'
export default {
name: '',
components: {

254
pages/unPlanned/coms/comReceiptRequestPopup.vue

@ -0,0 +1,254 @@
<template>
<view class="">
<uni-popup ref="popup" :maskClick="false">
<view class="uni-flex uni-column pop_customer">
<view class="" style="padding:10rpx">
<view class="uni-flex u-col-center uni-row space-between" style="padding: 10rpx 10rpx 20rpx 10rpx">
<view class="" style="font-size: 35rpx;">
{{title}}
</view>
<image style="width: 35rpx;height: 35rpx;" src="/static/icons/icons_close.svg"
@click="closeRequestPopup()"></image>
</view>
<u-line />
<view class="uni-flex uni-column" style="background-color: white; ">
<view class="uni-flex uni-column ">
<view class="title padding" style="display: flex;">
<text style=" flex-shrink: 0;">库位</text>
<view class="" style="width: 100% ;">
{{toLocationCode}}
</view>
<view class="" v-if="editPosition">
<image src="/static/search.svg" mode=""
style=" width: 40rpx;height: 40rpx;margin-left: 20rpx;"
@click="locationCodeClick">
</image>
</view>
</view>
<u-line />
<view class="title padding" style="display: flex;">
<text style=" flex-shrink: 0;">物料</text>
<view class="" style="width: 100% ;">
{{itemCode}}
</view>
<view class="">
<image src="/static/search.svg" mode=""
style=" width: 40rpx;height: 40rpx;margin-left: 20rpx;" @click="itemCodeClick">
</image>
</view>
</view>
<u-line />
<view class="uni-flex uni-row padding title u-col-center">
<text>数量 : </text>
<view class="uni-flex uni-row uni-center"
style="align-items: center;margin-left: 20rpx;">
<uni-number-box :value="counQty" @change="change" style='margin-left: 10rpx;'
:focus="numberFocus" @blur='numberFocus = false'>
</uni-number-box>
<uom :uom="uom"></uom>
</view>
</view>
<u-line />
</view>
</view>
</view>
<view class="uni-flex uni-row hide_border">
<button class="btn_edit_big_cancle" hover-class="btn_edit_big_after" @click="cancel()">取消</button>
<button class="btn_edit_big_confirm" hover-class="btn_edit_big_after" @click="confirm()">确认</button>
</view>
</view>
</uni-popup>
<win-scan-item ref="itemPopup" title='物料代码' @getScanCode='getItemCode'>
</win-scan-item>
<winScanLocation ref="locationPopup" title="库位代码" @getLocation='getLocationCode'></winScanLocation>
<comMessage ref="comMessage"></comMessage>
</view>
</template>
<script>
import {
getBasicItemByCode,
} from '@/api/request2.js';
import {
getLocationTypeName,
getListLocationTypeDesc,
checkDirectoryItemExist
} from '@/common/directory.js';
import uom from '@/mycomponents/qty/uom.vue'
import balanceStatus from '@/mycomponents/status/balanceStatus.vue'
import comMessage from '@/mycomponents/common/comMessage.vue'
import winScanItem from '@/mycomponents/scan/winScanItem.vue'
import winScanLocation from '@/mycomponents/scan/winScanLocation.vue'
export default {
components: {
uom,
balanceStatus,
comMessage,
winScanItem,
winScanLocation
},
data() {
return {
itemCode: '请扫描物料信息',
itemName: "",
qty: 0,
itemCodeFocus: false,
requestInfo: null,
isCheckItemCode: false,
counQty: 0,
numberFocus: false,
uom: "",
show: false,
isModifiedPosition: true,
positionList: [],
toLocationCode: '请扫描库位信息',
isCheckLocationCode: false,
editPosition: true,
}
},
props: {
title: {
type: String,
default: '申请信息'
},
},
methods: {
openRequestPopup(editPosition) {
this.editPosition = editPosition;
if (!editPosition) {
this.itemCode = "";
this.uom = ""
this.qty = 0
this.itemCodeGetFocus();
}
this.$refs.popup.open('bottom')
},
closeRequestPopup() {
this.$refs.popup.close()
},
locationConfirm() {
//
this.checkLocatioCode();
},
itemCodeClick() {
this.$refs.itemPopup.openScanPopup();
},
locationCodeClick() {
this.$refs.locationPopup.openScanPopup();
},
itemCodeGetFocus() {
this.itemCodeFocus = true;
},
itemCodeLoseFocus() {
this.itemCodeFocus = false;
},
selectedItem(item) {
this.itemCode = item.itemCode;
this.checkItemCode();
},
confirm() {
if (this.toLocationCode == "") {
this.showErrorMessage("请输入库位", "locationCode")
return
}
if (this.itemCode == "" || !this.isCheckItemCode) {
this.showErrorMessage("请输入物料", "itemCode")
return
}
if (this.qty == 0) {
this.showErrorMessage("数量必须大于0")
return
}
this.callback('add');
},
checkItemCode(itemCode) {
//
getBasicItemByCode(itemCode).then(res => {
uni.hideLoading();
this.$refs.itemPopup.closeScanPopup();
if (res.data != null && res.data.list.length > 0) {
this.itemCode = res.data.list[0].code;
this.itemName = res.data.list[0].name
this.isCheckItemCode = true;
this.numberFocus = true
this.uom = res.data.list[0].uom
} else {
this.showErrorMessage('未查找到物料【' + itemCode + '】', "itemCode");
}
}).catch(error => {
uni.hideLoading();
this.showErrorMessage(error, "itemCode");
})
},
callback(action) {
let item = {
toLocationCode: this.toLocationCode,
itemCode: this.itemCode,
itemName: this.itemName,
uom: this.uom,
qty: this.qty
};
this.closeRequestPopup();
this.$emit("confirm", action, item);
},
showErrorMessage(message, type) {
setTimeout(r => {
this.$refs.comMessage.showErrorMessage(message, res => {
if (type == "itemCode") {
this.itemCodeGetFocus();
} else {
this.numberFocus = true;
}
})
// if (type == "itemCode") {
// this.itemCode = ""
// this.isCheckItemCode = false;
// }
})
},
change(value) {
this.qty = value;
},
cancel(e) {
this.closeRequestPopup();
},
getItemCode(code) {
if (code == "") {
this.showErrorMessage('物料号不能为空')
return;
}
this.itemCode = "";
this.checkItemCode(code)
},
getLocationCode(location, code) {
this.toLocationCode = code;
},
}
}
</script>
<style lang="scss">
.title {
font-size: 30rpx;
}
</style>

3
pages/unPlanned/job/receiptJobDetail.vue

@ -313,7 +313,7 @@
console.log("提交参数", JSON.stringify(params));
// unPlannedReceiptJobSubmit(params).then(res => {
// if (res.data) {
// this.showCommitSuccessMessage("<br>" + res.data)
// this.showCommitSuccessMessage("<br><br>" + res.data)
// } else {
// this.showErrorMessage("[" + res.msg + "]")
// }
@ -340,6 +340,7 @@
detail.packingNumber, detail.batch);
detail.toPackingNumber = info.packingNumber;
detail.toBatch = info.batch;
detail.toContainerNumber = '';
subList.push(detail)
}
})

10
pages/unPlanned/request/issueRequestCreate.vue

@ -226,12 +226,14 @@
this.showErrorMessage("请选择出库原因")
return;
}
uni.showLoading({
title: "提交中....",
mask: true
});
var params = this.setRequestParams();
console.log("提交参数", JSON.stringify(params));
uni.showLoading({
title:"提交中"
})
unPlannedIssueRequestCreate(params).then(res => {
uni.hideLoading()
if (res.data) {
@ -252,7 +254,7 @@
item.subList.forEach(detail => {
if (detail.scaned) {
detail.fromLocationCode = detail.locationCode;
detail.reasonText = this.reasonCode;
detail.reason = this.reasonCode;
detail.containerNumber ="";
subList.push(detail)
}

133
pages/unPlanned/request/receiptRequest.vue

@ -35,11 +35,17 @@
} from '@/common/record.js';
import {
goHome,
updateTitle
updateTitle,
clearTirmAndWrap
} from '@/common/basic.js';
import {
getUnPlannedReceiptRequestList,
unPlannedReceiptRequestApprove,
unPlannedReceiptRequestClose,
unPlannedReceiptRequestApproveAgree,
unPlannedReceiptRequestApproveRefused,
unPlannedReceiptRequestHandle
} from '@/api/request2.js';
import {
getDetailOption,
@ -82,7 +88,7 @@
this.detailOptions = getDetailOption();
this.detailAndApproveOptions = getDetailAndApproveOption()
this.detailAndApprovePassAndApproveNoOption = getDetailAndApprovePassAndApproveNoOption(),
this.detailAndHandleOption = getDetailAndHandleOption()
this.detailAndHandleOption = getDetailAndHandleOption()
this.detailAndCloseOption = getDetailAndCloseOption()
},
@ -197,27 +203,45 @@
openScanDetailPopup() {
uni.navigateTo({
url: "./receiptRequest?fromType=" + this.fromType
url: "./receiptRequestCreate"
})
},
swipeClick(e, dataContent) {
if (e.content.text == "详情") {
console.log("详情", dataContent.id)
var text = clearTirmAndWrap(e.content.text)
if (text == "详情") {
this.openRequestInfoPopup(dataContent);
} else if (e.content.text == "处理") {
console.log("处理")
} else if (e.content.text == "审批") {
console.log("审批")
} else if (e.content.text == "审批通过") {
console.log("审批通过")
} else if (e.content.text == "审批驳回") {
console.log("审批驳回")
} else if (e.content.text == "关闭") {
console.log("关闭")
} else if (text == "处理") {
this.showQuestionMessage("确定要处理当前申请吗?",res=>{
this.unPlannedReceiptRequestHandle(dataContent.id)
})
} else if (text == "提交审批") {
this.showQuestionMessage("确定要审批当前申请吗?",res=>{
this.unPlannedReceiptRequestApprove(dataContent.id)
})
} else if (text == "审批通过") {
this.showQuestionMessage("确定要审批通过当前申请吗?",res=>{
this.unPlannedReceiptRequestApproveAgree(dataContent.id)
})
} else if (text == "审批驳回") {
this.showQuestionMessage("确定要审批驳回当前申请吗?",res=>{
this.unPlannedReceiptRequestApproveRefused(dataContent.id)
})
} else if (text == "关闭") {
this.showQuestionMessage("确定要关闭当前申请吗?",res=>{
this.unPlannedReceiptRequestClose(dataContent.id)
})
}
},
showQuestionMessage(hint,callBack){
this.$refs.comMessage.showQuestionMessage(hint,
res => {
if (res) {
callBack()
}
});
},
switchChangeWait(state, jobStatus) {
this.checkedWaitTask = state;
this.status = jobStatus;
@ -266,6 +290,83 @@
}
});
},
unPlannedReceiptRequestApprove(id) {
unPlannedReceiptRequestApprove(id).then(res => {
if (res.data) {
this.getList("refresh")
uni.showToast({
title: "申请提交审批成功"
})
} else {
this.showMessage("申请提交审批失败")
}
}).catch(error => {
this.showMessage(error)
})
},
unPlannedReceiptRequestClose(id) {
unPlannedReceiptRequestClose(id).then(res => {
if (res.data) {
this.getList("refresh")
uni.showToast({
title: "申请关闭成功"
})
} else {
this.showMessage("申请关闭失败")
}
}).catch(error => {
this.showMessage(error)
})
},
unPlannedReceiptRequestApproveAgree(id) {
unPlannedReceiptRequestApproveAgree(id).then(res => {
if (res.data) {
this.getList("refresh")
uni.showToast({
title: "申请审批通过成功"
})
} else {
this.showMessage("申请审批通过失败")
}
}).catch(error => {
this.showMessage(error)
})
},
unPlannedReceiptRequestApproveRefused(id) {
unPlannedReceiptRequestApproveRefused(id).then(res => {
if (res.data) {
this.getList("refresh")
uni.showToast({
title: "申请审批驳回成功"
})
} else {
this.showMessage("申请审批驳回失败")
}
}).catch(error => {
this.showMessage(error)
})
},
unPlannedReceiptRequestHandle(id) {
unPlannedReceiptRequestHandle(id).then(res => {
if (res.data) {
this.getList("refresh")
uni.showToast({
title: "申请处理成功"
})
} else {
this.showMessage("申请处理失败")
}
}).catch(error => {
this.showMessage(error)
})
},
}
}

382
pages/unPlanned/request/receiptRequestCreate.vue

@ -1,297 +1,223 @@
<template>
<view class="page-wraper">
<view class="">
<com-blank-view @goScan='openScanPopup' v-if="detailSource.length==0"></com-blank-view>
<view class="" v-if='detailSource.subList.length==0'>
<com-blank-view @goScan='goScan(true)'></com-blank-view>
</view>
<view class="page-wraper" v-if="detailSource.length>0">
<u-line />
<view v-else class="page-wraper">
<view class="page-main">
<uni-data-picker v-if="detailSource.length>0" style="padding: 20rpx; background-color:#fff;"
class='uni-data-picker' placeholder="请选择入库原因" popup-title="入库原因" :localdata="reasonList"
v-model="reason">
</uni-data-picker>
<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-receipt-record :dataContent="item" @removeItem="removeItem(index,item)"
@updateData="updateData" :isShowLocation="false" @removePack="removePack">
</com-receipt-record>
<view class="">
<view class="" style="margin-left: 20rpx; margin-top: 20rpx;margin-bottom:20rpx;font-size: 30rpx;">
目标库位{{detailSource.toLocationCode}}
</view>
<view class="flex u-col-center" style="width: 100%;background-color:#fff;margin-bottom: 20rpx;margin-top: 20rpx;">
<view class="" style="margin-left: 20rpx; font-size: 30rpx;flex-shrink: 0;">入库原因</view>
<view style="width: 100%">
<uni-data-picker style="background-color:#fff;margin-right: 20rpx;" class='uni-data-picker'
placeholder="请选择入库原因" popup-title="入库原因" :localdata="reasonList" @change="reasonChange">
</uni-data-picker>
</view>
<u-line />
</view>
</scroll-view>
</view>
<u-line />
<view v-for="(item, index) in detailSource.subList" :key="index">
<item-qty :dataContent="item" :isShowStdPack="false">
</item-qty>
<u-line />
</view>
<button class="btn_add" @click="goScan(false)">+去添加</button>
</view>
<requiredLocation v-if="showToLoaction" title="目标库位" :locationCode="toLocationCode" @getLocation='getToLocationCode'
:locationTypeList="tolocationTypeList"></requiredLocation>
<view class="page-footer">
<view class="uni-flex u-col-center space-between padding_10"
style="background-color:ghostwhite; width: 100%; ">
<div class="btn_bottom">
<view class="" style="display: flex;flex-direction: row;">
<view class="">
</view>
<view class=" uni-flex uni-row">
<button class="btn_single_commit" hover-class="btn_commit_after" @click="commit">提交</button>
<button class="btn_commit" hover-class="btn_commit_after" @click="submit()">提交</button>
</view>
</view>
</view>
<win-scan-button @goScan='openScanPopup'></win-scan-button>
</div>
<comMessage ref="comMessage"></comMessage>
</view>
<win-scan-pack ref="scanPopup" @getResult='getScanResult' :title="'箱码'"></win-scan-pack>
<com-message ref="comMessage"></com-message>
</view>
<comReceiptRequestPopup ref="comIssueRequestPopup" @confirm='requestConfirm'></comReceiptRequestPopup>
</template>
<script>
import comEmptyView from '@/mycomponents/common/comEmptyView.vue'
import winScanButton from '@/mycomponents/scan/winScanButton.vue'
import requiredLocation from '@/mycomponents/location/requiredLocation.vue'
import comReceiptRecord from '@/pages/unPlanned/coms/comReceiptRecord.vue'
import comBlankView from '@/mycomponents/common/comBlankView.vue'
import winScanLocation from "@/mycomponents/scan/winScanLocation.vue"
import winScanPack from "@/mycomponents/scan/winScanPack.vue"
import comMessage from '@/mycomponents/common/comMessage.vue'
import {
unPlannedReceiptRequestbSubmit,
unPlannedReceiptRecordbSubmit
unPlannedReceiptRequestCreate
} from '@/api/request2.js';
import {
getDirectoryItemArray,
getUnPlannedReceiptReasonList
} from '@/common/directory.js';
import {
getBusinessType,
} from '@/common/record.js';
import {
goHome,
updateTitle,
getPackingNumberAndBatch,
navigateBack
getRemoveOption,
getISODateTime,
navigateBack,
getBatch,
getCurrDateTimes,
getCurrDateOneMonthsTimes
} from '@/common/basic.js';
import {
getManagementPrecisions
} from '@/common/balance.js';
getUnPlannedReceiptReasonList,
} from '@/common/directory.js';
import comBlankView from '@/mycomponents/common/comBlankView.vue'
import comReceiptRequestPopup from '@/pages/unPlanned/coms/comReceiptRequestPopup.vue'
import jobDetailPopup from '@/mycomponents/job/jobDetailPopup.vue'
import comMessage from '@/mycomponents/common/comMessage.vue'
import comIssueRequestCreator from '@/pages/issue/coms/comIssueRequestCreator.vue'
import itemQty from '@/mycomponents/item/itemQty.vue'
export default {
name: '',
components: {
comEmptyView,
winScanButton,
requiredLocation,
comReceiptRecord,
comBlankView,
winScanLocation,
winScanPack,
comMessage
},
props: {
comReceiptRequestPopup,
jobDetailPopup,
comMessage,
itemQty
},
data() {
return {
toLocationCode: "",
toLocationInfo: {},
toInventoryStatus: [],
businessType: {}, //
detailSource: [], //
businessTypeCode: "UnplannedReceipt",
reason: "",
reasonList: [],
showToLoaction:true,
dataContent:{}
jobContent: {}, //
subList: [], //subList
detailSource: {
subList: []
}, //
reasonList: [], //
reasonText: "",
reasonCode: "",
}
},
mounted() {
this.reasonList = getUnPlannedReceiptReasonList();
getBusinessType(this.businessTypeCode, res => {
if (res.success) {
this.businessType = res.businessType;
this.fromlocationTypeList = res.fromlocationTypeList;
this.tolocationTypeList = res.tolocationTypeList;
this.openScanPopup();
} else {
this.$refs.comMessage.showBreakMessage(res.message);
}
});
this.goScan(true)
},
onLoad(option) {
this.reasonList = getUnPlannedReceiptReasonList()
},
methods: {
openScanPopup() {
this.$refs.scanPopup.openScanPopup();
},
getToLocationCode(location, code) {
this.toLocationCodeInfo = location;
this.toLocationCode = code;
goScan(editPosition) {
this.$refs.comIssueRequestPopup.openRequestPopup(editPosition);
},
getScanResult(result) {
let label = result.label;
let pack = result.package;
var item = this.detailSource.find(res => {
if (res.itemCode == label.itemCode) {
return res
//
requestConfirm(action, item) {
if (this.detailSource.subList.length == 0) {
this.detailSource = {
totalQty: 0,
toLocationCode:item.toLocationCode,
subList: []
}
})
if (item == undefined) {
var itemp = this.createItemInfo(label, pack);
let newDetail = this.createDetailInfo(label, pack);
itemp.subList.push(newDetail);
this.detailSource.push(itemp)
var subItem = {
toLocationCode:item.toLocationCode,
itemCode: item.itemCode,
itemName: item.itemName,
qty: item.qty,
uom: item.uom,
}
this.detailSource.subList.push(subItem)
} else {
var detail = item.subList.find(r => {
if (r.packingNumber == result.number &&
r.batch == result.batch) {
return r;
var result = this.detailSource.subList.filter(res => {
if (res.itemCode == item.itemCode) {
return res
}
})
if (detail == undefined) {
let newDetail = this.createDetailInfo(label, pack);
item.subList.push(newDetail);
} else {
if (detail.scaned) {
this.showErrorMessage("箱码[" + result.Number + "]批次[" + result.batch + "]已经扫描")
//
if (result.length == 0) {
var subItem = {
itemCode: item.itemCode,
itemName: item.itemName,
qty: item.qty,
uom: item.uom
}
}
}
this.calcHandleQty();
this.detailSource.subList.push(subItem)
},
createItemInfo(label, pack) {
let item = {
itemCode: pack.itemCode,
itemName: pack.itemName,
stdPackQty: pack.stdPackQty,
stdPackUnit: pack.stdPackUnit,
qty: label.qty,
handleQty: 0,
uom: label.uom,
subList: []
}
return item;
},
createDetailInfo(label, pack) {
let detail = {};
detail.scaned = true;
// Object.assign(detail, label)
detail.qty = Number(label.qty)
detail.inventoryStatus = "OK"
detail.stdPackQty = pack.stdPackQty;
detail.stdPackUnit = pack.stdPackUnit;
label.inventoryStatus = "OK";
detail.package = pack;
detail.label = label;
return detail;
},
} else {
//
result[0].qty += item.qty
calcHandleQty() {
for (let item of this.detailSource) {
item.qty = 0;
for (let detail of item.subList) {
if (detail != undefined) {
item.qty += Number(detail.qty)
}
}
}
this.$forceUpdate();
this.caclcQty();
},
showErrorMessage(message) {
this.$refs.comMessage.showErrorMessage(message, res => {
if (res) {
}
});
},
updateData() {
this.calcHandleQty();
},
removePack() {
for (var i = 0; i < this.detailSource.length; i++) {
var item = this.detailSource[i];
if (item.subList.length == 0) {
this.detailSource.splice(i, 1)
}
}
this.updateData();
caclcQty() {
var totalQty = 0;
this.detailSource.subList.forEach(res => {
totalQty += res.qty
})
this.detailSource.totalQty = totalQty;
},
removeItem(index, item) {
this.detailSource.splice(index, 1)
},
commit() {
if (this.showToLoaction &&this.toLocationCode == "") {
this.showErrorMessage("请先选择目标库位")
return;
}
if (this.reason == '') {
submit() {
if (this.reasonText == '') {
this.showErrorMessage("请选择入库原因")
return;
}
var params = this.setRequestParams()
console.log("提交" + JSON.stringify(params))
// unPlannedReceiptRequestbSubmit(params).then(res => {
// uni.hideLoading()
// if (res.data) {
// this.showCommitSuccessMessage("<br>" + res.data, )
// } else {
// this.showErrorMessage("[" + res.msg + "]")
// }
// }).catch(error => {
// uni.hideLoading()
// this.showErrorMessage(error)
// })
uni.showLoading({
title: "提交中....",
mask: true
});
var params = this.setRequestParams()
console.log("提交参数", JSON.stringify(params));
unPlannedReceiptRequestCreate(params).then(res => {
uni.hideLoading()
if (res.data) {
this.showCommitSuccessMessage("提交成功<br>生成计划外入库申请<br>" + res.data)
} else {
this.showErrorMessage("提交失败[" + res.msg + "]")
}
}).catch(error => {
uni.hideLoading()
this.showErrorMessage(error)
})
},
setRequestParams(){
setRequestParams() {
var subList = []
var supplierCode=""
this.detailSource.forEach(item => {
item.subList.forEach(detail => {
if (detail.scaned) {
if(supplierCode==""){
supplierCode = detail.package.supplierCode
}
this.detailSource.subList.forEach(detail => {
detail.toLocationCode = this.detailSource.toLocationCode;
detail.reason = this.reasonCode;
detail.containerNumber = "";
detail.batch = getBatch();
detail.inventoryStatus = "OK";
console.log("",getBatch())
subList.push(detail)
}
})
})
this.detailSource.status = 1;
this.detailSource.requestTime = getCurrDateTimes();
this.detailSource.dueTime = getCurrDateOneMonthsTimes();
this.dataContent.subList = subList
this.dataContent.supplierCode = supplierCode
this.dataContent.businessType = "PurchasePutaway"
this.dataContent.departmentCode= "研发部门";
this.dataContent.status= 1 ;
this.dataContent.autoCommit = "FALSE";
this.dataContent.autoAgree = "FALSE";
this.dataContent.autoExecute = "FALSE";
this.dataContent.directCreateRecord = "FALSE";
return this.dataContent;
return this.detailSource;
},
showCommitSuccessMessage(hint) {
this.$refs.comMessage.showSuccessMessage(hint, res => {
navigateBack(1)
})
},
showErrorMessage(message) {
this.$refs.comMessage.showErrorMessage(message, res => {
if (res) {}
});
},
reasonChange(e) {
if (e.detail.value.length == 0) {
this.reasonCode = ""
this.reasonText = ""
} else {
this.reasonCode = e.detail.value[0].value
this.reasonText = e.detail.value[0].text
}
}
}
}
</script>
<style>
.page-main {
flex: 1;
position: relative;
}
.page-main-scroll {
position: relative;
margin-top: 2px;
}
</style>

2
static/config.json

@ -18,7 +18,7 @@
"request_url": {
"name": "request_url",
"value": "http://dev.ccwin-in.com:25100/api/admin-api",
"value": "http://192.168.0.178:12080/admin-api",
"dev2": "http://192.168.0.157:12080/admin-api",
"chefang": "http://192.168.0.178:12080/admin-api",
"chenxinming": "http://192.168.0.230:12080/admin-api",

Loading…
Cancel
Save