Browse Source

修改计划完工

hella_online_20240829
lijuncheng 2 months ago
parent
commit
ad21ba9d38
  1. 63
      src/common/basic.js
  2. 235
      src/pages/fg/coms/comReceiptPopup.vue
  3. 42
      src/pages/fg/receiptByPlan.vue

63
src/common/basic.js

@ -878,6 +878,67 @@ export function getBatch8() {
return year + month + day; return year + month + day;
} }
/**
* 获取前几天和后几天的日期 2024-07-07
*/
export function lastThreeDays(grapDay) {
let dates = [];
for (let i = grapDay; i >= 0; i--) {
// 创建新的Date对象,并减去i天
let date = new Date();
date.setDate(date.getDate() - i);
// 将格式化的日期字符串添加到数组中
dates.push(formatDate(date));
}
for (let i = 0; i <grapDay; i++) {
// 创建新的Date对象,并减去i天
let date = new Date();
date.setDate(date.getDate() + (i+1));
// 将格式化的日期字符串添加到数组中
dates.push(formatDate(date));
}
return dates;
}
//20240702
export function formatDate(date) {
const year = date.getFullYear();
const month = (date.getMonth() + 1).toString().padStart(2, '0');
const day = date.getDate().toString().padStart(2, '0');
return `${year}-${month}-${day}`;
}
export function getBeforeDayDate(grapDay) {
const today = new Date();
var resultList = []
//获取前几天
var beforeList = []
var afterList = []
for (var i = 0; i < grapDay; i++) {
beforeList.push(today.getDate() - (i + 1))
}
//获取后几天
var afterList = []
for (var i = 0; i < grapDay; i++) {
afterList.push(today.getDate() + (i + 1))
}
resultList.concat(beforeList)
resultList.push(today)
resultList.concat(afterList)
return resultList;
}
export function getCurrDate() { export function getCurrDate() {
var date = new Date(); var date = new Date();
@ -1089,5 +1150,5 @@ export function deepCopyData(target) {
} }
//数组去重重复数据 //数组去重重复数据
export function uniqueArray(arr) { export function uniqueArray(arr) {
return arr.filter((item, index, self) => self.indexOf(item) === index); return arr.filter((item, index, self) => self.indexOf(item) === index);
} }

235
src/pages/fg/coms/comReceiptPopup.vue

@ -29,7 +29,21 @@
</view> </view>
</view> </view>
<view class='split_line'></view> <view class='split_line'></view>
<view class="title " style="display: flex; align-items: center;padding: 10rpx;">
<text style=" flex-shrink: 0;width: 25%;">计划日期</text>
<view class="customerBorder" @click="showSelectDate">
{{planDate}}
</view>
<u-select v-model="showDateSelect" mode="mutil-column-auto"
:list="planDateList" @confirm="confirmSelectDate"></u-select>
<view class="">
<image src="/static/icons/down.svg" mode=""
style=" width: 40rpx;height: 40rpx;margin-left: 20rpx;" @click="showSelectDate">
</image>
</view>
</view>
<view class='split_line'></view>
<view class="title " style="display: flex;align-items: center;padding: 10rpx;"> <view class="title " style="display: flex;align-items: center;padding: 10rpx;">
<text style=" flex-shrink: 0; width: 25%;">物料代码</text> <text style=" flex-shrink: 0; width: 25%;">物料代码</text>
<view class="customerBorder"> <view class="customerBorder">
@ -45,17 +59,7 @@
</image> </image>
</view> </view>
</view> </view>
<view class='split_line'></view>
<view class="title " style="display: flex;align-items: center;padding: 10rpx;">
<text style=" flex-shrink: 0; width: 25%;">批次</text>
<uni-easyinput v-model="batch" ></uni-easyinput>
<view class="">
<image src="" mode="" style=" width: 40rpx;height: 40rpx;margin-left: 20rpx;"
@click="showSelectLine">
</image>
</view>
</view>
<!-- <view class="title " style="display: flex;align-items: center;padding: 10rpx;"> <!-- <view class="title " style="display: flex;align-items: center;padding: 10rpx;">
<text style=" flex-shrink: 0; width: 25%;">计划数量</text> <text style=" flex-shrink: 0; width: 25%;">计划数量</text>
<view class="customerBorder"> <view class="customerBorder">
@ -81,6 +85,17 @@
</image> </image>
</view> </view>
</view> </view>
<view class='split_line'></view>
<view class="title " style="display: flex;align-items: center;padding: 10rpx;">
<text style=" flex-shrink: 0; width: 25%;">批次</text>
<uni-easyinput v-model="batch"></uni-easyinput>
<view class="">
<image src="" mode="" style=" width: 40rpx;height: 40rpx;margin-left: 20rpx;"
@click="showSelectLine">
</image>
</view>
</view>
<view class='split_line'></view> <view class='split_line'></view>
</view> </view>
@ -111,9 +126,10 @@
import { import {
getCurrDate, getCurrDate,
getBatch8, getBatch8,
dateFormatData dateFormatData,
lastThreeDays
} from '@/common/basic.js'; } from '@/common/basic.js';
import { import {
calc calc
} from '@/common/calc.js'; } from '@/common/calc.js';
@ -134,9 +150,9 @@
return { return {
itemCode: '请选择物料信息', itemCode: '请选择物料信息',
uom: "", uom: "",
qty:null, qty: null,
planQty: 0, planQty: 0,
goodQty:0, goodQty: 0,
planNumber: "", planNumber: "",
productLineCode: "", productLineCode: "",
showProductLineSelect: false, showProductLineSelect: false,
@ -145,14 +161,17 @@
productionLineCode: "", productionLineCode: "",
batch: "", batch: "",
packUnitName: "请选择包装规格", packUnitName: "请选择包装规格",
packUnit :"", packUnit: "",
packUnitList: [], packUnitList: [],
packQtyHint:"", packQtyHint: "",
packQty:0, packQty: 0,
showPackUnitSelect: false, showPackUnitSelect: false,
itemCodeList: [], itemCodeList: [],
showItemCodeSelect: false, showItemCodeSelect: false,
workStationCode:"" workStationCode: "",
planDate: '',
showDateSelect:false,
planDateList:[]
} }
}, },
props: { props: {
@ -166,8 +185,10 @@
}, },
}, },
methods: { methods: {
openRequestPopup() { openRequestPopup() {
this.initData(); this.initData();
this.planDate =getCurrDate()
this.batch = getBatch8() this.batch = getBatch8()
this.$refs.popup.open('bottom') this.$refs.popup.open('bottom')
}, },
@ -175,8 +196,8 @@
this.itemCode = '请选择物料信息'; this.itemCode = '请选择物料信息';
this.uom = "" this.uom = ""
this.planQty = 0 this.planQty = 0
this.goodQty =0; this.goodQty = 0;
this.packQty=0; this.packQty = 0;
this.planNumber = "" this.planNumber = ""
this.productLineCode = "" this.productLineCode = ""
this.showProductLineSelect = false this.showProductLineSelect = false
@ -185,13 +206,16 @@
this.productionLineCode = "" this.productionLineCode = ""
this.batch = "" this.batch = ""
this.packUnitName = "请选择包装规格" this.packUnitName = "请选择包装规格"
this.packUnit ="", this.packUnit = "",
this.packQtyHint ="" this.packQtyHint = ""
this.showPackUnitSelect = false this.showPackUnitSelect = false
// this.packUnitList = [] // this.packUnitList = []
this.itemCodeList = [] this.itemCodeList = []
this.showItemCodeSelect = false this.showItemCodeSelect = false
this.workStationCode="" this.workStationCode = ""
this.planDate=""
this.showDateSelect =false
this.planDateList=[]
}, },
@ -203,6 +227,11 @@
}, },
confirm() { confirm() {
if (!this.planDate) {
this.showErrorMessage('请先选择计划日期');
return;
}
if (this.productionLineName == "请选择生产线") { if (this.productionLineName == "请选择生产线") {
this.showErrorMessage("请选择生产线") this.showErrorMessage("请选择生产线")
return return
@ -234,14 +263,14 @@
uom: this.getUomInfo(this.uom), uom: this.getUomInfo(this.uom),
batch: this.batch, batch: this.batch,
packUnitName: this.packUnitName, packUnitName: this.packUnitName,
packUnit:this.packUnit, packUnit: this.packUnit,
packQtyHint:this.packQtyHint, packQtyHint: this.packQtyHint,
packQty:this.packQty, packQty: this.packQty,
planQty: this.planQty, planQty: this.planQty,
goodQty:this.goodQty, goodQty: this.goodQty,
planNumber: this.planNumber, planNumber: this.planNumber,
workStationCode:this.workStationCode workStationCode: this.workStationCode
}; };
this.closeRequestPopup(); this.closeRequestPopup();
this.$emit("confirm", item); this.$emit("confirm", item);
@ -257,9 +286,36 @@
}, },
confirmSelectLine(data) { confirmSelectLine(data) {
this.productionLineName = data[0].label+"—"+data[1].label this.productionLineName = data[0].label + "—" + data[1].label
this.productionLineCode = data[0].value this.productionLineCode = data[0].value
this.workStationCode = data[1].value this.workStationCode = data[1].value
this.clearItemCode()
this.clearPackUnit()
},
clearItemCode(){
this.planDate =getCurrDate()
this.itemCode ="请选择物料信息"
this.uom = ""
this.planQty = 0;
this.goodQty = 0
this.planNumber = ""
},
confirmSelectDate(data) {
this.planDate=data[0].label
},
showSelectDate(){
this.showDateSelect =true;
var list =lastThreeDays(3);
this.planDateList=[]
list.forEach(res=>{
this.planDateList.push({
label :res,
value:""
})
})
}, },
showSelectLine() { showSelectLine() {
@ -288,32 +344,36 @@
}, },
showSelectItemCode() { showSelectItemCode() {
if (!this.planDate) {
this.showErrorMessage('请先选择计划日期');
return;
}
if (!this.productionLineCode) { if (!this.productionLineCode) {
this.showErrorMessage('请先选择生产线'); this.showErrorMessage('请先选择生产线');
return; return;
} }
console.log("当天", getCurrDate()) uni.showLoading({
uni.showLoading({ title: "加载中",
title: "加载中", mask: true
mask: true })
}) getPlaneInfoByproductLine(this.productionLineCode, this.planDate).then(res => {
getPlaneInfoByproductLine(this.productionLineCode, getCurrDate()).then(res => { uni.hideLoading()
uni.hideLoading() if (res.data && res.data.length > 0) {
if (res.data && res.data.length > 0) { res.data.forEach(item => {
res.data.forEach(item => { item.label = item.itemCode + "(" + item.planQty + item.uom + ")" + "(" +
item.label = item.itemCode + "(" + item.planQty + item.uom + ")"+"("+dateFormatData(item.planDate)+")" dateFormatData(item.planDate) + ")"
item.value = item item.value = item
}) })
this.itemCodeList = res.data this.itemCodeList = res.data
this.showItemCodeSelect = true this.showItemCodeSelect = true
} else { } else {
this.showErrorMessage('未查找到物料信息'); this.showErrorMessage('未查找到物料信息');
} }
}).catch(error => { }).catch(error => {
uni.hideLoading() uni.hideLoading()
this.showErrorMessage(error); this.showErrorMessage(error);
}) })
}, },
confirmSelectItem(data) { confirmSelectItem(data) {
let productionPlan = data[0].value; let productionPlan = data[0].value;
@ -322,46 +382,57 @@
this.planQty = productionPlan.planQty; this.planQty = productionPlan.planQty;
this.goodQty = productionPlan.goodQty this.goodQty = productionPlan.goodQty
this.planNumber = productionPlan.number this.planNumber = productionPlan.number
//
this.clearPackUnit();
},
clearPackUnit(){
this.packUnitName = "请选择包装规格"
this.packUnit = ""
let pack = this.packUnitList.filter(r => r.packUnit == this.packUnit);
this.packQtyHint = "";
this.packQty = 0
}, },
showSelectPackUnit() { showSelectPackUnit() {
if (this.itemCode == "请选择物料信息") { if (this.itemCode == "请选择物料信息") {
this.showErrorMessage('请先选择物料'); this.showErrorMessage('请先选择物料');
return; return;
} }
uni.showLoading({ uni.showLoading({
title: "加载中", title: "加载中",
mask: true mask: true
}) })
getPackUnitByItemCode(this.itemCode).then(res => { getPackUnitByItemCode(this.itemCode).then(res => {
uni.hideLoading() uni.hideLoading()
if (res.data && res.data.list.length > 0) { if (res.data && res.data.list.length > 0) {
res.data.list.forEach(item => { res.data.list.forEach(item => {
item.value = item.packUnit item.value = item.packUnit
item.label = getPackUnitName(item.packUnit) + "(" + item.packQty + this item.label = getPackUnitName(item.packUnit) + "(" + item.packQty + this
.getUomInfo(item.uom) + ")"; .getUomInfo(item.uom) + ")";
}) })
this.packUnitList = res.data.list this.packUnitList = res.data.list
this.showPackUnitSelect = true this.showPackUnitSelect = true
} else { } else {
this.showErrorMessage('未查找到包装信息'); this.showErrorMessage('未查找到包装信息');
} }
}).catch(error => { }).catch(error => {
uni.hideLoading() uni.hideLoading()
this.showErrorMessage(error); this.showErrorMessage(error);
}) })
}, },
confirmSelectPackUnit(data) { confirmSelectPackUnit(data) {
this.packUnitName = data[0].label this.packUnitName = data[0].label
this.packUnit =data[0].value this.packUnit = data[0].value
let pack = this.packUnitList.filter(r => r.packUnit == this.packUnit); let pack = this.packUnitList.filter(r => r.packUnit == this.packUnit);
this.packQtyHint = pack[0].packQty+"("+this this.packQtyHint = pack[0].packQty + "(" + this
.getUomInfo(pack[0].uom)+")"; .getUomInfo(pack[0].uom) + ")";
this.packQty =pack[0].packQty this.packQty = pack[0].packQty
}, },
getUomInfo(uom) { getUomInfo(uom) {
let item = getUomInfo(uom); let item = getUomInfo(uom);

42
src/pages/fg/receiptByPlan.vue

@ -86,7 +86,7 @@
<view class=" uni-flex uni-row"> <view class=" uni-flex uni-row">
<button class="btn_single_clear" hover-class="btn_commit_after" style="margin-right: 50rpx;" <button class="btn_single_clear" hover-class="btn_commit_after" style="margin-right: 50rpx;"
@click="clear">清空</button> @click="clear">清空</button>
<button class="btn_single_commit" hover-class="btn_commit_after" @click="commit">提交</button> <button class="btn_single_commit" hover-class="btn_commit_after" @click="submit">提交</button>
</view> </view>
</view> </view>
</view> </view>
@ -235,22 +235,35 @@
} }
}, },
async commit() {
submit() {
if (this.allList.length == 0) { if (this.allList.length == 0) {
this.showErrorMessage("请先扫描唯一码") this.showErrorMessage("请先扫描唯一码")
return; return;
} }
if (this.allList.length < this.dataContent.packQty) {
this.$refs.comMessage.showQuestionMessage("扫描数量小于计划数量,是否提交?", res => {
if (res) {
this.commit()
}
});
} else {
this.commit();
}
try { },
let params = this.setParams() async commit() {
console.log(JSON.stringify(params))
try {
uni.showLoading({ uni.showLoading({
title: "提交中...", title: "提交中...",
mask: true mask: true
}) })
let params = this.setParams()
console.log(JSON.stringify(params))
let list = [] let list = []
var planData = await planReceiptSubmit(params) var planData = await planReceiptSubmit(params)
if (planData.data) { if (planData.data) {
@ -278,9 +291,9 @@
throw new Error("提交失败") throw new Error("提交失败")
} }
createPutawayRequestByPlan(list[0].requestNumber).then(res=>{ createPutawayRequestByPlan(list[0].requestNumber).then(res => {
createInspectRequestByPlan(list[0].requestNumber) createInspectRequestByPlan(list[0].requestNumber)
}) })
var queryParams = { var queryParams = {
filters: [{ filters: [{
@ -297,7 +310,7 @@
pageNo: 1, pageNo: 1,
pageSize: 100, pageSize: 100,
} }
var planeInfo = await getPlanByNumber(queryParams); var planeInfo = await getPlanByNumber(queryParams);
if (planeInfo.data && planeInfo.data.list.length > 0) { if (planeInfo.data && planeInfo.data.list.length > 0) {
if (planeInfo.data.list[0].goodQty >= planeInfo.data.list[0].planQty) { if (planeInfo.data.list[0].goodQty >= planeInfo.data.list[0].planQty) {
@ -307,11 +320,12 @@
this.dataContent.handleQty = 0; this.dataContent.handleQty = 0;
this.dataContent.planQty = planeInfo.data.list[0].planQty this.dataContent.planQty = planeInfo.data.list[0].planQty
this.dataContent.goodQty = planeInfo.data.list[0].goodQty this.dataContent.goodQty = planeInfo.data.list[0].goodQty
this.dataContent.noGoodQty = calc.sub(planeInfo.data.list[0].planQty, planeInfo.data.list[0].goodQty), this.dataContent.noGoodQty = calc.sub(planeInfo.data.list[0].planQty, planeInfo.data.list[
this.dataContent.subList = [] 0].goodQty),
this.showList=[]; this.dataContent.subList = []
this.allList=[] this.showList = [];
this.index=1 this.allList = []
this.index = 1
} }
} else { } else {

Loading…
Cancel
Save