Browse Source

修改翻包打印功能2024/7/30 17:28:22

pull/1/head
zhang_li 5 months ago
parent
commit
1b5df5fded
  1. 2
      src/common/config.js
  2. 2
      src/common/detail.js
  3. 133
      src/mycomponents/print/print.vue
  4. 5
      src/pages/count/job/countLightDetail.vue
  5. 437
      src/pages/fg/coms/comNoReceiptPopup.vue
  6. 771
      src/pages/fg/receiptNoPlan.vue
  7. 1
      src/pages/index/index.vue
  8. 1
      src/pages/issue/record/issueRecord.vue
  9. 4
      src/pages/login/index.vue
  10. 7
      src/pages/package/record/overPackageRecord.vue
  11. 58
      src/pages/purchaseReceipt/job/receiptDetail.vue
  12. 4
      src/pages/repleinsh/record/repleinshRecord.vue
  13. 3
      src/pages/setter/index.vue

2
src/common/config.js

@ -0,0 +1,2 @@
export const overPagePrint="overPage_print"
export const overPageTemplate="overPage_Template"

2
src/common/detail.js

@ -36,6 +36,7 @@ export function getTreeDataSource(dataList) {
s.packList = childList.filter(c => c.parentPackingNumber == s.packingNumber)
s.packList.forEach(pac => {
pac.scaned = false;
pac.scanDate = new Date();
})
})
)
@ -79,6 +80,7 @@ export function createItemInfo(detail) {
export function createDetailInfo(data) {
data.scaned = false;
data.scanDate = new Date();
let detail = data;
detail.packList = [];
return detail;

133
src/mycomponents/print/print.vue

@ -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>

5
src/pages/count/job/countLightDetail.vue

@ -325,6 +325,8 @@ const getScanResult = (result) => {
selectItem.handleQty = Number(qty)
selectItem.packQty = pack.packQty
selectItem.packUnit = pack.packUnit
selectItem.locationCode = fromLocationCode.value
selectItem.fromLocationCode = fromLocationCode.value
countQtyEditRef.value.openEditPopupShowSeconds(selectItem, null)
selectItem.countTime = new Date()
@ -392,6 +394,7 @@ const createAddDetailInfo = (pack, qty) => {
countQty: 0,
balanceQty: Number(qty),
fromLocationCode: fromLocationCode.value,
locationCode: fromLocationCode.value,
creator: store.id,
countTime: new Date()
}
@ -414,6 +417,8 @@ const commit = () => {
if (!item.scaned) {
item.scaned = true
item.handleQty = 0
item.locationCode = fromLocationCode.value
item.fromLocationCode = fromLocationCode.value
}
})
submitJob()

437
src/pages/fg/coms/comNoReceiptPopup.vue

@ -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>

771
src/pages/fg/receiptNoPlan.vue

@ -1,398 +1,483 @@
<template>
<view class="page-wraper">
<view class="page-header">
<view class="page-header-box">
<view class="header_job_top">
<job-top :dataContent="jobContent"></job-top>
</view>
<!-- <view class="header_item">
申请单号{{jobContent.requestNumber}}
</view>
-->
<view class="cen_card u-p-t-20" style="padding: 5rpx">
<view class="cell_box uni-flex uni-row">
<view class="cell_info">
<view class="text_lightblue">发货类型</view>
<view>{{ jobContent.deliverType }}</view>
</view>
<view class="page-wraper" style="background-color: #fff">
<view class="header">
<view class="">
<com-blank-view @goScan="openFg" v-if="!dataContent"></com-blank-view>
</view>
<view class="" v-if="dataContent">
<view class="" style="font-size: 35rpx; padding: 10rpx; padding-left: 15rpx"> 生产计划{{ dataContent.planNumber }} </view>
<view class="split_line"></view>
<view class="cell_info">
<view class="text_lightblue">客户代码</view>
<view>{{ jobContent.customerCode }}</view>
</view>
<view class="cell_box uni-flex uni-row">
<view class="cell_info">
<view class="text_lightblue">完工库位</view>
<view style="font-size: 30rpx; margin-top: 13rpx">{{ dataContent.fgLocationCode }} </view>
</view>
<view class="cell_info">
<view class="text_lightblue">计划数</view>
<view>{{ dataContent.planQty }}{{ dataContent.uom }}</view>
</view>
<view class="cell_info">
<view class="text_lightblue">已完工</view>
<view>{{ dataContent.goodQty }}{{ dataContent.uom }}</view>
</view>
<view class="cell_info">
<view class="text_lightblue">未完工</view>
<view>{{ dataContent.noGoodQty }}{{ dataContent.uom }}</view>
</view>
</view>
<view class="split_line"></view>
<view class="cell_info">
<view class="text_lightblue">目标库位</view>
<view>{{ toLocationCode }}</view>
<view class="" style="padding-top: 10rpx; padding-bottom: 10rpx; margin-left: 10rpx">
<item :dataContent="dataContent"></item>
</view>
<view class="split_line"></view>
<view class="uni-flex uni-row space-between" style="align-items: center">
<view style="word-break: break-all">
<batch :batch="dataContent.batch"></batch>
<view class="card_view">
<text style="color: #ffa500; padding: 5px; font-size: 30rpx">包装规格</text>
<text class="card_content">{{ dataContent.packUnit }} </text>
</view>
</view>
<view style="word-break: break-all; font-size: 35rpx; font-weight: bold">
<text v-if="dataContent.handleQty > 0" style="color: #ffa500">{{ dataContent.handleQty }}/</text>
{{ dataContent.packQtyHint }}
</view>
</view>
<view class="split_line" v-if="dataContent"></view>
</view>
</view>
<view class="page-main">
<view style="margin-top: 480rpx; padding-bottom: 160rpx" v-if="dataContent">
<scroll-view scroll-y="true" class="">
<view v-for="(toLocation, index) in detailSource">
<comDeliverDetailCard ref="comIssueDetailCardRef" :dataContent="toLocation" @updateData="updateData"> </comDeliverDetailCard>
<view class="scan_view" v-for="(item, index) in showList" :key="index">
<uni-swipe-action>
<uni-swipe-action-item :right-options="options" @click="swipeClick($event, item, index)">
<view class="uni-flex uni-row" style="margin-left: 50rpx; padding-top: 10rpx; padding-bottom: 10rpx">
<view class="auto-wrap" style="font-size: 35rpx; font-weight: bold; width: 100%">
<text style="font-size: 30rpx; color: #b66463">唯一码 </text>
{{ item.content }}
</view>
</view>
</uni-swipe-action-item>
</uni-swipe-action>
<u-line color="#D8D8D8"></u-line>
</view>
</scroll-view>
<uni-load-more :status="loadingType" v-if="showList.length > 0" />
</view>
<div class="btn_bottom" style="width: 100%">
<view class="" style="display: flex; flex-direction: row">
<button class="btn_commit" hover-class="btn_commit_after" style="flex: 1" @click="submit()">提交</button>
<view class="page-footer" v-if="dataContent">
<view class="uni-flex u-col-center space-between" 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" hover-class="btn_commit_after" style="margin-right: 50rpx" @click="clear">清空</button>
<button class="btn_single_commit" hover-class="btn_commit_after" @click="submit">提交</button>
</view>
</view>
</div>
<win-scan-button @goScan="openScanDetailPopup"></win-scan-button>
<comScanDeliverPack ref="comScanIssuePackRef" @closeScan="closeScan" @updateData="updateData"> </comScanDeliverPack>
<com-message ref="comMessageRef" />
</view>
<comNoReceiptPopup ref="comNoReceiptPopup" @confirm="requestConfirm"></comNoReceiptPopup>
<win-scan-button v-if="dataContent" @goScan="openScanPopup"></win-scan-button>
<win-scan-fg-label ref="scanPopup" @getResult="getScanResult" title="制品标签"></win-scan-fg-label>
<comMessage ref="comMessage"></comMessage>
</view>
</template>
<script setup lang="ts">
import { ref, getCurrentInstance, nextTick } from 'vue'
import { onLoad, onShow, onNavigationBarButtonTap, onReady, onBackPress, onReachBottom, onPullDownRefresh } from '@dcloudio/uni-app'
import { getDeliverDetail, takeDeliverJob, cancleTakeDeliverJob, deliverJobSubmit } from '@/api/request2.js'
<script>
import { Exception } from 'sass'
import { isCheckMesCode, planReceiptSubmit, createPutawayRequestByPlan, createInspectRequestByPlan, getPlanByNumber } from '@/api/request2.js'
import { calc } from '@/common/calc.js'
import { goHome, navigateBack, getRemoveOption, getCurrDateTime, getPackingNumberAndBatch } from '@/common/basic.js'
import { getDataSource } from '@/pages/issue/js/issue.js'
import { getRemoveOption, deepCopyData, getCurrDateTime, compare } from '@/common/basic.js'
import winScanButton from '@/mycomponents/scan/winScanButton.vue'
import comBlankView from '@/mycomponents/common/comBlankView.vue'
import comNoReceiptPopup from '@/pages/fg/coms/comNoReceiptPopup.vue'
import item from '@/mycomponents/item/item.vue'
import batch from '@/mycomponents/balance/batch.vue'
import pack from '@/mycomponents/balance/pack.vue'
import winScanFgLabel from '@/mycomponents/scan/winScanFgLabel.vue'
import comFgCard from '@/pages/productReceipt/coms/comFgCard.vue'
import { getManagementPrecisions } from '@/common/balance.js'
export default {
components: {
comBlankView,
comNoReceiptPopup,
item,
batch,
pack,
winScanButton,
winScanFgLabel,
comFgCard
},
data() {
return {
dataContent: null,
options: [],
showList: [],
allList: [],
index: 1,
loadingType: '',
pageSize: 20
}
},
import jobDetailPopup from '@/mycomponents/job/jobDetailPopup.vue'
import winScanButton from '@/mycomponents/scan/winScanButton.vue'
import comDeliverDetailCard from '@/pages/deliver/coms/comDeliverDetailCard.vue'
import comScanDeliverPack from '@/pages/deliver/coms/comScanDeliverPack.vue'
import jobTop from '@/mycomponents/job/jobTop.vue'
import { useCountStore } from '@/store'
// store
const store = useCountStore()
const { proxy } = getCurrentInstance()
const id = ref('')
const jobContent = ref({}) //
const subList = ref([]) // subList
const detailSource = ref([]) //
const detailOptions = ref([])
const scanOptions = ref([])
const status = ref('')
const toLocationCode = ref('')
const jobStatus = ref('')
const scanPopup = ref()
const comScanIssuePackRef = ref()
const comMessageRef = ref()
const managementList = ref([])
const comIssueDetailCardRef = ref()
onLoad((option) => {
id.value = option.id
if (id.value != undefined) {
//
if (option.status == '1') {
receive((callback) => {
getDetail()
})
} else {
getDetail()
onShow() {},
onLoad() {
this.options = getRemoveOption()
this.openFg()
},
onReachBottom() {
console.log('onReachBottom')
//
if (this.loadingType == 'nomore') {
return
}
}
})
//
onNavigationBarButtonTap((e) => {
if (e.index === 0) {
goHome()
}
})
//
onBackPress((e) => {
//
if (e.from == 'backbutton') {
if (jobStatus.value == '2') {
//
cancleTakeDeliverJob(id.value)
.then((res) => {
uni.navigateBack()
})
.catch((error) => {
uni.navigateBack()
})
this.index++
const list = this.getDataPage(this.index, this.pageSize)
if (list.length > 0) {
// this.showList=list
this.showList = this.showList.concat(list)
} else {
uni.navigateBack()
//
this.loadingType = 'nomore'
}
return true
}
})
const receive = (callback) => {
if (id.value != null) {
takeDeliverJob(id.value)
.then((res) => {
callback()
})
.catch((error) => {
showErrorMessage(error)
})
}
}
const getDetail = () => {
proxy.$modal.loading('加载中....')
getDeliverDetail(id.value)
.then((res) => {
uni.hideLoading()
if (res.data == null) {
showMessage('未获取到详情')
} else if (res.data.subList.length > 0) {
jobContent.value = res.data
jobStatus.value = res.data.status
subList.value = res.data.subList
detailSource.value = getDataSource(detailSource.value, subList.value)
toLocationCode.value = subList.value[0].toLocationCode
setTimeout((r) => {
resizeCollapse()
}, 100)
},
uni.hideLoading()
} else {
showMessage('列表数据为0')
mounted() {},
methods: {
openFg() {
setTimeout((res) => {
if (this.$refs.comNoReceiptPopup) {
this.$refs.comNoReceiptPopup.openRequestPopup()
}
}, 600)
},
requestConfirm(result) {
this.dataContent = {
itemCode: result.itemCode,
planNumber: result.planNumber, //
handleQty: 0,
qty: 0,
planQty: result.planQty,
goodQty: result.goodQty,
noGoodQty: calc.sub(result.planQty, result.goodQty),
packQtyHint: result.packQtyHint,
packQty: result.packQty,
uom: result.uom,
batch: result.batch,
packUnit: result.packUnit,
workStationCode: result.workStationCode,
fgLocationCode: result.fgLocationCode,
subList: []
}
})
.catch((error) => {
uni.hideLoading()
showErrorMessage(error)
})
}
const closeScan = () => {
resizeCollapse()
}
const resizeCollapse = () => {
nextTick((r) => {
comIssueDetailCardRef.value.forEach((r) => {
r.resizeCollapse()
})
})
}
const submit = () => {
proxy.$modal.loading('提交中....')
//
const itemCodes = []
const locationCode = detailSource.value[0].toLocationCode
detailSource.value.forEach((toLocation) => {
toLocation.Items.forEach((item) => {
itemCodes.push(item.itemCode)
})
})
// 使
if (locationCode == null) {
submitJob()
} else {
//
getManagementPrecisions(itemCodes, locationCode, (res) => {
if (res.success) {
managementList.value = res.list
submitJob()
} else {
uni.hideLoading()
showErrorMessage(res.message)
},
initList() {
this.index = 1
this.showList = []
this.loadingType = ''
this.showList = this.getDataPage(this.index, this.pageSize)
},
getDataPage(pageNo, pageSize) {
//
const totalPages = Math.ceil(this.allList.length / pageSize)
//
const start = (pageNo - 1) * pageSize
const end = start + pageSize //
return this.allList.slice(start, end)
},
swipeClick(e, dataContent, index) {
if (e.content.text == '移除') {
this.$refs.comMessage.showQuestionMessage('是否要移除', (res) => {
if (res) {
this.allList.splice(index, 1)
this.initList()
}
})
}
})
}
}
const submitJob = () => {
const params = setParams()
if (params.subList.length == 0) {
uni.hideLoading()
comMessageRef.value.showConfirmMessageModal('请扫描箱码')
return
}
deliverJobSubmit(params)
.then((res) => {
uni.hideLoading()
if (res.data) {
showCommitSuccessMessage(`提交成功<br>生成发货记录<br>${res.data}`)
},
submit() {
if (this.allList.length == 0) {
this.showErrorMessage('请先扫描唯一码')
return
}
if (this.allList.length < this.dataContent.packQty) {
this.$refs.comMessage.showQuestionMessage('扫描数量小于包装规格数量,是否提交?', (res) => {
if (res) {
this.commit()
}
})
} else {
showErrorMessage(`提交失败[${res.msg}]`)
this.commit()
}
})
.catch((error) => {
uni.hideLoading()
showErrorMessage(error)
})
}
const setParams = () => {
const subList = []
const createTime = getCurrDateTime()
const creator = store.id
detailSource.value.forEach((toLocationCode) => {
toLocationCode.Items.forEach((item) => {
item.Locations.forEach((fromLocation) => {
fromLocation.Batchs.forEach((batch) => {
const subItem = batch.detail
subItem.recordList = []
if (batch.Records.length > 0) {
batch.Records.forEach((r) => {
const record = {}
record.handleQty = r.qty
record.toContainerNumber = r.ContainerNumber
record.toInventoryStatus = r.inventoryStatus
record.toLocationCode = subItem.toLocationCode
record.supplierCode = r.supplierCode
// 使
if (toLocationCode.value == null) {
record.toPackingNumber = r.packingNumber
record.toBatch = r.batch
} else {
const info = getPackingNumberAndBatch(managementList.value, r.itemCode, r.packingNumber, r.batch)
record.toPackingNumber = info.packingNumber
record.toBatch = info.batch
}
record.fromPackingNumber = r.packingNumber
subItem.recordList.push(record)
},
async commit() {
try {
uni.showLoading({
title: '提交中...',
mask: true
})
const params = this.setParams()
console.log(JSON.stringify(params))
const list = []
const planData = await planReceiptSubmit(params)
if (planData.data) {
planData.data.forEach((item) => {
list.push({
itemCode: item.itemCode, //
itemName: item.itemName, //
packName: item.packName, //
packageCode: item.toPackingNumber, //
batch: item.toBatch, //
parentNumber: item.parentNumber, //
itemType: item.itemType, //
asnNumber: item.asnNumber, // ASN
supplierCode: item.supplierCode, //
qty: item.qty, //
printTimes: getCurrDateTime(), //
productionLineCode: item.productionLineCode, // 线
barcodeString: item.barcodeString, //
barcodeBase64: '',
requestNumber: item.requestNumber
})
subList.push(subItem)
}
})
} else {
throw new Error('提交失败')
}
createPutawayRequestByPlan(list[0].requestNumber).then((res) => {
createInspectRequestByPlan(list[0].requestNumber)
})
})
})
})
jobContent.value.subList = subList
jobContent.value.createTime = createTime
jobContent.value.creator = creator
return jobContent.value
}
const cancel = () => {
comMessageRef.value.showQuestionMessage('是否要清空已扫描的物料和目标库位信息?', (res) => {
if (res) {
clearInfo()
}
})
}
const clearInfo = () => {
dataContent.value.itemCodeList.forEach((res) => {
if (res.recommendList != null) {
res.recommendList.forEach((res1) => {
if (res1.locationCodeList != null) {
res1.locationCodeList.forEach((res2) => {
if (res2.packingCodeList != null) {
res2.packingCodeList.forEach((res3) => {
res3.itemCode = ''
res3.qty = 0
})
const queryParams = {
filters: [
{
column: 'plan_type',
action: '==',
value: 'assemble'
},
{
column: 'number',
action: '==',
value: this.dataContent.planNumber
}
})
],
pageNo: 1,
pageSize: 100
}
const planeInfo = await getPlanByNumber(queryParams)
if (planeInfo.data && planeInfo.data.list.length > 0) {
if (planeInfo.data.list[0].goodQty >= planeInfo.data.list[0].planQty) {
this.clear()
} else {
this.dataContent.planNumber = planeInfo.data.list[0].number
this.dataContent.handleQty = 0
this.dataContent.planQty = planeInfo.data.list[0].planQty
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.subList = [])
this.showList = []
this.allList = []
this.index = 1
}
} else {
throw new Error('未查找到单据信息')
}
uni.hideLoading()
this.showCommitSuccessMessage(`提交成功<br>生成装配收货记录<br>${list[0].requestNumber}`, list)
} catch (error) {
uni.hideLoading()
const hint = error.message ? error.message : error
this.showErrorMessage(hint)
}
},
setParams() {
this.allList.forEach((res) => {
res.outsideItemCode = res.itemCode
res.outsideProduceDate = null
res.outsideSerialNumber = res.order
})
}
})
}
this.dataContent.subList = this.allList
const updateData = (record) => {
const requestLocation = detailSource.value.find((r) => r.toLocationCode == record.toLocationCode)
const item = requestLocation.Items.find((r) => r.itemCode == record.itemCode)
let itemHandleQty = 0
if (item != undefined) {
item.Locations.forEach((l) => {
const batch = l.Batchs.find((b) => (b.packingNumber == record.packingNumber || b.packingNumber == null || b.packingNumber == '') && b.batch == record.batch)
let handleQty = 0
if (batch != undefined) {
batch.Records.forEach((res) => {
handleQty = calc.add(handleQty, res.qty)
return this.dataContent
},
clear() {
this.$refs.comMessage.showQuestionMessage('是否要清空?', (res) => {
if (res) {
this.clearData()
this.openFg()
}
})
},
clearData() {
this.dataContent = null
this.showList = []
this.allList = []
this.index = 1
},
openScanPopup() {
const { itemCode } = this.dataContent
console.log('物料', itemCode)
this.$refs.scanPopup.openScanPopup(itemCode)
},
getScanResult(result) {
const that = this
// TODO
// mes
isCheckMesCode(result.content)
.then((res) => {
if (res.data) {
if (that.dataContent) {
const itemIndex = this.allList.findIndex((r) => r.itemCode == result.itemCode && r.order == result.order)
//
if (itemIndex == -1) {
// if (this.allList.length > this.dataContent.packQty) {
// this.showErrorMessage("")
// return;
// }
result.countTime = new Date()
this.allList.push(result)
this.allList.sort(compare('countTime')) //
this.initList()
this.scanPopupGetFocus()
this.calcFgQty()
} else {
this.$refs.comMessage.showQuestionMessage(`唯一码【${result.content}】已经扫描,是否移除`, (res) => {
if (res) {
this.allList.splice(itemIndex, 1)
this.allList.sort(compare('countTime')) //
this.initList()
that.calcFgQty()
}
})
}
}
}
})
.catch((error) => {
this.showErrorMessage(error)
})
batch.handleQty = handleQty
itemHandleQty = calc.add(itemHandleQty, handleQty)
},
calcFgQty() {
this.dataContent.handleQty = this.allList.length
if (this.dataContent.handleQty == this.dataContent.packQty) {
if (this.$refs.scanPopup) {
this.$refs.scanPopup.closeScanPopup()
}
this.commit()
}
})
}
// item.handleQty=itemHandleQty;
}
const scanPopupGetFocus = () => {
if (!scanPopup.value) {
scanPopup.value.getfocus()
},
scanPopupGetFocus() {
if (this.$refs.scanPopup) {
this.$refs.scanPopup.getfocus()
}
},
scanPopupLoseFocus() {
if (this.$refs.scanPopup) {
this.$refs.scanPopup.losefocus()
}
},
showCommitSuccessMessage(hint, pointData) {
this.$refs.comMessage.showSuccessMessage(hint, (res) => {
if (pointData.length > 0) {
uni.navigateTo({
url: `/pages/point/index?points=${JSON.stringify(pointData)}`
})
}
})
},
showErrorMessage(message) {
this.$refs.comMessage.showErrorMessage(message, (res) => {
if (res) {
this.scanPopupGetFocus()
}
})
}
}
}
const showMessage = (message) => {
comMessageRef.value.showMessage(message, (res) => {
afterCloseMessage()
})
}
const showErrorMessage = (message) => {
comMessageRef.value.showErrorMessage(message, (res) => {
afterCloseMessage()
})
}
const showScanMessage = (message) => {
comMessageRef.value.showScanMessage(message)
}
const showCommitSuccess = () => {
comMessageRef.value.showCommitSuccess()
}
const showCommitSuccessMessage = (hint) => {
comMessageRef.value.showSuccessMessage(hint, (res) => {
navigateBack(1)
})
}
const showRescanMessage = (message) => {
comMessageRef.value.showRescanMessage(message)
}
const afterCloseMessage = () => {
scanPopupGetFocus()
}
</script>
const closeScanMessage = () => {
scanPopupGetFocus()
}
const confirm = (data) => {
dataContent.value = data
<style scoped lang="scss">
page {
width: 100%;
height: 100%;
background-color: #fff;
}
const confirmResult = (result) => {
dataContent.value = result
.page-wraper {
display: flex;
flex-direction: column;
width: 100%;
height: 100%;
}
const openScanDetailPopup = () => {
const datacontent = {}
//
// Object.assign(datacontent, this.detailSource);
comScanIssuePackRef.value.openScanPopup(detailSource.value, jobContent.value)
.header {
position: fixed;
/* #ifdef H5 */
top: 88rpx;
/* #endif */
left: 0;
width: 100%;
background-color: #fff;
z-index: 10;
padding: 10rpx;
/* 确保头部在内容之上 */
}
const closeScanPopup = () => {
updateCommitBtn()
.page-footer {
position: fixed;
bottom: 0;
left: 0;
right: 0;
}
</script>
<style scoped lang="scss">
.uni-numbox__value {
width: 40px;
.page-main {
flex: 1;
position: relative;
}
button[disabled] {
background-color: #3c9cff;
color: #fff;
opacity: 0.7;
.page-main-scroll {
position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 0;
}
// /deep/ .input-value {
// font-size: 16px;
// }
.page-main-list {
/* height: 80rpx;
line-height: 80rpx; */
text-align: center;
background: #e0e0e0;
}
// /deep/ .uni-collapse-item__title-text {
// font-size: 16px;
// }
.item {
background-color: #fff;
}
// /deep/ .uni-collapse-item--border {
// border-bottom-width: 0px;
// border-bottom-color: #ebeef5;
// }
.item_scaned {
background-color: antiquewhite;
}
// /deep/ .uni-collapse-item--border {
// border-bottom-width: 1px;
// border-bottom-color: #ebeef5;
// }
.auto-wrap {
white-space: normal;
word-break: break-all;
overflow-wrap: break-word;
/* 对于兼容性更好的情况 */
}
</style>
<template></template>
<script></script>
<style></style>

1
src/pages/index/index.vue

@ -58,6 +58,7 @@
import { ref, getCurrentInstance, nextTick } from 'vue'
import { onLoad, onShow, onNavigationBarButtonTap, onReady, onBackPress, onReachBottom, onPullDownRefresh, onHide, onUnload } from '@dcloudio/uni-app'
import { getDictionaryItem, getPackageUnitList, getMainMessage, getSwitchByCode, getBusinessType } from '@/api/request2.js'
import { overPagePrint, overPageTemplate } from '@/common/config.js'
import { useCountStore } from '@/store'
// store
const store = useCountStore()

1
src/pages/issue/record/issueRecord.vue

@ -478,6 +478,7 @@ export default {
showCommitSuccessMessage(hint) {
this.$refs.comMessage.showSuccessMessage(hint, (res) => {
this.clearData()
this.openScanPopup()
})
},

4
src/pages/login/index.vue

@ -68,6 +68,7 @@
import { onLoad, onShow, onNavigationBarButtonTap, onReady } from '@dcloudio/uni-app'
import { ref, getCurrentInstance } from 'vue'
import { getCaptchaImage } from '@/api/request2.js'
import storage from '@/common/utils/storage'
import { useCountStore } from '@/store'
// store
const store = useCountStore()
@ -99,8 +100,7 @@ onReady(() => {
})
onLoad(() => {
tenantValue.value = tenantArray.value[0].value
uni.clearStorageSync()
uni.clearStorage() //
storage.clearStorage()
if (import.meta.env.VITE_USER_NODE_ENV === 'development') {
username.value = 'admin'
password.value = 'win123456'

7
src/pages/package/record/overPackageRecord.vue

@ -3,6 +3,7 @@
<view class="">
<com-blank-view @goScan="getBusinessType" v-if="detailSource.length == 0"></com-blank-view>
</view>
<print ref="printService" @printCode="printCode" @templateCode="templateCode"></print>
<view class="page-wraper" v-if="detailSource.length > 0">
<view class="cen_card" style="background-color: #fff; margin: 10px">
<view class="cell_box uni-flex uni-row">
@ -78,6 +79,7 @@ import packageTarget from '@/mycomponents/package/packageTarget.vue'
import recordComDetailCard from '@/mycomponents/record/recordComDetailCard.vue'
import packUnit from '@/mycomponents/qty/packUnit.vue'
import winComScanBalance from '@/mycomponents/scan/winComScanBalance.vue'
import print from '@/mycomponents/print/print.vue'
import { useCountStore } from '@/store'
// store
@ -107,6 +109,7 @@ const scanPopup = ref()
const scanLocationCode = ref()
const toPackUnit = ref()
const comMessageRef = ref()
const printService = ref()
onLoad(() => {
getBusinessType()
})
@ -180,6 +183,10 @@ const handleConfirm = (fromLocationCode) => {
}
const getScanResult = (result) => {
setData(result)
setTimeout((res) => {
printService.value.setDefaultData()
})
}
const setData = (result) => {

58
src/pages/purchaseReceipt/job/receiptDetail.vue

@ -36,7 +36,7 @@
<view style="background-color: ghostwhite; width: 100%">
<view v-if="operation == 'receipt'" class="uni-flex u-col-center space-between padding_10">
<view>
<locationCompare ref="locationCompareRef" title="收货库位" :recommendLocationCode="jobToLocationCode" :locationCode="toLocationCode" :locationAreaTypeList="toLocationAreaTypeList"> </locationCompare>
<locationCompare ref="locationCompare" title="收货库位" :recommendLocationCode="jobToLocationCode" @getLocation="scanLocationCode" :locationAreaTypeList="toLocationAreaTypeList"> </locationCompare>
</view>
<view>
<button class="btn_single_commit" hover-class="btn_commit_after" @click="commit">提交</button>
@ -60,7 +60,7 @@ import { ref, getCurrentInstance, nextTick } from 'vue'
import { onLoad, onShow, onNavigationBarButtonTap, onReady, onBackPress, onReachBottom, onPullDownRefresh } from '@dcloudio/uni-app'
import { purchaseReceiptJobSubmit, getPurchaseReceiptJobDetail, takePurchaseReceiptJob, cancleTakePurchaseReceiptJob, productDismantleJobClose, getPutawayJobList } from '@/api/request2.js'
import { goHome, getCurrDateTime, getPackingNumberAndBatch, compareAsc, navigateBack, getSwitchInfoByCode } from '@/common/basic.js'
import { goHome, getCurrDateTime, getPackingNumberAndBatch, compareDesc, navigateBack, getSwitchInfoByCode } from '@/common/basic.js'
import { getDirectoryItemArray } from '@/common/directory.js'
@ -220,14 +220,17 @@ const getScanResult = (result) => {
} else {
itemDetail.forEach((item) => {
item.scaned = true
itemDetail.scanDate = new Date()
item.handleQty = item.qty
item.toLocationCode = toLocationCode.value
})
detailSource.value[0].subList.sort(compareAsc('scaned')) //
calcHandleQty(detailSource.value)
detailSource.value[0].subList.sort(compareAsc('scaneDate')) //
continueScan()
}
} else if (result.label.labelType == 'PurchaseLabel') {
let packingNumber = result.package.number
const parentpackingNumber = result.package.parentNumber
const { packingNumber } = result.label
const { batch } = result.label
const { qty } = result.label
@ -238,34 +241,26 @@ const getScanResult = (result) => {
//
var itemDetail = detail.subList.find((r) => r.packingNumber == packingNumber && r.batch == batch)
if (itemDetail == undefined) {
let isExit
for (const subItem of detail.subList) {
var item
for (const pack of subItem.packList) {
if (pack.packingNumber == packingNumber && pack.batch == batch) {
item = pack
isExit = pack
break
}
}
if (item != undefined) {
subItem.scaned = true
subItem.handleQty = 0
item = undefined
}
}
if (isExit == undefined) {
itemDetail = detail.subList.find((r) => r.packingNumber == parentpackingNumber && r.batch == batch)
if (itemDetail == undefined) {
showMessage(`箱码【${packingNumber}】、批次【${batch}】不在列表中`)
} else if (isExit.scaned) {
showMessage(`箱码【${packingNumber}】已经扫描`)
} else {
isExit.scaned = true
isExit.handleQty = Number(result.label.qty)
isExit.toLocationCode = toLocationCode
isExit.labelQty = Number(result.label.qty)
const pack = itemDetail.packList.find((p) => p.packingNumber == packingNumber && p.batch == batch)
if (pack == undefined) {
showMessage(`箱码【${packingNumber}】、批次【${batch}】不在列表中`)
} else if (pack.scaned) {
pack.scanDate = new Date()
showMessage(`箱码【${packingNumber}】已经扫描`)
} else {
pack.scaned = true
pack.scanDate = new Date()
pack.handleQty = Number(result.label.qty)
pack.toLocationCode = toLocationCode.value
pack.labelQty = Number(result.label.qty)
}
calcTreeHandleQty(detailSource.value)
itemDetail.packList.sort(compareDesc('scanDate')) //
}
calcTreeHandleQty(detailSource.value)
} else {
let scanedLength = 0
itemDetail.packList.forEach((res) => {
@ -273,21 +268,26 @@ const getScanResult = (result) => {
scanedLength++
}
})
if (itemDetail.scaned && scanedLength == itemDetail.packList.length) {
if (itemDetail.scaned && scanedLength == itemDetail.packList.length) {gth == itemDetail
.packList.length) {
isExit.scanDate = new Date();
showMessage(`箱码【${packingNumber}】已经扫描`)
} else {
itemDetail.scaned = true
itemDetail.scanDate = new Date();
detailSource.value[0].subList.sort(compareAsc('scaned')) //
itemDetail.handleQty = Number(result.label.qty)
itemDetail.toLocationCode = toLocationCode.value
itemDetail.labelQty = Number(result.label.qty)
itemDetail.packList.forEach((pac) => {
pac.scaned = true
pac.scanDate = new Date();
pac.handleQty = Number(pac.qty)
pac.toLocationCode = toLocationCode.value
})
calcTreeHandleQty(detailSource.value)
detailSource[0].subList.sort(compareDesc('scanDate'))
const test = detailSource.value
continueScan()
}

4
src/pages/repleinsh/record/repleinshRecord.vue

@ -9,7 +9,7 @@
<uni-collapse ref="collapse">
<uni-collapse-item :open="true">
<template v-slot:title>
<view class="card_itemName" style="padding: 3px 5px; font-size: 28rpx"> 先进先出推荐信息 </view>
<view class="card_itemName" style="font-size: 28rpx"> 先进先出推荐信息 </view>
</template>
<view class="detail-list" v-for="(recommend, index) in recommendList" :key="recommend.id">
<view class="card_view">
@ -501,6 +501,7 @@ export default {
showCommitSuccessMessage(hint) {
this.$refs.comMessage.showSuccessMessage(hint, (res) => {
this.clear()
this.openScanPopup()
})
},
@ -511,6 +512,7 @@ export default {
this.detailSource = []
this.toLocationCode = ''
this.itemCode = ''
this.recommendList = []
}
}
}

3
src/pages/setter/index.vue

@ -34,6 +34,7 @@ import { onLoad } from '@dcloudio/uni-app'
import { logout, getUserProfile } from '@/api/request2.js'
import { clearCacheData } from '@/common/directory.js'
import { removeToken } from '@/common/utils/auth'
import storage from '@/common/utils/storage'
// #ifdef APP-PLUS
import { appUpdate } from '@/common/appUpdate.js'
@ -94,7 +95,7 @@ function handlerlogout() {
}
function clearStorage() {
uni.clearStorageSync()
storage.clearStorage()
removeToken()
}

Loading…
Cancel
Save