202501-Wms-Kate-Wuxi/dev_wms_client/src/layout/kitting.vue

849 lines
35 KiB
Vue
Raw Normal View History

2025-03-17 15:24:14 +08:00
<template>
<el-config-provider :locale="zhCn">
<el-container class="content">
<div class="work-area">
<fieldset class="main-area">
<el-form ref="workFormRef" :model="workFormEntity" :label-position="labelPosition"
label-width="158px" style="max-width: 100%" :rules="rules" status-icon>
<div style="display: flex; justify-content: space-between;">
<el-row>
<el-form-item label="计划开工日期" prop="planStartDate">
<el-date-picker v-model="workFormEntity.planStartDate" type="date"
placeholder="选择开工日期" :shortcuts="shortcuts" style="width: 196px;" clearable />
</el-form-item>
<el-form-item label="工单号" prop="workOrder">
<el-select v-model="workFormEntity.workOrder" filterable default-first-option
placeholder="请选择工单号" style="width: 196px" :loading="optionLoading" remote
:remote-method="(query) => {
workFormQuery.workOrder = query
initWorkOptions()
}" remote-show-suffix reserve-keyword clearable>
<el-option v-for="item in workOptions.workOrder" :key="item" :label="item"
:value="item" />
</el-select>
</el-form-item>
<el-form-item label="原始成品号" prop="productIdOrigin">
<el-input v-model="workFormEntity.productIdOrigin" placeholder="原始成品号" disabled />
</el-form-item>
<el-form-item label="过滤成品号" prop="productId">
<el-input v-model="workFormEntity.productId" placeholder="过滤成品号" disabled />
</el-form-item>
<el-form-item label="单片号" prop="singleProductId">
<el-select v-model="workFormEntity.singleProductId" filterable default-first-option
placeholder="请选择单片号" style="width: 196px" :loading="optionLoading" remote
:remote-method="(query) => {
workFormQuery.singleProductId = query
initWorkOptions()
}" remote-show-suffix reserve-keyword clearable>
<el-option v-for="item in workOptions.singleProductId" :key="item" :label="item"
:value="item" />
</el-select>
</el-form-item>
<el-form-item label="料盒号" prop="boxNo">
<el-select v-model="workFormEntity.boxNo" filterable default-first-option
placeholder="请选择料盒号" style="width: 196px" :loading="optionLoading" remote
:remote-method="(query) => {
workFormQuery.boxNo = query
initWorkOptions()
}" remote-show-suffix reserve-keyword clearable>
<el-option v-for="item in workOptions.boxNo" :key="item" :label="item"
:value="item" />
</el-select>
</el-form-item>
<el-form-item label="原材料号" prop="goodsId">
<el-select v-model="workFormEntity.goodsId" filterable default-first-option
placeholder="请选择原材料号" style="width: 196px" :loading="optionLoading" remote
:remote-method="(query) => {
workFormQuery.goodsId = query
initWorkOptions()
}" remote-show-suffix reserve-keyword clearable>
<el-option v-for="item in workOptions.goodsId" :key="item" :label="item"
:value="item" />
</el-select>
</el-form-item>
</el-row>
<el-row>
<el-button type="success"
style="height: 50px; width: 100px; margin: auto 5px auto 5px; font-size: large; color: black;"
@click="confirmStart()">确认配料</el-button>
<el-button type="warning"
style="height: 50px; width: 100px; margin: auto 5px auto 5px; font-size: large; color: black;"
@click="resetWorkFormQuery()">清除选择</el-button>
</el-row>
</div>
</el-form>
</fieldset>
<fieldset class="confirm-area">
<el-form ref="confirmRef" :model="confirmEntity" :label-position="labelPosition" label-width="158px"
style="max-width: 100%" :rules="confirmRules" status-icon>
<div style="display: flex; justify-content: space-between;">
<el-row>
<el-row style="border-bottom: dashed 1px black;">
<el-form-item label="工单号" prop="workOrder">
<el-input v-model="confirmEntity.workOrder" disabled />
</el-form-item>
<el-form-item label="成品号" prop="productId">
<el-input v-model="confirmEntity.productId" disabled />
</el-form-item>
<el-form-item label="单片号" prop="singleProductId">
<el-input v-model="confirmEntity.singleProductId" disabled />
</el-form-item>
<el-form-item label="物料号" prop="goodsId">
<el-input v-model="confirmEntity.goodsId" disabled />
</el-form-item>
<el-form-item label="料盒号" prop="boxNo">
<el-input v-model="confirmEntity.boxNo" disabled />
</el-form-item>
<el-form-item label="计划拣选数量" prop="planPickQty">
<el-input v-model="confirmEntity.planPickQty" disabled />
</el-form-item>
<el-form-item label="实际拣选数量" prop="realPickQty">
<el-input-number v-model.number="confirmEntity.realPickQty"
controls-position="right" :min="0" clearable @change="changePlanQty()" />
</el-form-item>
</el-row>
<el-row>
<el-form-item label="箱号" prop="vehicleId">
<el-input v-model="confirmEntity.vehicleId" disabled />
</el-form-item>
<el-form-item label="存放区域" prop="putArea">
<el-input v-model="confirmEntity.putArea" disabled />
</el-form-item>
<el-form-item label="计划剩余数量" prop="planRemainQty" v-if="confirmEntity.isOut != 1">
<el-input v-model="confirmEntity.planRemainQty" disabled />
</el-form-item>
<el-form-item label="实际剩余数量" prop="realRemainQty" v-if="confirmEntity.isOut != 1">
<el-input-number v-model.number="confirmEntity.realRemainQty"
controls-position="right" :min="0" clearable />
</el-form-item>
</el-row>
</el-row>
<el-row>
<el-button type="primary"
style="height: 50px; width: 100px; margin: auto 5px auto 5px; font-size: large; color: black;"
@click="showBoxSummary()">显示料盒</el-button>
<el-button type="success" ref="confirmReleaseBtn"
style="height: 50px; width: 100px; margin: auto 5px auto 5px; font-size: large; color: black;"
@click="confirmOrRelease()">确认/放行</el-button>
<el-button type="warning"
style="height: 50px; width: 100px; margin: auto 5px auto 5px; font-size: large; color: black;"
@click="requestPrint()">打印标签</el-button>
</el-row>
</div>
</el-form>
</fieldset>
<div class="table-area">
<el-table :data="currentBoxGoodsList" stripe border class="table-class" max-height="350px"
highlight-current-row :header-cell-style="{ 'text-align': 'center' }"
:cell-style="{ 'text-align': 'center' }" @sort-change="handleSortChange">
<el-table-column prop="goodsId" label="料号" min-width="120px" sortable="custom"
show-overflow-tooltip />
<el-table-column prop="needNum" label="需求数量" min-width="120px" sortable="custom"
show-overflow-tooltip />
<el-table-column prop="finishNum" label="已完成数量" min-width="120px" sortable="custom"
show-overflow-tooltip />
</el-table>
<br />
<el-pagination v-model:current-page="baseTableQuery.currentPage"
v-model:page-size="baseTableQuery.pageSize" :page-sizes="[5, 10, 15]" :small="false"
:disabled="false" :background="false" :default-page-size="5" @size-change="searchKittingGoods"
@current-change="searchKittingGoods" layout="total, sizes, prev, pager, next, jumper"
:total="baseTableQuery.total" />
</div>
<el-dialog v-model="boxShowFlag" title="料盒总览" width="50%" center :close="closeBoxSummary">
<span>料盒信息</span>
<el-table :data="boxSummary" stripe border class="table-class" max-height="200px"
:header-cell-style="{ 'text-align': 'center' }" :cell-style="{ 'text-align': 'center' }">
<el-table-column prop="workOrder" label="工单号" fixed="left" />
<el-table-column prop="taoQty" label="套数" />
<el-table-column prop="productId" label="总成号" />
<el-table-column prop="singleProductId" label="成品/单片" />
<el-table-column prop="boxNo" label="料盒号" />
<el-table-column prop="boxQty" label="料盒数量" />
</el-table>
<span>缺料信息</span>
<el-table :data="goodsLackSummary" stripe border class="table-class" max-height="450px"
:header-cell-style="{ 'text-align': 'center' }" :cell-style="{ 'text-align': 'center' }">
<el-table-column prop="goodsId" label="料号" fixed="left" />
<el-table-column prop="needNum" label="需求数量" />
<el-table-column prop="stockNum" label="库存数量" />
<el-table-column prop="lackNum" label="缺料数量" />
<el-table-column prop="remark" label="备注" />
</el-table>
</el-dialog>
<div style="width: 0;height: 0;overflow: hidden">
<button ref="printBtn" style="display: none;" v-print="printObj"></button>
<div id="printArea" class="objectDialogFlowPrint">
<div class="pageWarp" v-for="item in printTabs">
<div class="print-tab-text">
<div class="print-row-normal">工单{{ item.workOrder }}</div>
<div class="print-row-normal">总成{{ item.productId }}</div>
<div class="print-row-normal">单片{{ item.singleProductId }}</div>
<div class="print-row-normal">配料{{ item.kittingDate }}</div>
</div>
<div class="print-tab-text">
<div class="print-row-normal">测试台{{ item.testNo }}</div>
<div class="print-row-normal">产量{{ item.productionQty }}</div>
<div class="print-row-normal">料盒号{{ item.boxNo }}</div>
<div class="print-row-normal">生产{{ item.produceDate }}</div>
</div>
<div class="print-tab-image">
<qrcode-vue
:value="item.singleProductId == '' ? item.productId + '&' + item.boxNo : item.singleProductId + '&' + item.boxNo"
:size="size" :foreground="color" level="H" />
</div>
</div>
</div>
</div>
<div style="width: 0;height: 0;overflow: hidden">
<button ref="printLackGoodsBtn" style="display: none;"
v-print="getPrintObj('printLackGoodsArea')"></button>
<div id="printLackGoodsArea" class="objectDialogFlowPrint">
<div class="pageWarp" v-for="item in lackGoodsForPrint">
<div class="print-tab-full">
<div class="print-row-big">料盒{{ item.boxNo }}</div>
<div class="print-row-big">料号{{ item.goodsId }}</div>
<div class="print-row-big">需求{{ item.needNum }}</div>
<div class="print-row-big">缺料{{ item.needNum - item.finishNum }}</div>
</div>
</div>
</div>
</div>
</div>
</el-container>
</el-config-provider>
</template>
<script setup>
import store from '@/store'
import QrcodeVue from 'qrcode.vue'
import zhCn from 'element-plus/dist/locale/zh-cn.mjs'
import { queryKateWorks, initWorks, getCurrentWorks, confirmCurrentWork, getBoxesAndLacks, queryWorkingGoodsByPage, getLackGoods } from '@/api/kateWork.js'
import { errorBox, successBox, warningBox } from '@/utils/myMessageBox.js'
import { ElMessage } from 'element-plus'
import { dateFormatter } from '@/utils/formatter.js'
import { nextTick, onBeforeUnmount, onMounted, reactive, ref, watch } from 'vue'
import { printObj, labelPosition, shortcuts, getPrintObj } from '@/constant/form'
import { loading } from '@/utils/loading'
import { genTableRequest } from '@/utils/generator.js'
import { useRoute } from 'vue-router'
const standId = store.getters.getStandId
const userName = store.getters.getUserName
let storeKittingWork = store.getters.getKittingWork
let timer = ref()
let optionLoading = ref(false)
let workOptions = reactive({
workOrder: [],
singleProductId: [],
boxNo: [],
goodsId: []
})
let workFormRef = ref()
let workFormEntity = reactive({
workOrder: '',
productIdOrigin: '',
productId: '',
singleProductId: '',
boxNo: '',
goodsId: '',
planStartDate: null
})
let workFormQuery = reactive({
workOrder: '',
singleProductId: '',
boxNo: '',
goodsId: '',
})
const rules = reactive({
workOrder: [
{ required: true, message: '请选择工单号。' }
]
})
let confirmRef = ref()
let confirmEntity = reactive({
workOrder: storeKittingWork.workOrder,
productId: storeKittingWork.productId,
singleProductId: storeKittingWork.singleProductId,
boxNo: storeKittingWork.boxNo
})
let confirmRules = reactive({})
let boxShowFlag = ref(false)
let boxSummary = ref([])
let goodsLackSummary = ref([])
let pauseGetWorkFlag = ref(false)
let printTabs = ref([])
let currentBoxGoodsList = ref([])
let baseTableQuery = reactive({
currentPage: 1,
pageSize: 5,
total: 0,
sortBy: new Map([['goodsId', true]]),// 按照料号顺序排序
standId: store.getters.getStandId,
userName: store.getters.getUserName
})
let lackGoodsForPrint = ref([])
const printBtn = ref()
const printLackGoodsBtn = ref()
const confirmReleaseBtn = ref()
const size = ref(35)
const color = ref('#000000')
const route = useRoute()// 路由
// 系统
onMounted(() => {
nextTick(() => {
initWorkOptions()
searchKittingGoods()
timer.value = setInterval(() => {
timerTask_1()
}, 1000)
// 监听enter键
window.addEventListener('keydown', solveEnterKey)
})
})
onBeforeUnmount(() => {
clearInterval(timer.value)
window.removeEventListener('keydown', solveEnterKey)
})
// 监视路由
watch(() => route.path, (newVal, oldVal) => {
if (newVal == '/kitting') {
timer.value = setInterval(() => {
timerTask_1()
}, 1000)
// 监听enter键
window.addEventListener('keydown', solveEnterKey)
} else {
clearInterval(timer.value)
window.removeEventListener('keydown', solveEnterKey)
}
})
watch(() => workFormEntity.workOrder, (newVal, oldVal) => {
if (newVal == '') {
workFormEntity.productIdOrigin = ''
workFormEntity.productId = ''
workFormEntity.singleProductId = ''
workFormEntity.boxNo = ''
workFormEntity.goodsId = ''
}
})
watch(() => workFormEntity.productId, (newVal, oldVal) => {
if (newVal != oldVal) {
workFormEntity.singleProductId = ''
workFormEntity.boxNo = ''
workFormEntity.goodsId = ''
}
})
watch(() => workFormEntity.singleProductId, (newVal, oldVal) => {
if (newVal != oldVal) {
workFormEntity.boxNo = ''
workFormEntity.goodsId = ''
}
})
watch(() => workFormEntity.boxNo, (newVal, oldVal) => {
if (newVal != oldVal) {
workFormEntity.goodsId = ''
}
})
// 定时器任务1
const timerTask_1 = () => {
// 查询工作
getWork()
// 判断是否需要显示料盒信息
ifNeedShowBoxSummary()
}
// 自定义方法
const solveEnterKey = (e) => {
if (e.key.toLocaleLowerCase() == 'enter') {
confirmReleaseBtn.value.$el.click()
}
}
// 初始化工单options
const initWorkOptions = () => {
const request = {
workOrder: workFormQuery.workOrder != '' ? workFormQuery.workOrder : workFormEntity.workOrder,
singleProductId: workFormQuery.singleProductId != '' ? workFormQuery.singleProductId : workFormEntity.singleProductId,
boxNo: workFormQuery.boxNo != '' ? workFormQuery.boxNo : workFormEntity.boxNo,
goodsId: workFormQuery.goodsId != '' ? workFormQuery.goodsId : workFormEntity.goodsId,
planStartDate: dateFormatter(workFormEntity.planStartDate)
}
optionLoading.value = true
queryKateWorks(request).then(res => {
const response = res.data
if (response.code == 0) {
workOptions.workOrder = response.data.workOrder
// 设置成品号
workFormEntity.productIdOrigin = response.data.productIdOrigin
workFormEntity.productId = response.data.productId
workOptions.singleProductId = response.data.singleProductId
workOptions.boxNo = response.data.boxNo
workOptions.goodsId = response.data.goodsId
} else {
workOptions.workOrder = []
// 重置成品号
workFormEntity.productIdOrigin = ''
workFormEntity.productId = ''
workOptions.singleProductId = []
workOptions.boxNo = []
workOptions.goodsId = []
}
}).catch(err => {
console.log(err)
errorBox('查询选项错误。')
}).finally(() => {
optionLoading.value = false
})
}
// 重置参数
const resetWorkFormQuery = () => {
workFormQuery.workOrder = ''
workFormQuery.singleProductId = ''
workFormQuery.boxNo = ''
workFormQuery.goodsId = ''
workFormEntity.workOrder = ''
workFormEntity.productIdOrigin = ''
workFormEntity.productId = ''
workFormEntity.singleProductId = ''
workFormEntity.boxNo = ''
workFormEntity.goodsId = ''
}
// 确认配料
const confirmStart = () => {
const request = {
workOrder: workFormEntity.workOrder,
singleProductId: workFormEntity.singleProductId,
boxNo: workFormEntity.boxNo,
goodsId: workFormEntity.goodsId,
standId: standId,
userName: userName
}
loading.open()
initWorks(request).then(res => {
const response = res.data
if (response.code == 0) {
ElMessage.success(response.message)
setTimeout(() => {
showBoxSummary()
searchKittingGoods()
}, 2000)
} else {
errorBox(response.message)
}
}).catch(err => {
console.log(err)
errorBox('请求错误。')
}).finally(() => {
loading.close()
})
}
// 显示料盒总览
const showBoxSummary = () => {
if (boxShowFlag.value) {
return
}
boxSummary.value = []
goodsLackSummary.value = []
// 请求
const request = {
standId: standId,
userName: userName
}
getBoxesAndLacks(request).then(res => {
const response = res.data
if (response.code == 0) {
const boxDetailVo = response.data
// 获得打印标签数据
getPrintTabs(boxDetailVo.boxSummary)
// 料盒显示数据
boxSummary.value = [boxDetailVo.boxSummary]
goodsLackSummary.value = boxDetailVo.goodsLackSummary
boxShowFlag.value = true
} else {
errorBox(response.message)
}
}).catch(error => {
console.log(error)
errorBox('发生异常:' + error)
})
}
// 关闭弹窗
const closeBoxSummary = () => {
boxSummary.value = []
goodsLackSummary.value = []
boxShowFlag.value = false
}
// 获取工作信息
const getWork = () => {
if (pauseGetWorkFlag.value) {
return
}
const request = {
standId: standId,
userName: userName
}
getCurrentWorks(request).then(res => {
const response = res.data
if (response.code == 0) {
// 设置form
confirmEntity.workIndex = response.data.orderConfirm.workIndex
confirmEntity.workOrder = response.data.orderConfirm.workOrder
confirmEntity.productId = response.data.orderConfirm.productId
confirmEntity.singleProductId = response.data.orderConfirm.singleProductId
confirmEntity.boxNo = response.data.orderConfirm.boxNo
confirmEntity.goodsId = response.data.orderConfirm.goodsId
confirmEntity.planPickQty = response.data.orderConfirm.planPickQty
confirmEntity.realPickQty = response.data.orderConfirm.realPickQty
confirmEntity.stockId = response.data.stockConfirm.stockId
confirmEntity.vehicleId = response.data.stockConfirm.vehicleId
confirmEntity.planRemainQty = response.data.stockConfirm.planRemainQty
confirmEntity.realRemainQty = response.data.stockConfirm.realRemainQty
confirmEntity.isOut = response.data.stockConfirm.isOut
confirmEntity.putArea = response.data.stockConfirm.putArea
confirmEntity.warningQty = response.data.stockConfirm.warningQty
pauseGetWorkFlag.value = true
// 如果剩余数量低于预警值,弹框报警
if (confirmEntity.isOut == 0 && confirmEntity.planRemainQty <= confirmEntity.warningQty) {
warningBox('剩余数量低于预警值,请清点库存数量。')
}
} else if (response.code == 400) {
// 警告,弹框
pauseGetWorkFlag.value = true
warningBox(response.message)
} else {
if (response.data != null && response.data.orderConfirm != null) {
confirmEntity.workOrder = response.data.orderConfirm.workOrder
confirmEntity.boxNo = response.data.orderConfirm.boxNo
confirmEntity.productId = response.data.orderConfirm.productId
confirmEntity.singleProductId = response.data.orderConfirm.singleProductId
} else {
confirmEntity.workOrder = ''
confirmEntity.boxNo = ''
confirmEntity.productId = ''
confirmEntity.singleProductId = ''
}
}
}).catch(err => {
console.log(err)
pauseGetWorkFlag.value = true
errorBox('请求错误,请检查完原因后刷新界面。')
})
}
// 是否弹出料盒界面
const ifNeedShowBoxSummary = () => {
if (storeKittingWork.workOrder != '') {
// 需要弹出上一个料盒的缺料打印信息
if (confirmEntity.workOrder != storeKittingWork.workOrder
|| confirmEntity.productId != storeKittingWork.productId
|| confirmEntity.singleProductId != storeKittingWork.singleProductId
|| confirmEntity.boxNo != storeKittingWork.boxNo) {
printLacks(storeKittingWork.workOrder, storeKittingWork.productId, storeKittingWork.singleProductId, storeKittingWork.boxNo)
if (confirmEntity.workOrder == '') {
// 说明当前工单工作已完成,需要弹框提示工作已完成
successBox('当前工单已完成。')
} else if (confirmEntity.boxNo != storeKittingWork.boxNo) {
// 前一个料盒已完成,需要弹框提示料盒已完成
showBoxSummary()
}
// 替换store
storeKittingWork.workOrder = confirmEntity.workOrder
storeKittingWork.productId = confirmEntity.productId
storeKittingWork.singleProductId = confirmEntity.singleProductId
storeKittingWork.boxNo = confirmEntity.boxNo
searchKittingGoods()
}
} else {
// 替换store
storeKittingWork.workOrder = confirmEntity.workOrder
storeKittingWork.productId = confirmEntity.productId
storeKittingWork.singleProductId = confirmEntity.singleProductId
storeKittingWork.boxNo = confirmEntity.boxNo
}
store.commit('mutationKittingWork', storeKittingWork)
}
// 确认放行
const confirmOrRelease = () => {
const request = {
orderConfirm: {
workIndex: confirmEntity.workIndex,
workOrder: confirmEntity.workOrder,
productId: confirmEntity.productId,
singleProductId: confirmEntity.singleProductId,
boxNo: confirmEntity.boxNo,
goodsId: confirmEntity.goodsId,
planPickQty: confirmEntity.planPickQty,
realPickQty: confirmEntity.realPickQty
},
stockConfirm: {
stockId: confirmEntity.stockId,
vehicleId: confirmEntity.vehicleId,
goodsId: confirmEntity.goodsId,
planRemainQty: confirmEntity.planRemainQty,
realRemainQty: confirmEntity.realRemainQty,
isOut: confirmEntity.isOut,
putArea: confirmEntity.putArea
},
standId: standId,
userName: userName
}
confirmCurrentWork(request).then(res => {
const response = res.data
if (response.code == 0) {
// 设置form
resetConfirmEntity()
// 继续刷新
pauseGetWorkFlag.value = false
ElMessage.success(response.message)
} else if (response.code == 400) {
// 设置form
resetConfirmEntity()
// 警告
pauseGetWorkFlag.value = false
warningBox(response.message)
} else {
// 错误
errorBox(response.message)
}
}).catch(err => {
console.log(err)
errorBox('请求错误,请检查完原因后刷新界面。')
}).finally(() => {
// 刷新一下物料显示
searchKittingGoods()
})
}
const resetConfirmEntity = () => {
confirmEntity.workIndex = ''
confirmEntity.goodsId = ''
confirmEntity.planPickQty = null
confirmEntity.realPickQty = null
confirmEntity.stockId = ''
confirmEntity.vehicleId = ''
confirmEntity.planRemainQty = null
confirmEntity.realRemainQty = null
confirmEntity.isOut = null
confirmEntity.putArea = ''
confirmEntity.warningQty = null
}
// 当拣选数量修改时,要对应的修改
const changePlanQty = () => {
if (confirmEntity.isOut == 0 && confirmEntity.realPickQty != confirmEntity.planPickQty) {
// 修正量
const changeQty = confirmEntity.realPickQty - confirmEntity.planPickQty
// 修正实际剩余数量
confirmEntity.realRemainQty = confirmEntity.planRemainQty - changeQty
}
}
const requestPrint = () => {
nextTick(() => {
printBtn.value.click()
});
}
// 获得打印数据
const getPrintTabs = (boxSummary) => {
printTabs.value = []
if (boxSummary != undefined) {
for (let i = 1; i <= boxSummary.boxQty; i++) {
printTabs.value.push(
{
workOrder: boxSummary.workOrder,
productId: boxSummary.productIdOrigin,
singleProductId: boxSummary.singleProductId,
boxNo: boxSummary.boxNo,
kittingDate: boxSummary.kittingDate,
produceDate: boxSummary.produceDate,
testNo: boxSummary.testNo,
productionQty: boxSummary.productionQty,
}
)
}
}
}
// 查询配料单
const searchKittingGoods = () => {
let request = genTableRequest(baseTableQuery)
request.workOrder = confirmEntity.workOrder
request.productId = confirmEntity.productId
request.singleProductId = confirmEntity.singleProductId
request.boxNo = confirmEntity.boxNo
queryWorkingGoodsByPage(request).then(res => {
const response = res.data
if (response.code == 0) {
const data = response.data
if (data != null) {
currentBoxGoodsList.value = data.lists
baseTableQuery.total = data.total
} else {
currentBoxGoodsList.value = []
baseTableQuery.total = 0
}
}
}).catch(err => {
console.log(err)
})
}
// 处理排序
const handleSortChange = (data) => {
if (baseTableQuery.sortBy.has(data.prop)) {
baseTableQuery.sortBy.delete(data.prop)
}
baseTableQuery.sortBy.set(data.prop, data.order == 'ascending')
searchKittingGoods()
}
// 打印上一个料盒的缺料信息
const printLacks = (workOrder, productId, singleProductId, boxNo) => {
const request = {
workOrder: workOrder,
productId: productId,
singleProductId: singleProductId,
boxNo: boxNo,
standId: standId,
userName: userName
}
getLackGoods(request).then(res => {
const response = res.data
if (response.code == 0) {
lackGoodsForPrint.value = response.data
nextTick(() => {
printLackGoodsBtn.value.click()
});
}
}).catch(err => {
console.log(err)
})
}
</script>
<style scoped>
.content {
display: flex;
width: 100%;
}
.work-area {
width: 100%;
/* padding: 5px; */
}
.main-area {
margin: auto;
min-height: fit-content;
max-height: 90%;
margin-bottom: 10px;
min-width: inherit;
border: solid 1px;
border-radius: 10px;
box-shadow: 0px 15px 10px -15px #000;
overflow: auto;
padding: 10px;
}
.confirm-area {
margin: auto;
min-height: fit-content;
max-height: 90%;
margin-bottom: 10px;
min-width: inherit;
border: solid 1px;
border-radius: 10px;
box-shadow: 0px 15px 10px -15px #000;
overflow: auto;
padding: 10px;
}
.title-area {
display: flex;
/* min-height: 10%; */
max-height: max-content;
margin-bottom: 10px;
min-width: inherit;
border: solid 1px;
border-radius: 10px;
box-shadow: 0px 15px 10px -15px #000;
overflow: auto;
}
.table-area {
margin: auto;
min-height: fit-content;
max-height: 60%;
margin-bottom: 10px;
min-width: inherit;
border: solid 1px;
border-radius: 10px;
box-shadow: 0px 15px 10px -15px #000;
overflow: auto;
padding: 10px;
}
.el-form-item {
margin: 10px 5px 10px 5px;
}
.el-form-item .el-input {
width: 196px;
}
.table-class {
margin: 5px 5px 5px 5px;
width: inherit;
}
@media print {
@page {
size: auto;
margin-top: 0;
margin-bottom: 0;
margin-left: 0;
margin-right: 0;
}
body,
html {
height: auto !important;
}
}
.objectDialogFlowPrint {
width: 100% !important;
height: 100% !important;
}
.objectDialogFlowPrint .pageWarp {
/*这句话很重要,控制时候强制分页 https://www.w3school.com.cn/cssref/pr_page-break-after.asp*/
page-break-after: always;
width: 100%;
height: 100%;
text-align: center;
padding: 0;
display: flex;
print-color-adjust: exact;
}
.print-tab-text {
width: 40%;
align-content: center;
}
.print-tab-image {
width: 20%;
align-content: center;
}
.print-row-normal {
margin: 8px 3px 8px 3px;
font-size: 13px;
font-weight: bold;
text-align: left;
}
.print-tab-full {
width: 90%;
align-content: center;
}
.print-row-big {
margin: 8px 3px 8px 3px;
font-size: 20px;
font-weight: bold;
text-align: left;
}
</style>