Browse Source

修改标题显示2024/7/18 10:33:31

hella_vue3
zhang_li 3 months ago
parent
commit
ec66fc3df6
  1. 17
      src/api/request2.js
  2. 17
      src/common/basic.js
  3. 19
      src/common/style/new_style.css
  4. 32
      src/pages.json
  5. 466
      src/pages/fg/coms/comReceiptPopup.vue
  6. 176
      src/pages/fg/receiptByPlan.vue
  7. 134
      src/pages/productReceipt/job/ccProductReceiptDetail.vue
  8. 12
      src/pages/productReceipt/job/ccProductReceiptJob.vue
  9. 2
      src/pages/purchaseReturn/coms/comReturnRequestCard.vue
  10. 4
      src/pages/purchaseReturn/record/returnRecord.vue
  11. 2
      src/pages/purchaseReturn/request/returnRequestCreate.vue

17
src/api/request2.js

@ -2630,4 +2630,21 @@ export function getBalanceByParams(data) {
export function getBusinessType() {
return http.get("/wms/businesstype/page?pageSize=1000&pageNo=1")
}
/**
* 获取生产计划信息通过生产线和日期
* @param {*}
*/
export function getPlaneInfoByproductLine(productionLine,planDate) {
return http.get("/wms/production-main/getPlanProductionByProductionLineAndPlanDate?productionLine="+productionLine+"&planDate="+planDate)
}
/**
*
* @param {*}
*/
export function planReceiptSubmit(data) {
return http.post("/wms/production-main/getPlanProductionByProductionLineAndPlanDate",data)
}

17
src/common/basic.js

@ -37,6 +37,7 @@ export function clearCacheData() {
scrapReasonList = [];
inspectFailedReasonList = [];
switchList=[]
businessList = []
}
@ -352,8 +353,8 @@ export function getSwitchInfoByCode(code) {
break;
}
}
isCheck =resultInfo.effectiveSetValue=="TRUE"?true:false
return isCheck;
isCheck = resultInfo.effectiveSetValue == "TRUE" ? true : false
return isCheck;
}
//获取业务类型名称
@ -857,6 +858,18 @@ export function getBatch() {
var batch = year.toString() + month.toString() + day.toString()
return batch;
}
//20270717
export function getBatch8() {
var date = new Date();
//获取日期部分
var year = date.getFullYear(); //年
var month = date.getMonth() + 1; //月
var day = date.getDate(); //日
month = month < 10 ? "0" + month : month;
day = day < 10 ? "0" + day : day;
return year + month + day;
}
export function getCurrDate() {
var date = new Date();

19
src/common/style/new_style.css

@ -2448,7 +2448,24 @@ button[disabled] {
padding-right: 20rpx;
z-index: 10;
}
.btn_single_clear{
background-color: #fff;
font-size: 30rpx;
color: #000;
text-align: center;
width: 180rpx;
}
.btn_single_clear{
background-color: #fff;
font-size: 30rpx;
color: #000;
text-align: center;
width: 180rpx;
}
.btn_clear_after {
opacity: 0.7;
}
.btn_single_commit {
background-color: #3C9CFF;
font-size: 30rpx;

32
src/pages.json

@ -1009,7 +1009,39 @@
"enablePullDownRefresh": false
}
},
{
"path": "pages/productReceipt/job/ccProductReceiptJob",
"style": {
"navigationBarTitleText": "装配报工收货任务",
"enablePullDownRefresh": true,
"titleNView": {
// "autoBackButton": "true",
"buttons": [
//
{
"float": "right",
"fontSize": "58rpx", //
"text": "\ue696",
"fontSrc": "/static/ali_icon/iconfont.ttf"
},
{
"float": "right",
"fontSize": "52rpx", //
"text": "\ue6e2",
"fontSrc": "/static/ali_icon/iconfont.ttf"
}
]
}
}
},
{
"path": "pages/productReceipt/job/ccProductReceiptDetail",
"style": {
"navigationBarTitleText": "装配完工收货详情",
"enablePullDownRefresh": false
}
},
{
"path": "pages/productReceipt/job/scrapReceiptJob",
"style": {

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

@ -12,39 +12,62 @@
<view class="split_line"></view>
<view class="uni-flex uni-column" style="background-color: white">
<view class="uni-flex uni-column">
<view class="uni-flex uni-row padding title u-col-center" style="width: 100%">
<view class="" style="width: 25%">
<text>生产线</text>
<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="single-column" :list="productLineList" @confirm="confirmSelectLine"></u-select>
<view class="">
<uni-combox :candidates="productLineList" v-model="productLineCode" placeholder="请扫描来源库位" @confirm="handleConfirm" style="height: 30rpx; border: 1px solid #fff"></uni-combox>
<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 padding" style="display: flex">
<text style="flex-shrink: 0">物料</text>
<view class="" style="width: 100%">
<view class="title" style="display: flex; align-items: center; padding: 10rpx">
<text style="flex-shrink: 0; width: 25%">物料代码</text>
<view class="customerBorder">
{{ itemCode }}
</view>
<u-select v-model="showItemCodeSelect" mode="single-column" :list="itemCodeList" @confirm="confirmSelectItem"></u-select>
<view class="">
<image src="/static/search.svg" mode="" style="width: 40rpx; height: 40rpx; margin-left: 20rpx" @click="itemCodeClick"> </image>
<image src="/static/icons/down.svg" mode="" style="width: 40rpx; height: 40rpx; margin-left: 20rpx" @click="showSelectItemCode"> </image>
</view>
</view>
<view class="split_line"></view>
<view class="uni-flex uni-row padding title u-col-center">
<text>数量 </text>
<view class="uni-flex uni-row uni-center" style="display: flex; align-items: center; margin-left: 20rpx; justify-content: center">
<input style="text-align: center" class="qty_input" v-model="counQty" type="number" @confirm="confirm()" :focus="numberFocus" @input="checkNum" :maxlength="maxlength" />
<uom :uom="uom"></uom>
<view class="" v-if="stdPackInfo != undefined" style="display: flex; flex-direction: row; margin-left: 10rpx"> (<packQty :dataContent="stdPackInfo"></packQty>) </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="title" style="display: flex; align-items: center; padding: 10rpx">
<text style="flex-shrink: 0; width: 25%">计划数量</text>
<view class="customerBorder">
{{ planQty }}
</view>
<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">
{{ packUnit }}
</view>
<u-select v-model="showPackUnitSelect" mode="mutil-column-auto" :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>
</view>
</view>
@ -54,14 +77,16 @@
</view>
</view>
</uni-popup>
<win-scan-item ref="scanPopup" title="物料代码" @getScanResult="getItemScanResult" :itemCodeTypeList="itemCodeTypeList"> </win-scan-item>
<comMessage ref="comMessage"></comMessage>
</view>
</template>
<script>
import { getBasicItemByCode, getProductionlineItem, getWorkShopLineStation, getWarehouseCodeList } from '@/api/request2.js'
import { getLocationTypeName, getListLocationTypeDesc, checkDirectoryItemExist } from '@/common/directory.js'
import { getIssueJobByProductionline, getPlaneInfoByproductLine, getPackUnitByItemCode } from '@/api/request2.js'
import { getPackUnitName, getUomInfo } from '@/common/directory.js'
import { getCurrDate, getBatch8 } from '@/common/basic.js'
import uom from '@/mycomponents/qty/uom.vue'
import packQty from '@/mycomponents/qty/packQty.vue'
import balanceStatus from '@/mycomponents/status/balanceStatus.vue'
@ -76,42 +101,56 @@ export default {
},
data() {
return {
workshopCode: '', //
workShopName: '',
productionLineCode: '', // 线
productionLineName: '',
workStationCode: '', //
workStationName: '',
itemCode: '请扫描物料信息',
fromWarehouseCode: '请选择仓库代码',
itemName: '',
qty: 0,
rawLocationCode: '',
fgLocationCode: '',
itemCodeFocus: false,
requestInfo: null,
itemCodeList: [],
counQty: undefined,
editPosition: true,
numberFocus: false,
itemCode: '请选择物料信息',
uom: '',
positionInfo: '请选择位置',
show: false,
isModifiedPosition: true,
positionList: [],
stdQty: 0, //
maxlength: 10,
stdPackInfo: undefined,
wareHouseList: [],
showWareHouse: false,
planQty: 0,
number: '',
productLineCode: '',
showProductLineSelect: false,
productLineList: [],
productLineCode: ''
productionLineName: '请选择生产线',
productionLineCode: '',
batch: '',
packUnit: '请选择包装规格',
showPackUnitSelect: false,
itemCodeList: [],
showItemCodeSelect: false,
packUnitList: [
{
value: 1,
label: '中国',
children: [
{
value: 2,
label: '广东'
},
{
value: 5,
label: '广西'
}
]
},
{
value: 8,
label: '美国',
children: [
{
value: 9,
label: '纽约'
},
{
value: 10,
label: '华盛顿'
}
]
}
]
}
},
props: {
title: {
type: String,
default: '完工信息'
default: '开工阶段'
},
itemCodeTypeList: {
type: Array,
@ -119,244 +158,202 @@ export default {
}
},
methods: {
checkNum(e) {
const { value } = e.detail
const dot = value.indexOf('.') //
const reg = /^[0-9]+$/ //
if (dot > -1) {
this.maxlength = dot + 7 //
if (value.length > dot + 7) {
}
}
if (reg.test(value)) {
//
this.maxlength = 10
}
this.change(value)
},
openRequestPopup(editPosition) {
if (this.positionList.length == 0) {
getWorkShopLineStation()
.then((res) => {
if (res.data != null && res.data.length > 0) {
this.positionList = res.data
} else {
this.showErrorMessage('未查找到位置信息')
}
})
.catch((error) => {
this.showErrorMessage(error)
})
}
this.editPosition = editPosition
if (this.isModifiedPosition) {
this.isModifiedPosition = false
} else {
this.itemCode = '请扫描物料信息'
this.show = false
this.showWareHouse = false
this.uom = ''
this.qty = 0
this.stdPackInfo = undefined
this.counQty = undefined
this.numberFocus = false
this.itemCodeGetFocus()
}
setTimeout((res) => {
this.$refs.popup.open('bottom')
}, 500)
openRequestPopup() {
this.initData()
this.batch = getBatch8()
this.$refs.popup.open('bottom')
},
initData() {
this.positionList = []
;(this.wareHouseList = []), (this.showWareHouse = false)
this.editPosition = true
this.itemCode = '请扫描物料信息'
this.rawLocationCode = ''
this.positionInfo = '请选择位置'
this.fromWarehouseCode = '请选择仓库代码'
this.workshopCode = '' //
this.workShopName = ''
this.productionLineCode = '' // 线
this.productionLineName = ''
this.workStationCode = '' //
this.workStationName = ''
this.show = false
this.itemCode = '请选择物料信息'
this.uom = ''
this.qty = 0
this.stdPackInfo = undefined
this.counQty = undefined
this.numberFocus = false
this.planQty = 0
this.number = ''
this.productLineCode = ''
this.showProductLineSelect = false
this.productLineList = []
this.productionLineName = '请选择生产线'
this.productionLineCode = ''
this.batch = ''
this.packUnit = '请选择包装规格'
this.showPackUnitSelect = false
// this.packUnitList = []
this.itemCodeList = []
this.showItemCodeSelect = false
},
closeRequestPopup() {
this.$refs.popup.close()
},
locationConfirm() {
//
this.checkLocatioCode()
},
itemCodeClick() {
this.$refs.scanPopup.openScanPopup()
},
itemCodeGetFocus() {
this.itemCodeFocus = true
},
itemCodeLoseFocus() {
this.itemCodeFocus = false
},
confirm() {
if (this.positionInfo == '请选择位置') {
this.showErrorMessage('请选择位置')
if (this.productionLineName == '请选择生产线') {
this.showErrorMessage('请选择生产线')
return
}
if (this.fromWarehouseCode == '请选择仓库代码') {
this.showErrorMessage('请选择仓库代码')
if (!this.batch) {
this.showErrorMessage('请输入批次例如:20200101')
return
}
if (this.itemCode == '请扫描物料信息') {
this.showErrorMessage('请输入物料', 'itemCode')
return
}
if (this.counQty == undefined) {
this.showErrorMessage('请输入数量')
if (this.itemCode == '请选择物料信息') {
this.showErrorMessage('请选择物料信息')
return
}
if (this.qty == 0) {
this.showErrorMessage('数量必须大于0')
if (this.itemCode == '请选择包装规格') {
this.showErrorMessage('请选择包装规格')
return
}
if (this.rawLocationCode == '') {
this.showErrorMessage(`${this.workStationName}的原材料库位为空`)
return
}
this.callback('add')
this.callback()
},
callback(action) {
callback() {
const item = {
positionInfo: this.positionInfo,
workshopCode: this.workshopCode, //
workShopName: this.workShopName,
productionLineCode: this.productionLineCode, // 线
productionLineName: this.productionLineName,
workStationCode: this.workStationCode, //
workStationName: this.workStationName,
rawLocationCode: this.rawLocationCode,
fgLocationCode: this.fgLocationCode,
fromWarehouseCode: this.fromWarehouseCode,
toWarehouseCode: this.fromWarehouseCode,
productionLineCode: this.productionLineCode, // 线
itemCode: this.itemCode,
itemName: this.itemName,
uom: this.uom,
qty: this.qty
batch: this.batch,
packUnit: 'packUnit',
planQty: this.planQty,
number: this.number
}
this.closeRequestPopup()
this.$emit('confirm', action, item)
this.$emit('confirm', 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.$refs.comMessage.showErrorMessage(message, (res) => {})
})
},
change(value) {
this.qty = value
},
cancel(e) {
this.closeRequestPopup()
},
showSelect() {
if (this.editPosition) {
this.show = true
}
confirmSelectLine(data) {
this.productionLineName = data[0].label
this.productionLineCode = data[0].value
},
showWarseHouseSelect() {
if (this.editPosition) {
this.wareHouseClick()
showSelectLine() {
if (this.productLineList.length == 0) {
uni.showLoading({
title: '加载中',
mask: true
})
getIssueJobByProductionline()
.then((res) => {
uni.hideLoading()
if (res.data && res.data.length > 0) {
res.data.forEach((item) => {
item.label = item.name
})
this.productLineList = res.data
this.showProductLineSelect = true
} else {
this.showErrorMessage('未查找到生产线信息')
}
})
.catch((error) => {
uni.hideLoading()
this.showErrorMessage(error)
})
} else {
this.showProductLineSelect = true
}
},
showSelectItemCode() {
if (!this.productionLineCode) {
this.showErrorMessage('请先选择生产线')
return
}
confirmSelect(e) {
this.positionInfo = `${e[0].label}-${e[1].label}-${e[2].label}`
console.log('位置', this.positionInfo)
this.workshopCode = e[0].value
this.productionLineCode = e[1].value
this.workStationCode = e[2].value
this.workShopName = e[0].label
this.productionLineName = e[1].label
this.workStationName = e[2].label
const shop = this.positionList.find((shop) => shop.value == this.workshopCode)
if (shop != undefined && shop.children != undefined) {
const prodLine = shop.children.find((line) => line.value == this.productionLineCode)
if (prodLine != undefined && prodLine.children != undefined) {
const station = prodLine.children.find((r) => r.value == this.workStationCode)
if (station.rawLocationCode == '' && station.rawLocationCode == null) {
this.showErrorMessage(`${this.workStationName}的原材料库位为空,请重新选择`)
} else {
this.rawLocationCode = station.rawLocationCode
this.fgLocationCode = station.fgLocationCode
}
} else {
this.showErrorMessage('生产线-工位基础信息维护错误')
}
if (this.itemCodeList.length == 0) {
console.log('当天', getCurrDate())
uni.showLoading({
title: '加载中',
mask: true
})
getPlaneInfoByproductLine(this.productionLineCode, getCurrDate())
.then((res) => {
uni.hideLoading()
if (res.data && res.data.length > 0) {
res.data.forEach((item) => {
item.label = item.itemCode
})
this.itemCodeList = res.data
this.showItemCodeSelect = true
} else {
this.showErrorMessage('未查找到物料信息')
}
})
.catch((error) => {
uni.hideLoading()
this.showErrorMessage(error)
})
} else {
this.showErrorMessage('车间-生产线基础信息维护错误')
this.showItemCodeSelect = true
}
},
getItemScanResult(code, scanResult) {
this.itemCode = code
this.itemName = scanResult.name
this.uom = scanResult.uom
this.stdPackInfo = scanResult.package
this.numberFocus = true
confirmSelectItem(data) {
this.itemCode = data[0].label
const item = this.itemCodeList.find((res) => res.itemCode == this.itemCode)
this.uom = item.uom
this.planQty = item.planQty
this.number = item.number
},
wareHouseClick() {
uni.showLoading({
title: '查询中....',
mask: true
})
getWarehouseCodeList(1, 100)
.then((res) => {
uni.hideLoading()
if (res.data != null && res.data.list.length > 0) {
res.data.list.forEach((item) => {
item.value = item.code
item.label = item.name
})
this.wareHouseList = res.data.list
this.showWareHouse = true
} else {
this.showErrorMessage('未查找到仓库代码')
}
})
.catch((error) => {
uni.hideLoading()
this.showErrorMessage(error)
showSelectPackUnit() {
if (this.packUnitList.length == 0) {
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)
})
} else {
this.showPackUnitSelect = true
}
},
confirmWareHouse(e) {
this.fromWarehouseCode = e[0].value
confirmSelectPackUnit(data) {
const pack = this.packUnitList.filter((r) => r.packUnit == data[0].value)[0]
// this.packUnit = pack.packQty;
this.packUnit = data[0].label
},
getUomInfo(uom) {
const item = getUomInfo(uom)
if (item == '') {
return uom
}
return item.label
}
}
}
@ -366,4 +363,11 @@ export default {
.title {
font-size: 30rpx;
}
.customerBorder {
width: 100%;
border: 1rpx solid lightgray;
border-radius: 5rpx;
padding: 15rpx;
}
</style>

176
src/pages/fg/receiptByPlan.vue

@ -1,21 +1,187 @@
<template>
<view class="">
<view class="page-wraper" style="background-color: #fff">
<view class="">
<com-blank-view @goScan="openFg" v-if="detailSource.length == 0"></com-blank-view>
<com-blank-view @goScan="openFg" v-if="!dataContent"></com-blank-view>
</view>
<view class="page-wraper" v-if="dataContent">
<view class="" style="font-size: 35rpx; padding: 10rpx; padding-left: 15rpx"> 生产计划{{ dataContent.number }} </view>
<view class="split_line"></view>
<view class="">
<item-qty :dataContent="dataContent" :isShowBalanceQty="false"></item-qty>
</view>
<view class="split_line"></view>
<view class="" style="margin-left: 20rpx">
<batch :batch="dataContent.batch"></batch>
<view class="card_view">
<text style="color: #ffa500; padding: 5px; font-size: 35rpx">包装规格</text>
<text class="card_content">{{ dataContent.packUnit }}</text>
</view>
</view>
<view class="split_line"></view>
<view class="page-main">
<uni-swipe-action>
<view class="scan_view" v-for="(item, index) in dataContent.subList" :key="index">
<uni-swipe-action-item :right-options="options" @click="swipeClick($event, item, index)">
<view class="" style="margin-left: 40rpx; padding-top: 10rpx; padding-bottom: 10rpx">
<text style="font-size: 35rpx; color: #b66463">唯一码</text>
<text style="font-size: 35rpx"> {{ item.code }}</text>
</view>
</uni-swipe-action-item>
</view>
</uni-swipe-action>
</view>
<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="uni-flex uni-row"> </view>
</view>
<view class="uni-flex uni-row">
<button class="btn_single_clear" style="margin-right: 50rpx" hover-class="btn_clear_after" @click="clear">清空</button>
<button class="btn_single_commit" hover-class="btn_commit_after" @click="commit">提交</button>
</view>
</view>
</view>
</view>
<comReceiptPopup ref="comReceiptPopupRef" @confirm="requestConfirm"></comReceiptPopup>
<win-scan-button v-if="dataContent" @goScan="openScanPopup"></win-scan-button>
<win-scan-fg-label ref="scanPopup" @getResult="getScanResult" title="制品标签"></win-scan-fg-label>
<com-message ref="comMessageRef" />
</view>
</template>
<script setup lang="ts">
import { ref, onMounted, nextTick, watch, getCurrentInstance } from 'vue'
import { ref, getCurrentInstance, nextTick } from 'vue'
import { onShow, onLoad, onNavigationBarButtonTap } from '@dcloudio/uni-app'
import { isCheckMesCode, planReceiptSubmit } from '@/api/request2.js'
import { getRemoveOption } from '@/common/basic.js'
import winScanButton from '@/mycomponents/scan/winScanButton.vue'
import comBlankView from '@/mycomponents/common/comBlankView.vue'
import comReceiptPopup from '@/pages/fg/coms/comReceiptPopup.vue'
import itemQty from '@/mycomponents/item/itemQty.vue'
import batch from '@/mycomponents/balance/batch.vue'
import pack from '@/mycomponents/balance/pack.vue'
import winScanFgLabel from '@/mycomponents/scan/winScanFgLabel.vue'
const dataContent = ref(null)
const options = ref([])
const scanPopup = ref()
const detailSource = ref([])
const comReceiptPopupRef = ref()
onLoad(() => {
options.value = getRemoveOption()
openFg()
})
const openFg = () => {
comReceiptPopupRef.value.openRequestPopup('')
setTimeout((res) => {
if (comReceiptPopupRef.value) {
comReceiptPopupRef.value.openRequestPopup()
}
}, 600)
}
const requestConfirm = (result) => {
dataContent.value = {
itemCode: result.itemCode,
number: result.number, //
handleQty: 0,
qty: result.planQty,
batch: result.batch,
packUnit: '3031',
uom: result.uom,
subList: [
{
code: '1234'
},
{
code: '12345'
}
]
}
}
const swipeClick = (e, dataContent, index) => {
if (e.content.text == '移除') {
dataContent.value.subList.splice(index, 1)
}
}
const commit = () => {
planReceiptSubmit(params)
.then((res) => {
uni.hideLoading()
if (res.data) {
showCommitSuccessMessage(res.data)
} else {
showErrorMessage(`提交失败[${res.msg}]`)
}
})
.catch((error) => {
uni.hideLoading()
showErrorMessage(error)
})
}
const openScanPopup = () => {
const { itemCode } = dataContent.value
// itemCode = "015553147"
console.log('物料', itemCode)
scanPopup.value.openScanPopup(itemCode)
}
const getScanResult = (result) => {
// TODO
// mes
isCheckMesCode(result.content)
.then((res) => {
if (res.data) {
if (dataContent.value) {
const list = dataContent.value.subList //
const itemIndex = list.findIndex(
(r) =>
r.itemCode == result.itemCode &&
// r.productDate == result.productDate &&
r.order == result.order
)
//
if (itemIndex == -1) {
list.push(result)
calcFgQty()
} else {
showErrorMessage(`标签【${result.content}】已经扫描,是否移除`, (confirm) => {
list.splice(itemIndex, 1)
calcFgQty()
})
}
setTimeout((r) => {
scanPopupGetFocus()
}, 500)
}
}
})
.catch((error) => {
showErrorMessage(error)
})
}
const calcFgQty = () => {
dataContent.value.handleQty = dataContent.value.subList.length
if (dataContent.value.handleQty == dataContent.value.qty) {
commit()
}
}
const scanPopupGetFocus = () => {
if (scanPopup.value) {
scanPopup.value.getfocus()
}
}
const scanPopupLoseFocus = () => {
if (scanPopup.value) {
scanPopup.value.losefocus()
}
}
const showCommitSuccessMessage = (hint) => {
comMessageRef.value.showSuccessMessage(hint, (res) => {
dataContent.value = null
openFg()
})
}
</script>

134
src/pages/productReceipt/job/ccProductReceiptDetail.vue

@ -83,6 +83,10 @@ import winScanPack from '@/mycomponents/scan/winScanPack.vue'
import comDetailCard from '@/mycomponents/detail/comDetailCard.vue'
import jobTop from '@/mycomponents/job/jobTop.vue'
import comProductDetailCard from '@/pages/productReceipt/coms/comProductDetailCard.vue'
import { useCountStore } from '@/store'
// store
const store = useCountStore()
const id= ref('')
const receiptJob= ref({})
const toLocationCode= ref('')
@ -102,10 +106,12 @@ const scanPopup= ref()
const comMessageRef= ref()
onLoad((option)=> {
setTimeout(res=>{
uni.setNavigationBarTitle({
title: `${option.title}详情`
})
},50)
id.value = option.id
scanedPackingNumber.value = option.scaned || ''
status.value = option.status || ''
@ -282,7 +288,7 @@ const comMessageRef= ref()
}
const showMessageHint(hint, callback) {
this.$refs.comMessage.showErrorMessage(hint, (res) => {
comMessageRef.value.showErrorMessage(hint, (res) => {
if (res) {
callback()
}
@ -290,39 +296,39 @@ const comMessageRef= ref()
}
const commit=() =>{
scanCount.value = getScanCount(subList.value)
if (this.scanCount == 0) {
this.showErrorMessage('扫描数为0,请先扫描')
if (scanCount.value == 0) {
showErrorMessage('扫描数为0,请先扫描')
return
}
//
if (!this.checkLocation()) {
if (!checkLocation()) {
return
}
//
if (this.scanCount == this.subList.length) {
if (this.checkCount()) {
this.submitJob()
if (scanCount.value == subList.value.length) {
if (checkCount()) {
submitJob()
}
} else if (this.scanCount < this.subList.length) {
} else if (scanCount.value < subList.value.length) {
//
if (this.jobContent.allowPartialComplete == 'TRUE') {
if (jobContent.value.allowPartialComplete == 'TRUE') {
//
if (this.checkCount()) {
this.submitJob()
if (checkCount()) {
submitJob()
}
} else {
//
this.showMessage('请完成扫描后,再进行提交<br>' + `已经扫描[${this.scanCount}]总共[${this.subList.length}]`)
showMessage('请完成扫描后,再进行提交<br>' + `已经扫描[${scanCount.value}]总共[${subList.value.length}]`)
}
}
},
}
checkCount() {
const checkCount=()=> {
let isCheck = true
let hint = ''
for (let i = 0; i < this.detailSource.length; i++) {
const item = this.detailSource[i]
for (let i = 0; i < detailSource.value.length; i++) {
const item =detailSource.value[i]
for (let j = 0; j < item.subList.length; j++) {
const subItem = item.subList[i]
if (calc.sub(subItem.handleQty, subItem.qty) < 0) {
@ -333,120 +339,118 @@ const comMessageRef= ref()
}
}
if (!isCheck) {
this.showQuestMessage(hint, (res) => {
showQuestMessage(hint, (res) => {
if (res) {
this.submitJob()
submitJob()
}
})
}
return isCheck
},
}
submitJob() {
const submitJob=() =>{
uni.showLoading({
title: '提交中....',
mask: true
})
const itemCodes = []
this.detailSource.forEach((item) => {
detailSource.value.forEach((item) => {
itemCodes.push(item.itemCode)
})
getManagementPrecisions(itemCodes, this.toLocationCode, (res) => {
getManagementPrecisions(itemCodes,toLocationCode.value, (res) => {
if (res.success) {
this.managementList = res.list
const params = this.setParams()
console.log('提交参数', JSON.stringify(params))
managementList.value = res.list
const params = setParams()
ccProductReceiptJobsubmit(params)
.then((res) => {
uni.hideLoading()
if (res.data) {
this.showCommitSuccessMessage(`提交成功<br>生成预生产收货记录<br>${res.data}`)
showCommitSuccessMessage("提交成功<br>生成装配收货记录<br>" + res.data )
} else {
this.showErrorMessage(`提交失败[${res.msg}]`)
showErrorMessage(`提交失败[${res.msg}]`)
}
})
.catch((error) => {
uni.hideLoading()
this.showErrorMessage(error)
showErrorMessage(error)
})
} else {
uni.hideLoading()
this.showErrorMessage(res.message)
showErrorMessage(res.message)
}
})
},
}
setParams() {
const setParams=() =>{
const subList = []
const creator = this.$store.state.user.id
const creator = store.id
this.detailSource.forEach((item) => {
detailSource.value.forEach((item) => {
item.subList.forEach((detail) => {
if (detail.scaned) {
const info = getPackingNumberAndBatch(this.managementList, detail.itemCode, detail.packingNumber, detail.batch)
const info = getPackingNumberAndBatch(managementList.value, detail.itemCode, detail.packingNumber, detail.batch)
detail.toPackingNumber = info.packingNumber
detail.toBatch = info.batch
detail.toContainerNumber = ''
detail.toInventoryStatus = detail.inventoryStatus
detail.toLocationCode = this.toLocationCode
detail.toLocationCode =toLocationCode.value
subList.push(detail)
}
})
})
this.jobContent.subList = subList
this.jobContent.creator = creator
return this.jobContent
},
scanPopupGetFocus() {
if (this.$refs.scanPopup != undefined) {
this.$refs.scanPopup.getfocus()
jobContent.value.subList = subList
jobContent.value.creator = creator
return jobContent.value
}
const scanPopupGetFocus=() =>{
if (scanPopup.value != undefined) {
scanPopup.value.getfocus()
}
},
}
scanPopupLoseFocus() {
if (this.$refs.scanPopup != undefined) {
this.$refs.scanPopup.losefocus()
const scanPopupLoseFocus=()=> {
if (scanPopup.value != undefined) {
scanPopup.value.losefocus()
}
},
}
showMessage(message) {
const showMessage=(message)=> {
setTimeout((r) => {
this.scanPopupLoseFocus()
this.$refs.comMessage.showMessage(message, (res) => {
scanPopupLoseFocus()
comMessageRef.value.showMessage(message, (res) => {
if (res) {
this.scanPopupGetFocus()
scanPopupGetFocus()
}
})
})
},
}
showErrorMessage(message) {
const showErrorMessage=(message)=> {
setTimeout((r) => {
this.scanPopupLoseFocus()
this.$refs.comMessage.showErrorMessage(message, (res) => {
scanPopupLoseFocus()
comMessageRef.value.showErrorMessage(message, (res) => {
if (res) {
this.scanPopupGetFocus()
scanPopupGetFocus()
}
})
})
},
}
showCommitSuccessMessage(hint) {
this.$refs.comMessage.showSuccessMessage(hint, (res) => {
const showCommitSuccessMessage=(hint) =>{
comMessageRef.value.showSuccessMessage(hint, (res) => {
navigateBack(1)
})
},
showQuestMessage(hint, callBack) {
this.$refs.comMessage.showQuestionMessage(hint, (res) => {
}
const showQuestMessage=(hint, callBack) =>{
comMessageRef.value.showQuestionMessage(hint, (res) => {
if (res) {
callBack(true)
}
})
}
}
}
</script>
<style scoped lang="scss"></style>

12
src/pages/productReceipt/job/ccProductReceiptJob.vue

@ -28,7 +28,7 @@
</template>
<script setup lang="ts">
import { ref, getCurrentInstance, onMounted,nextTick } from 'vue'
import { ref, getCurrentInstance, onMounted, nextTick } from 'vue'
import { onLoad, onShow, onNavigationBarButtonTap, onReady, onBackPress, onReachBottom, onPullDownRefresh } from '@dcloudio/uni-app'
import { getProductReceiptJobList, cancleTakeProductReceiptJob } from '@/api/request2.js'
@ -67,13 +67,17 @@
const detailOptions = ref([])
const detailGiveupOptions = ref([])
const type = ref('assemble')
const title = ref("")
const filter = ref()
const comMessageRef = ref()
const jobListPopupRef = ref()
const jobInfoPopupRef = ref()
const scanPopup = ref()
onLoad((option) => {
title.value = option.title
})
onMounted(() => {
onShow(() => {
detailOptions.value = getDetailOption()
detailGiveupOptions.value = getDetailGiveupOption()
getList('refresh')
@ -106,9 +110,7 @@
}
getList('more')
})
const refresh = () => {
getList('refresh')
}
const getList = (type) => {
uni.showLoading({
title: '加载中­....',

2
src/pages/purchaseReturn/coms/comReturnRequestCard.vue

@ -1,6 +1,6 @@
<template>
<request-com-main-card :dataContent="dataContent">
<jobComMainDetailCard :dataContent="dataContent"></jobComMainDetailCard>
<jobComMainDetailCard :dataContent="dataContent" :isShowToLocation="false"></jobComMainDetailCard>
</request-com-main-card>
</template>

4
src/pages/purchaseReturn/record/returnRecord.vue

@ -64,6 +64,7 @@ const supplierCode = ref('') // 供应商代码
const poNumber = ref('')
const fromType = ref('')
const dataContent = ref({})
const currentPackage = ref({})
const comMessageRef = ref()
const scanPopup = ref()
const scanLocationCode = ref()
@ -131,6 +132,7 @@ const getDataSource = (result) => {
const { balance } = result
const { label } = result
const pack = result.package
currentPackage.value = pack
const item = detailSource.value.find((res) => {
if (res.itemCode == balance.itemCode) {
@ -232,6 +234,8 @@ const setRecordParams = (queryModel) => {
submitItem.qty = detail.handleQty
submitItem.package = ''
submitItem.poNumber = currentPackage.value.poNumber
submitItem.poLine = currentPackage.value.poLine
subList.push(submitItem)
}
})

2
src/pages/purchaseReturn/request/returnRequestCreate.vue

@ -186,6 +186,8 @@ const setRequestParams = () => {
}
submitItem.fromLocationCode = detail.locationCode
submitItem.qty = detail.handleQty
submitItem.poNumber = detail.package.poNumber
submitItem.poLine = detail.package.poLine
subList.push(submitItem)
}
})

Loading…
Cancel
Save