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 * @param {*} params
*/ */
export function unPlannedReceiptRequestbSubmit(params) { export function unPlannedReceiptRequestCreate(params) {
return request({ return request({
url: baseApi + "/magic-api/pda/job/purchasereturn/jobSubmit", url: baseApi + "/wms/unplannedreceipt-request-main/create",
method: "put", method: "post",
data: params, 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 * @param {*} params

9
common/basic.js

@ -775,6 +775,15 @@ export function getCurrDateTimes() {
return time; 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() { export function getCurrDate() {
var date = new Date(); var date = new Date();
return getDate(date); return getDate(date);

20
common/label.js

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

40
common/scan.js

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

2
mycomponents/scan/winComScan.vue

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

2
mycomponents/scan/winScanPack.vue

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

6
pages/productionReturn/request/returnRequestCreate.vue

@ -5,8 +5,8 @@
</view> </view>
<view v-else class="page-wraper"> <view v-else class="page-wraper">
<view class="page-main"> <view class="page-main">
<comReturnRequestCreator ref="issueRequest" :dataContent="detailSource" :isSwipe ="false"> <comReturnRequestInfo ref="issueRequest" :dataContent="detailSource" :isSwipe ="false">
</comReturnRequestCreator> </comReturnRequestInfo>
<button class="btn_add" @click="goScan(false)">+去添加</button> <button class="btn_add" @click="goScan(false)">+去添加</button>
</view> </view>
@ -44,7 +44,7 @@
import comScanReturnPack from '@/pages/productionReturn/coms/comScanReturnPack.vue' import comScanReturnPack from '@/pages/productionReturn/coms/comScanReturnPack.vue'
import comMessage from '@/mycomponents/common/comMessage.vue' import comMessage from '@/mycomponents/common/comMessage.vue'
import comReturnRequestCreator from '@/pages/productionReturn/coms/comReturnRequestCreator.vue' import comReturnRequestCreator from '@/pages/productionReturn/coms/comReturnRequestCreator.vue'
import comIssueRequestInfo from '@/pages/issue/coms/comIssueRequestInfo.vue'
export default { export default {
name: '', name: '',
components: { 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)); console.log("提交参数", JSON.stringify(params));
// unPlannedReceiptJobSubmit(params).then(res => { // unPlannedReceiptJobSubmit(params).then(res => {
// if (res.data) { // if (res.data) {
// this.showCommitSuccessMessage("<br>" + res.data) // this.showCommitSuccessMessage("<br><br>" + res.data)
// } else { // } else {
// this.showErrorMessage("[" + res.msg + "]") // this.showErrorMessage("[" + res.msg + "]")
// } // }
@ -340,6 +340,7 @@
detail.packingNumber, detail.batch); detail.packingNumber, detail.batch);
detail.toPackingNumber = info.packingNumber; detail.toPackingNumber = info.packingNumber;
detail.toBatch = info.batch; detail.toBatch = info.batch;
detail.toContainerNumber = '';
subList.push(detail) subList.push(detail)
} }
}) })

10
pages/unPlanned/request/issueRequestCreate.vue

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

133
pages/unPlanned/request/receiptRequest.vue

@ -35,11 +35,17 @@
} from '@/common/record.js'; } from '@/common/record.js';
import { import {
goHome, goHome,
updateTitle updateTitle,
clearTirmAndWrap
} from '@/common/basic.js'; } from '@/common/basic.js';
import { import {
getUnPlannedReceiptRequestList, getUnPlannedReceiptRequestList,
unPlannedReceiptRequestApprove,
unPlannedReceiptRequestClose,
unPlannedReceiptRequestApproveAgree,
unPlannedReceiptRequestApproveRefused,
unPlannedReceiptRequestHandle
} from '@/api/request2.js'; } from '@/api/request2.js';
import { import {
getDetailOption, getDetailOption,
@ -82,7 +88,7 @@
this.detailOptions = getDetailOption(); this.detailOptions = getDetailOption();
this.detailAndApproveOptions = getDetailAndApproveOption() this.detailAndApproveOptions = getDetailAndApproveOption()
this.detailAndApprovePassAndApproveNoOption = getDetailAndApprovePassAndApproveNoOption(), this.detailAndApprovePassAndApproveNoOption = getDetailAndApprovePassAndApproveNoOption(),
this.detailAndHandleOption = getDetailAndHandleOption() this.detailAndHandleOption = getDetailAndHandleOption()
this.detailAndCloseOption = getDetailAndCloseOption() this.detailAndCloseOption = getDetailAndCloseOption()
}, },
@ -197,27 +203,45 @@
openScanDetailPopup() { openScanDetailPopup() {
uni.navigateTo({ uni.navigateTo({
url: "./receiptRequest?fromType=" + this.fromType url: "./receiptRequestCreate"
}) })
}, },
swipeClick(e, dataContent) { swipeClick(e, dataContent) {
if (e.content.text == "详情") { var text = clearTirmAndWrap(e.content.text)
console.log("详情", dataContent.id) if (text == "详情") {
this.openRequestInfoPopup(dataContent); this.openRequestInfoPopup(dataContent);
} else if (e.content.text == "处理") { } else if (text == "处理") {
console.log("处理") this.showQuestionMessage("确定要处理当前申请吗?",res=>{
} else if (e.content.text == "审批") { this.unPlannedReceiptRequestHandle(dataContent.id)
console.log("审批") })
} else if (e.content.text == "审批通过") { } else if (text == "提交审批") {
console.log("审批通过") this.showQuestionMessage("确定要审批当前申请吗?",res=>{
} else if (e.content.text == "审批驳回") { this.unPlannedReceiptRequestApprove(dataContent.id)
console.log("审批驳回") })
} else if (e.content.text == "关闭") { } else if (text == "审批通过") {
console.log("关闭") 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) { switchChangeWait(state, jobStatus) {
this.checkedWaitTask = state; this.checkedWaitTask = state;
this.status = jobStatus; 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> <template>
<view class="page-wraper"> <view class="page-wraper">
<view class=""> <view class="" v-if='detailSource.subList.length==0'>
<com-blank-view @goScan='openScanPopup' v-if="detailSource.length==0"></com-blank-view> <com-blank-view @goScan='goScan(true)'></com-blank-view>
</view> </view>
<view class="page-wraper" v-if="detailSource.length>0"> <view v-else class="page-wraper">
<u-line />
<view class="page-main"> <view class="page-main">
<uni-data-picker v-if="detailSource.length>0" style="padding: 20rpx; background-color:#fff;" <view class="">
class='uni-data-picker' placeholder="请选择入库原因" popup-title="入库原因" :localdata="reasonList" <view class="" style="margin-left: 20rpx; margin-top: 20rpx;margin-bottom:20rpx;font-size: 30rpx;">
v-model="reason"> 目标库位{{detailSource.toLocationCode}}
</uni-data-picker> </view>
<view class="flex u-col-center" style="width: 100%;background-color:#fff;margin-bottom: 20rpx;margin-top: 20rpx;">
<scroll-view scroll-y="true" class="page-main-scroll"> <view class="" style="margin-left: 20rpx; font-size: 30rpx;flex-shrink: 0;">入库原因</view>
<view class="detail-list" v-for="(item, index) in detailSource" :key="item.id"> <view style="width: 100%">
<view class=""> <uni-data-picker style="background-color:#fff;margin-right: 20rpx;" class='uni-data-picker'
<com-receipt-record :dataContent="item" @removeItem="removeItem(index,item)" placeholder="请选择入库原因" popup-title="入库原因" :localdata="reasonList" @change="reasonChange">
@updateData="updateData" :isShowLocation="false" @removePack="removePack"> </uni-data-picker>
</com-receipt-record>
</view> </view>
<u-line />
</view> </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> </view>
<requiredLocation v-if="showToLoaction" title="目标库位" :locationCode="toLocationCode" @getLocation='getToLocationCode' <div class="btn_bottom">
:locationTypeList="tolocationTypeList"></requiredLocation> <view class="" style="display: flex;flex-direction: row;">
<view class="page-footer">
<view class="uni-flex u-col-center space-between padding_10"
style="background-color:ghostwhite; width: 100%; ">
<view class=""> <view class="">
</view> <button class="btn_commit" hover-class="btn_commit_after" @click="submit()">提交</button>
<view class=" uni-flex uni-row">
<button class="btn_single_commit" hover-class="btn_commit_after" @click="commit">提交</button>
</view> </view>
</view> </view>
</view> </div>
<win-scan-button @goScan='openScanPopup'></win-scan-button>
<comMessage ref="comMessage"></comMessage>
</view> </view>
<win-scan-pack ref="scanPopup" @getResult='getScanResult' :title="'箱码'"></win-scan-pack>
<com-message ref="comMessage"></com-message>
</view> </view>
<comReceiptRequestPopup ref="comIssueRequestPopup" @confirm='requestConfirm'></comReceiptRequestPopup>
</template> </template>
<script> <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 { import {
unPlannedReceiptRequestbSubmit, unPlannedReceiptRequestCreate
unPlannedReceiptRecordbSubmit
} from '@/api/request2.js'; } from '@/api/request2.js';
import {
getDirectoryItemArray,
getUnPlannedReceiptReasonList
} from '@/common/directory.js';
import {
getBusinessType,
} from '@/common/record.js';
import { import {
goHome, goHome,
updateTitle, updateTitle,
getPackingNumberAndBatch, getRemoveOption,
navigateBack getISODateTime,
navigateBack,
getBatch,
getCurrDateTimes,
getCurrDateOneMonthsTimes
} from '@/common/basic.js'; } from '@/common/basic.js';
import { import {
getManagementPrecisions getUnPlannedReceiptReasonList,
} from '@/common/balance.js'; } 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 { export default {
name: '',
components: { components: {
comEmptyView,
winScanButton,
requiredLocation,
comReceiptRecord,
comBlankView, comBlankView,
winScanLocation, comReceiptRequestPopup,
winScanPack, jobDetailPopup,
comMessage comMessage,
}, itemQty
props: {
}, },
data() { data() {
return { return {
toLocationCode: "", jobContent: {}, //
toLocationInfo: {}, subList: [], //subList
toInventoryStatus: [], detailSource: {
businessType: {}, // subList: []
detailSource: [], // }, //
businessTypeCode: "UnplannedReceipt", reasonList: [], //
reason: "", reasonText: "",
reasonList: [], reasonCode: "",
showToLoaction:true,
dataContent:{}
} }
}, },
mounted() { mounted() {
this.reasonList = getUnPlannedReceiptReasonList(); this.goScan(true)
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);
}
});
}, },
onLoad(option) { onLoad(option) {
this.reasonList = getUnPlannedReceiptReasonList()
}, },
methods: { methods: {
openScanPopup() { goScan(editPosition) {
this.$refs.scanPopup.openScanPopup(); this.$refs.comIssueRequestPopup.openRequestPopup(editPosition);
},
getToLocationCode(location, code) {
this.toLocationCodeInfo = location;
this.toLocationCode = code;
}, },
getScanResult(result) {
let label = result.label; //
let pack = result.package; requestConfirm(action, item) {
var item = this.detailSource.find(res => {
if (res.itemCode == label.itemCode) { if (this.detailSource.subList.length == 0) {
return res this.detailSource = {
totalQty: 0,
toLocationCode:item.toLocationCode,
subList: []
} }
})
if (item == undefined) { var subItem = {
var itemp = this.createItemInfo(label, pack); toLocationCode:item.toLocationCode,
let newDetail = this.createDetailInfo(label, pack); itemCode: item.itemCode,
itemp.subList.push(newDetail); itemName: item.itemName,
this.detailSource.push(itemp) qty: item.qty,
uom: item.uom,
}
this.detailSource.subList.push(subItem)
} else { } else {
var detail = item.subList.find(r => { var result = this.detailSource.subList.filter(res => {
if (r.packingNumber == result.number && if (res.itemCode == item.itemCode) {
r.batch == result.batch) { return res
return r;
} }
}) })
if (detail == undefined) { //
let newDetail = this.createDetailInfo(label, pack); if (result.length == 0) {
item.subList.push(newDetail); var subItem = {
} else { itemCode: item.itemCode,
if (detail.scaned) { itemName: item.itemName,
this.showErrorMessage("箱码[" + result.Number + "]批次[" + result.batch + "]已经扫描") qty: item.qty,
uom: item.uom
} }
} this.detailSource.subList.push(subItem)
}
this.calcHandleQty();
}, } else {
//
createItemInfo(label, pack) { result[0].qty += item.qty
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;
},
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) { caclcQty() {
this.$refs.comMessage.showErrorMessage(message, res => { var totalQty = 0;
if (res) { this.detailSource.subList.forEach(res => {
totalQty += res.qty
} })
}); this.detailSource.totalQty = totalQty;
},
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();
}, },
removeItem(index, item) { submit() {
this.detailSource.splice(index, 1) if (this.reasonText == '') {
},
commit() {
if (this.showToLoaction &&this.toLocationCode == "") {
this.showErrorMessage("请先选择目标库位")
return;
}
if (this.reason == '') {
this.showErrorMessage("请选择入库原因") this.showErrorMessage("请选择入库原因")
return; return;
} }
uni.showLoading({
var params = this.setRequestParams() title: "提交中....",
console.log("提交" + JSON.stringify(params)) mask: true
// unPlannedReceiptRequestbSubmit(params).then(res => { });
// uni.hideLoading() var params = this.setRequestParams()
// if (res.data) { console.log("提交参数", JSON.stringify(params));
// this.showCommitSuccessMessage("<br>" + res.data, ) unPlannedReceiptRequestCreate(params).then(res => {
// } else { uni.hideLoading()
// this.showErrorMessage("[" + res.msg + "]") if (res.data) {
// } this.showCommitSuccessMessage("提交成功<br>生成计划外入库申请<br>" + res.data)
// }).catch(error => { } else {
// uni.hideLoading() this.showErrorMessage("提交失败[" + res.msg + "]")
// this.showErrorMessage(error) }
// }) }).catch(error => {
uni.hideLoading()
this.showErrorMessage(error)
})
}, },
setRequestParams(){ setRequestParams() {
var subList = [] var subList = []
var supplierCode="" this.detailSource.subList.forEach(detail => {
this.detailSource.forEach(item => { detail.toLocationCode = this.detailSource.toLocationCode;
item.subList.forEach(detail => { detail.reason = this.reasonCode;
if (detail.scaned) { detail.containerNumber = "";
if(supplierCode==""){ detail.batch = getBatch();
supplierCode = detail.package.supplierCode detail.inventoryStatus = "OK";
} console.log("",getBatch())
subList.push(detail) subList.push(detail)
}
}) })
})
this.detailSource.status = 1;
this.detailSource.requestTime = getCurrDateTimes();
this.detailSource.dueTime = getCurrDateOneMonthsTimes();
this.dataContent.subList = subList return this.detailSource;
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;
}, },
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> </script>
<style> <style>
.page-main {
flex: 1;
position: relative;
}
.page-main-scroll {
position: relative;
margin-top: 2px;
}
</style> </style>

2
static/config.json

@ -18,7 +18,7 @@
"request_url": { "request_url": {
"name": "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", "dev2": "http://192.168.0.157:12080/admin-api",
"chefang": "http://192.168.0.178:12080/admin-api", "chefang": "http://192.168.0.178:12080/admin-api",
"chenxinming": "http://192.168.0.230:12080/admin-api", "chenxinming": "http://192.168.0.230:12080/admin-api",

Loading…
Cancel
Save