zhang_li
5 months ago
13 changed files with 1052 additions and 376 deletions
@ -0,0 +1,2 @@ |
|||
export const overPagePrint="overPage_print" |
|||
export const overPageTemplate="overPage_Template" |
@ -0,0 +1,133 @@ |
|||
<template> |
|||
<view class="uni-flex uni-column" style="width: 100%"> |
|||
<view class="title" style="display: flex; align-items: center; padding: 10rpx"> |
|||
<text style="flex-shrink: 0; width: 22%; font-size: 35rpx; font-weight: bold">打印机 :</text> |
|||
<view class="uni-flex" style="uni-row; width: 78%; justify-content: space-between; align-items: center; "> |
|||
<view class="customerBorder" @click="showSelectPrint"> |
|||
{{ printName }} |
|||
</view> |
|||
<u-select v-model="showPrintSelect" mode="mutil-column-auto" :list="printList" @confirm="confirmSelectPrint"></u-select> |
|||
|
|||
<view class="" style=""> |
|||
<image src="/static/icons/down.svg" mode="" style="width: 40rpx; height: 40rpx; margin-left: 20rpx" @click="showSelectPrint"> </image> |
|||
</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: 22%; font-size: 35rpx; font-weight: bold">模版 :</text> |
|||
|
|||
<view class="uni-flex" style="uni-row; width: 78%; justify-content: space-between; align-items: center; "> |
|||
<view class="customerBorder" @click="showSelectTemplate"> |
|||
{{ templateName }} |
|||
</view> |
|||
<u-select v-model="showTemplateSelect" mode="mutil-column-auto" :list="templateList" @confirm="confirmSelectTemplate"></u-select> |
|||
|
|||
<view class=""> |
|||
<image src="/static/icons/down.svg" mode="" style="width: 40rpx; height: 40rpx; margin-left: 20rpx" @click="showSelectTemplate"> </image> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
<view class="split_line"></view> |
|||
<comMessage ref="comMessage"></comMessage> |
|||
</view> |
|||
</template> |
|||
|
|||
<script> |
|||
import { getPrintList, getPrintTemplateList } from '@/api/request2.js' |
|||
|
|||
export default { |
|||
data() { |
|||
return { |
|||
showPrintSelect: false, |
|||
printName: '请选择打印机', |
|||
printCode: '', |
|||
showTemplateSelect: false, |
|||
templateName: '请选择打印模版', |
|||
templateCode: '', |
|||
printList: [], |
|||
templateList: [] |
|||
} |
|||
}, |
|||
// 此处定义传入的数据 |
|||
props: { |
|||
// printList: { |
|||
// type: Array, |
|||
// default() { |
|||
// return []; |
|||
// } |
|||
// }, |
|||
// templateList: { |
|||
// type: Array, |
|||
// default() { |
|||
// return []; |
|||
// } |
|||
// }, |
|||
// printDeafult:{ |
|||
// type:String, |
|||
// default:"" |
|||
// }, |
|||
// templateDeafult:{ |
|||
// type:String, |
|||
// default:"" |
|||
// }, |
|||
}, |
|||
methods: { |
|||
setDefaultData(printDeafult, templateDeafult) { |
|||
this.templateName = printDeafult.name |
|||
this.printCode = printDeafult.code |
|||
this.templateName = templateDeafult.name |
|||
this.templateCode = templateDeafult.code |
|||
}, |
|||
|
|||
showErrorMessage(message, type) { |
|||
setTimeout((r) => { |
|||
this.$refs.comMessage.showErrorMessage(message, (res) => {}) |
|||
}) |
|||
}, |
|||
showSelectPrint() { |
|||
this.showPrintSelect = true |
|||
uni.showLoading({ |
|||
title: '加载中', |
|||
mask: true |
|||
}) |
|||
getPrintList() |
|||
.then((res) => { |
|||
this.printList = [] |
|||
}) |
|||
.catch((error) => {}) |
|||
}, |
|||
confirmSelectPrint() { |
|||
this.printCode = '' |
|||
this.$emit('printCode', this.printCode) |
|||
}, |
|||
showSelectTemplate() { |
|||
this.showTemplateSelect = true |
|||
uni.showLoading({ |
|||
title: '加载中', |
|||
mask: true |
|||
}) |
|||
getPrintTemplateList() |
|||
.then((res) => { |
|||
this.templateList = [] |
|||
}) |
|||
.catch((error) => {}) |
|||
}, |
|||
confirmSelectTemplate() { |
|||
this.templateCode = '' |
|||
this.$emit('templateCode', this.templateCode) |
|||
} |
|||
} |
|||
} |
|||
</script> |
|||
|
|||
<style lang="scss"> |
|||
.customerBorder { |
|||
width: 100%; |
|||
border: 1rpx solid lightgray; |
|||
border-radius: 5rpx; |
|||
padding: 15rpx; |
|||
} |
|||
</style> |
|||
|
|||
<style></style> |
@ -0,0 +1,437 @@ |
|||
<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> |
|||
<view class="split_line"></view> |
|||
<view class="uni-flex uni-column" style="background-color: white"> |
|||
<view class="uni-flex uni-column"> |
|||
<view class="title" style="display: flex; align-items: center; padding: 10rpx"> |
|||
<text style="flex-shrink: 0; width: 25%">生产线:</text> |
|||
<view class="customerBorder" @click="showSelectLine"> |
|||
{{ productionLineName }} |
|||
</view> |
|||
<u-select v-model="showProductLineSelect" mode="mutil-column-auto" :list="productLineList" @confirm="confirmSelectLine"></u-select> |
|||
|
|||
<view class=""> |
|||
<image src="/static/icons/down.svg" mode="" style="width: 40rpx; height: 40rpx; margin-left: 20rpx" @click="showSelectLine"> </image> |
|||
</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> |
|||
<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"> |
|||
<text style="flex-shrink: 0; width: 25%">物料代码:</text> |
|||
<view class="customerBorder"> |
|||
{{ itemCode }} |
|||
</view> |
|||
<view v-if="planQty > 0">{{ planQty }}({{ getUomInfo(uom) }})</view> |
|||
<u-select v-model="showItemCodeSelect" mode="single-column" :list="itemCodeList" @confirm="confirmSelectItem"></u-select> |
|||
<view class=""> |
|||
<image src="" mode="" style="width: 40rpx; height: 40rpx; margin-left: 20rpx"> </image> |
|||
</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> |
|||
<view class="customerBorder"> |
|||
{{ packUnitName }} |
|||
</view> |
|||
<u-select v-model="showPackUnitSelect" mode="single-column" :list="packUnitList" @confirm="confirmSelectPackUnit"></u-select> |
|||
<view class=""> |
|||
<image src="/static/icons/down.svg" mode="" style="width: 40rpx; height: 40rpx; margin-left: 20rpx" @click="showSelectPackUnit"> </image> |
|||
</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> |
|||
</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> |
|||
<comMessage ref="comMessage"></comMessage> |
|||
</view> |
|||
</template> |
|||
|
|||
<script> |
|||
import { getIssueJobByProductionline, getPlaneInfoByproductLine, getPackUnitByItemCode, getProductionlineAndWorkStation } from '@/api/request2.js' |
|||
import { getPackUnitName, getUomInfo } from '@/common/directory.js' |
|||
|
|||
import { getCurrDate, getBatch8, dateFormatData, lastThreeDays } from '@/common/basic.js' |
|||
|
|||
import { calc } from '@/common/calc.js' |
|||
|
|||
import uom from '@/mycomponents/qty/uom.vue' |
|||
import packQty from '@/mycomponents/qty/packQty.vue' |
|||
import balanceStatus from '@/mycomponents/status/balanceStatus.vue' |
|||
import winScanItem from '@/mycomponents/scan/winScanItem.vue' |
|||
|
|||
export default { |
|||
components: { |
|||
uom, |
|||
balanceStatus, |
|||
winScanItem, |
|||
packQty |
|||
}, |
|||
data() { |
|||
return { |
|||
itemCode: '请选择物料信息', |
|||
uom: '', |
|||
qty: null, |
|||
planQty: 0, |
|||
goodQty: 0, |
|||
planNumber: '', |
|||
productLineCode: '', |
|||
showProductLineSelect: false, |
|||
productLineList: [], |
|||
productionLineName: '请选择生产线', |
|||
productionLineCode: '', |
|||
batch: '', |
|||
packUnitName: '请选择包装规格', |
|||
packUnit: '', |
|||
packUnitList: [], |
|||
packQtyHint: '', |
|||
packQty: 0, |
|||
showPackUnitSelect: false, |
|||
itemCodeList: [], |
|||
showItemCodeSelect: false, |
|||
workStationCode: '', |
|||
planDate: '', |
|||
showDateSelect: false, |
|||
planDateList: [], |
|||
fgLocationCode: '', |
|||
rawLocationCode: '' |
|||
} |
|||
}, |
|||
props: { |
|||
title: { |
|||
type: String, |
|||
default: '开工阶段' |
|||
}, |
|||
itemCodeTypeList: { |
|||
type: Array, |
|||
default: [] |
|||
} |
|||
}, |
|||
methods: { |
|||
openRequestPopup() { |
|||
this.initData() |
|||
this.planDate = getCurrDate() |
|||
this.batch = getBatch8() |
|||
this.$refs.popup.open('bottom') |
|||
}, |
|||
initData() { |
|||
this.itemCode = '请选择物料信息' |
|||
this.uom = '' |
|||
this.planQty = 0 |
|||
this.goodQty = 0 |
|||
this.packQty = 0 |
|||
this.planNumber = '' |
|||
this.productLineCode = '' |
|||
this.showProductLineSelect = false |
|||
this.productLineList = [] |
|||
this.productionLineName = '请选择生产线' |
|||
this.productionLineCode = '' |
|||
this.batch = '' |
|||
this.packUnitName = '请选择包装规格' |
|||
;(this.packUnit = ''), (this.packQtyHint = '') |
|||
this.showPackUnitSelect = false |
|||
// this.packUnitList = [] |
|||
this.itemCodeList = [] |
|||
this.showItemCodeSelect = false |
|||
this.workStationCode = '' |
|||
this.planDate = '' |
|||
this.showDateSelect = false |
|||
this.planDateList = [] |
|||
this.fgLocationCode = '' |
|||
this.rawLocationCode = '' |
|||
}, |
|||
|
|||
closeRequestPopup() { |
|||
this.$refs.popup.close() |
|||
}, |
|||
itemCodeLoseFocus() { |
|||
this.itemCodeFocus = false |
|||
}, |
|||
|
|||
confirm() { |
|||
if (!this.planDate) { |
|||
this.showErrorMessage('请先选择计划日期') |
|||
return |
|||
} |
|||
|
|||
if (this.productionLineName == '请选择生产线') { |
|||
this.showErrorMessage('请选择生产线') |
|||
return |
|||
} |
|||
|
|||
if (!this.batch) { |
|||
this.showErrorMessage('请输入批次例如:20200101') |
|||
return |
|||
} |
|||
|
|||
if (this.itemCode == '请选择物料信息') { |
|||
this.showErrorMessage('请选择物料信息') |
|||
return |
|||
} |
|||
|
|||
if (this.packUnitName == '请选择包装规格') { |
|||
this.showErrorMessage('请选择包装规格') |
|||
return |
|||
} |
|||
|
|||
this.callback() |
|||
}, |
|||
|
|||
callback() { |
|||
const item = { |
|||
productionLineName: this.productionLineName, |
|||
productionLineCode: this.productionLineCode, // 生产线 |
|||
itemCode: this.itemCode, |
|||
uom: this.getUomInfo(this.uom), |
|||
batch: this.batch, |
|||
packUnitName: this.packUnitName, |
|||
packUnit: this.packUnit, |
|||
packQtyHint: this.packQtyHint, |
|||
packQty: this.packQty, |
|||
planQty: this.planQty, |
|||
goodQty: this.goodQty, |
|||
planNumber: this.planNumber, |
|||
workStationCode: this.workStationCode, |
|||
fgLocationCode: this.fgLocationCode, |
|||
rawLocationCode: this.rawLocationCode |
|||
} |
|||
this.closeRequestPopup() |
|||
this.$emit('confirm', item) |
|||
}, |
|||
|
|||
showErrorMessage(message, type) { |
|||
setTimeout((r) => { |
|||
this.$refs.comMessage.showErrorMessage(message, (res) => {}) |
|||
}) |
|||
}, |
|||
cancel(e) { |
|||
this.closeRequestPopup() |
|||
}, |
|||
|
|||
confirmSelectLine(data) { |
|||
this.productionLineName = `${data[0].label}—${data[1].label}` |
|||
this.productionLineCode = data[0].value |
|||
this.workStationCode = data[1].value |
|||
const parent = this.productLineList.filter((res) => res.value == this.productionLineCode) |
|||
const fgLocation = parent[0].children.filter((children) => children.value == this.workStationCode) |
|||
this.fgLocationCode = fgLocation[0].fgLocationCode |
|||
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 |
|||
const list = lastThreeDays(3) |
|||
this.planDateList = [] |
|||
list.forEach((res) => { |
|||
this.planDateList.push({ |
|||
label: res, |
|||
value: '' |
|||
}) |
|||
}) |
|||
}, |
|||
|
|||
showSelectLine() { |
|||
if (this.productLineList.length == 0) { |
|||
uni.showLoading({ |
|||
title: '加载中', |
|||
mask: true |
|||
}) |
|||
getProductionlineAndWorkStation() |
|||
.then((res) => { |
|||
uni.hideLoading() |
|||
if (res.data && res.data.length > 0) { |
|||
this.productLineList = res.data |
|||
this.showProductLineSelect = true |
|||
} else { |
|||
this.showErrorMessage('未查找到生产线信息') |
|||
} |
|||
}) |
|||
.catch((error) => { |
|||
uni.hideLoading() |
|||
this.showErrorMessage(error) |
|||
}) |
|||
} else { |
|||
this.showProductLineSelect = true |
|||
} |
|||
}, |
|||
showSelectItemCode() { |
|||
if (!this.planDate) { |
|||
this.showErrorMessage('请先选择计划日期') |
|||
return |
|||
} |
|||
if (!this.productionLineCode) { |
|||
this.showErrorMessage('请先选择生产线') |
|||
return |
|||
} |
|||
uni.showLoading({ |
|||
title: '加载中', |
|||
mask: true |
|||
}) |
|||
getPlaneInfoByproductLine(this.productionLineCode, this.planDate) |
|||
.then((res) => { |
|||
uni.hideLoading() |
|||
if (res.data && res.data.length > 0) { |
|||
res.data.forEach((item) => { |
|||
item.label = `${item.itemCode}(${item.planQty}${this.getUomInfo(item.uom)})` |
|||
item.value = item |
|||
}) |
|||
this.itemCodeList = res.data |
|||
this.showItemCodeSelect = true |
|||
} else { |
|||
this.showErrorMessage('未查找到物料信息') |
|||
} |
|||
}) |
|||
.catch((error) => { |
|||
uni.hideLoading() |
|||
this.showErrorMessage(error) |
|||
}) |
|||
}, |
|||
confirmSelectItem(data) { |
|||
const productionPlan = data[0].value |
|||
this.itemCode = productionPlan.itemCode |
|||
this.uom = productionPlan.uom |
|||
this.planQty = productionPlan.planQty |
|||
this.goodQty = productionPlan.goodQty |
|||
this.planNumber = productionPlan.number |
|||
|
|||
// 清除其他数据 |
|||
this.clearPackUnit() |
|||
uni.showLoading({ |
|||
title: '加载中', |
|||
mask: true |
|||
}) |
|||
getPackUnitByItemCode(this.itemCode) |
|||
.then((res) => { |
|||
uni.hideLoading() |
|||
if (res.data && res.data.list.length > 0) { |
|||
res.data.list.forEach((item) => { |
|||
item.value = item.packUnit |
|||
item.label = `${getPackUnitName(item.packUnit)}(${item.packQty}${this.getUomInfo(item.uom)})` |
|||
}) |
|||
this.packUnitList = res.data.list |
|||
const defaultData = res.data.list.filter((item) => item.defaultPackageunit == 'TRUE') |
|||
this.confirmSelectPackUnit(defaultData) |
|||
} |
|||
}) |
|||
.catch((error) => { |
|||
uni.hideLoading() |
|||
}) |
|||
}, |
|||
|
|||
clearPackUnit() { |
|||
this.packUnitName = '请选择包装规格' |
|||
this.packUnit = '' |
|||
const pack = this.packUnitList.filter((r) => r.packUnit == this.packUnit) |
|||
this.packQtyHint = '' |
|||
this.packQty = 0 |
|||
}, |
|||
|
|||
showSelectPackUnit() { |
|||
if (this.itemCode == '请选择物料信息') { |
|||
this.showErrorMessage('请先选择物料') |
|||
return |
|||
} |
|||
|
|||
uni.showLoading({ |
|||
title: '加载中', |
|||
mask: true |
|||
}) |
|||
getPackUnitByItemCode(this.itemCode) |
|||
.then((res) => { |
|||
uni.hideLoading() |
|||
if (res.data && res.data.list.length > 0) { |
|||
res.data.list.forEach((item) => { |
|||
item.value = item.packUnit |
|||
item.label = `${getPackUnitName(item.packUnit)}(${item.packQty}${this.getUomInfo(item.uom)})` |
|||
}) |
|||
this.packUnitList = res.data.list |
|||
this.showPackUnitSelect = true |
|||
} else { |
|||
this.showErrorMessage('未查找到包装信息') |
|||
} |
|||
}) |
|||
.catch((error) => { |
|||
uni.hideLoading() |
|||
this.showErrorMessage(error) |
|||
}) |
|||
}, |
|||
|
|||
confirmSelectPackUnit(data) { |
|||
this.packUnitName = data[0].label |
|||
this.packUnit = data[0].value |
|||
const pack = this.packUnitList.filter((r) => r.packUnit == this.packUnit) |
|||
this.packQtyHint = `${pack[0].packQty}(${this.getUomInfo(pack[0].uom)})` |
|||
this.packQty = pack[0].packQty |
|||
}, |
|||
getUomInfo(uom) { |
|||
const item = getUomInfo(uom) |
|||
if (item == '') { |
|||
return uom |
|||
} |
|||
return item.label |
|||
} |
|||
} |
|||
} |
|||
</script> |
|||
|
|||
<style lang="scss"> |
|||
.title { |
|||
font-size: 30rpx; |
|||
} |
|||
|
|||
.customerBorder { |
|||
width: 100%; |
|||
border: 1rpx solid lightgray; |
|||
border-radius: 5rpx; |
|||
padding: 15rpx; |
|||
} |
|||
</style> |
Loading…
Reference in new issue