|
|
|
<template>
|
|
|
|
<view>
|
|
|
|
<u-popup v-model="show" mode="bottom" :maskClick='false'>
|
|
|
|
<view class="">
|
|
|
|
<view class="popup_box">
|
|
|
|
<view class="pop_title uni-flex space-between">
|
|
|
|
<view class="" style="font-size: 35rpx;">
|
|
|
|
扫描箱码
|
|
|
|
</view>
|
|
|
|
|
|
|
|
<view class="">
|
|
|
|
<image class="fr icons_scan_close" src="/static/icons/icons_scan_close.svg"
|
|
|
|
@click="closeScanPopup()"></image>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
|
|
|
|
<!-- <view class="uni-flex uni-row" style="align-items: center;
|
|
|
|
background-color: #fff;
|
|
|
|
margin-left: 20rpx;
|
|
|
|
margin-right: 20rpx;
|
|
|
|
padding:20rpx;
|
|
|
|
border-radius: 8rpx;">
|
|
|
|
<view class="uni-center">
|
|
|
|
位置 :
|
|
|
|
</view>
|
|
|
|
<view class="" style="width: 75%;padding: 0rpx">
|
|
|
|
<view class="uni-flex u-col-center uni-row" @click="showSelect">
|
|
|
|
<view class="" style="margin-left: 15rpx;font-size: 30rpx;">
|
|
|
|
{{positionInfo}}
|
|
|
|
</view>
|
|
|
|
<u-select v-model="show" mode="mutil-column-auto" :list="positionList" :defaultValue="defaultValueList"
|
|
|
|
@confirm="confirmSelect"></u-select>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
<u-line class='line_color'></u-line> -->
|
|
|
|
|
|
|
|
<view class="uni-flex uni-row" style="align-items: center;
|
|
|
|
background-color: #fff;
|
|
|
|
margin-left: 20rpx;
|
|
|
|
margin-right: 20rpx;
|
|
|
|
margin-top: 8rpx;
|
|
|
|
border-radius: 8rpx;">
|
|
|
|
<view class="uni-center" style="width: 25%; ">
|
|
|
|
来源库位
|
|
|
|
</view>
|
|
|
|
<view class="" style="width: 75%; padding: 8rpx;">
|
|
|
|
<uni-combox :candidates="fromLocationList" v-model="fromLocationCode" placeholder="请选择库位"
|
|
|
|
@confirm="fromLocationUpdate"></uni-combox>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
|
|
|
|
<view class="">
|
|
|
|
<view class="">
|
|
|
|
<win-com-scan ref="comscan" placeholder="箱标签" @getResult="onScan" :clearResult="true"
|
|
|
|
:headerType="headerType" :isShowHistory="false">
|
|
|
|
</win-com-scan>
|
|
|
|
|
|
|
|
<view style="width: 100%;">
|
|
|
|
<view style="width: 100%;" v-if="issueRecord.length>0">
|
|
|
|
<view class="uni-flex uni-row space-between u-col-center">
|
|
|
|
<view class="" style="padding: 10rpx;">
|
|
|
|
历史记录
|
|
|
|
</view>
|
|
|
|
<view class="" style="padding-right: 10rpx;">
|
|
|
|
<u-icon :name="expendIcon" size="35rpx" @click="expands()"></u-icon>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
<u-line class='line_color' style='padding-top: 10rpx;padding-bottom: 20rpx;'>
|
|
|
|
</u-line>
|
|
|
|
<scroll-view scroll-y="true" class="scroll-view"
|
|
|
|
v-if="expand&&issueRecord.length>0">
|
|
|
|
<view class="uni-flex u-col" v-for="(record,index) in issueRecord">
|
|
|
|
<view style="width: 100%;">
|
|
|
|
<u-swipe-action ref="swipeAction" :options="scanOptions"
|
|
|
|
@click="(...event)=>swipeClick(event,record,index)">
|
|
|
|
<view style="padding: 0px 10px">
|
|
|
|
<balance :dataContent="record" :isShowLocation="false"
|
|
|
|
:isShowStdPack="false"></balance>
|
|
|
|
u
|
|
|
|
</view>
|
|
|
|
</u-swipe-action>
|
|
|
|
<u-line class='line_color'></u-line>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
</scroll-view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
</u-popup>
|
|
|
|
<balance-select ref="balanceSelect" @onSelectItem='selectBalanceItem'></balance-select>
|
|
|
|
<comMessage ref="comMessage"></comMessage>
|
|
|
|
<balance-qty-edit ref="balanceQtyEdit" @confirm="confirm" :isShowStatus="true"></balance-qty-edit>
|
|
|
|
</view>
|
|
|
|
</template>
|
|
|
|
|
|
|
|
<script setup lang="ts">
|
|
|
|
import winComScan from '@/mycomponents/scan/winComScan.vue'
|
|
|
|
import balance from '@/mycomponents/balance/balance.vue'
|
|
|
|
import balanceQtyEdit from '@/mycomponents/qty/balanceQtyEdit.vue'
|
|
|
|
import balanceSelect from '@/mycomponents/balance/balanceSelect.vue'
|
|
|
|
|
|
|
|
import {
|
|
|
|
getDetailOption,
|
|
|
|
getDetailEditRemoveOption
|
|
|
|
} from '@/common/array.js';
|
|
|
|
|
|
|
|
import {
|
|
|
|
getDirectoryItemArray,
|
|
|
|
} from '@/common/directory.js';
|
|
|
|
|
|
|
|
import {
|
|
|
|
calc
|
|
|
|
} from '@/common/calc.js';
|
|
|
|
import {
|
|
|
|
getWorkShopLineStation
|
|
|
|
} from '@/api/request2.js';
|
|
|
|
|
|
|
|
import {
|
|
|
|
getBalanceByManagementPrecision
|
|
|
|
} from '@/common/balance.js';
|
|
|
|
|
|
|
|
import {ref, onMounted} from 'vue';
|
|
|
|
|
|
|
|
const props = defineProps({
|
|
|
|
title: {
|
|
|
|
type: String,
|
|
|
|
default: ''
|
|
|
|
},
|
|
|
|
headerType: {
|
|
|
|
type: String,
|
|
|
|
default: "HPQ,HMQ"
|
|
|
|
}
|
|
|
|
});
|
|
|
|
const emit = defineEmits(['closeScan','updateData'])
|
|
|
|
|
|
|
|
const dataContent = ref({});
|
|
|
|
const jobContent = ref({});
|
|
|
|
const expendIcon = ref('arrow-down');
|
|
|
|
const show = ref(false);
|
|
|
|
const scanList = ref([]);
|
|
|
|
const toLocation = ref(null);
|
|
|
|
const toLocationCode = ref('');
|
|
|
|
const fromLocationList = ref([]);
|
|
|
|
const fromLocationCode = ref('');
|
|
|
|
const fromLocation = ref(null);
|
|
|
|
const issueRecord = ref([]); // 发货历史
|
|
|
|
const expand = ref(true);
|
|
|
|
const scanOptions = ref({});
|
|
|
|
const editItem = ref({});
|
|
|
|
const positionInfo = ref("请选择位置");
|
|
|
|
const positionList = ref([]);
|
|
|
|
const defaultValueList = ref([]);
|
|
|
|
const label = ref({});
|
|
|
|
const fromInventoryStatuses = ref([]);
|
|
|
|
const packageInfo = ref({});
|
|
|
|
const popup = ref(null);
|
|
|
|
const balanceSelect = ref(null);
|
|
|
|
const comscan = ref(null);
|
|
|
|
const comMessage = ref(null);
|
|
|
|
const receiptHint = ref(null);
|
|
|
|
const balanceQtyEdit = ref(null);
|
|
|
|
const detailOptions = ref('')
|
|
|
|
const toLocationCombox = ref('')
|
|
|
|
const showItem = ref('')
|
|
|
|
|
|
|
|
onMounted(() => {
|
|
|
|
detailOptions.value = getDetailOption();
|
|
|
|
scanOptions.value = getDetailEditRemoveOption();
|
|
|
|
});
|
|
|
|
|
|
|
|
// 方法
|
|
|
|
const openScanPopup = (content, jobcontent) => {
|
|
|
|
issueRecord.value = [];
|
|
|
|
dataContent.value = content;
|
|
|
|
jobContent.value = jobcontent;
|
|
|
|
initData();
|
|
|
|
positionInfo.value = jobContent.value.workShopCode + "-" + jobContent.value.subList[0].productionLineCode +
|
|
|
|
"-" + jobContent.value.subList[0].workStationCode;
|
|
|
|
show.value = true
|
|
|
|
setTimeout(() => {
|
|
|
|
getfocus();
|
|
|
|
}, 500);
|
|
|
|
};
|
|
|
|
|
|
|
|
const closeScanPopup = () => {
|
|
|
|
losefocus();
|
|
|
|
show.value = false
|
|
|
|
emit('closeScan');
|
|
|
|
// 清除数据,恢复默认值
|
|
|
|
// Object.assign(this.$data, this.$options.data());
|
|
|
|
};
|
|
|
|
|
|
|
|
const initData = () => {
|
|
|
|
fromLocationList.value = [];
|
|
|
|
if (dataContent.value != null) {
|
|
|
|
fromInventoryStatuses.value = getDirectoryItemArray(jobContent.value.outInventoryStatuses);
|
|
|
|
toLocation.value = dataContent.value[0];
|
|
|
|
toLocationCode.value = dataContent.value[0].toLocationCode;
|
|
|
|
fromLocationList.value = getFromLocationList();
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
const showBalanceSelect = (items, packageInfo) => {
|
|
|
|
packageInfo.value = packageInfo;
|
|
|
|
balanceSelect.value.openPopup(items);
|
|
|
|
};
|
|
|
|
|
|
|
|
const getFromLocationList = () => {
|
|
|
|
let list = [];
|
|
|
|
let location = dataContent.value.find(r => r.toLocationCode == toLocationCode.value);
|
|
|
|
if (location != undefined) {
|
|
|
|
location.Items.forEach(item => {
|
|
|
|
item.Locations.forEach(f => {
|
|
|
|
list.push(f.fromLocationCode);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
fromLocationCode.value = list[0];
|
|
|
|
return list;
|
|
|
|
} else {
|
|
|
|
comMessage.value.showErrorMessages('需求库位【' + toLocationCode.value + '】不存在', res => {
|
|
|
|
toLocationCode.value = '';
|
|
|
|
});
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
const fromLocationUpdate = (fromlocation) => {
|
|
|
|
let location = fromLocationList.value.find(r => r == fromlocation);
|
|
|
|
fromLocationCode.value = fromlocation;
|
|
|
|
};
|
|
|
|
|
|
|
|
const onScan = (result) => {
|
|
|
|
try {
|
|
|
|
if (fromLocationCode.value == '') {
|
|
|
|
showErrorMessage('请选择来源库位', res => {
|
|
|
|
toLocationCombox.value.onFocus();
|
|
|
|
});
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
let packageInfo = result.package;
|
|
|
|
let itemCode = result.label.itemCode;
|
|
|
|
let packingCode = result.label.packingNumber;
|
|
|
|
let lot = result.label.batch;
|
|
|
|
let item = toLocation.value.Items.find(r => r.itemCode == itemCode);
|
|
|
|
if (item == undefined) {
|
|
|
|
showErrorMessage('未查找到物料【' + itemCode + '】的发货明细', res => {
|
|
|
|
getfocus();
|
|
|
|
});
|
|
|
|
return;
|
|
|
|
} else {
|
|
|
|
uni.showLoading({
|
|
|
|
title: '加载中',
|
|
|
|
mask: true
|
|
|
|
});
|
|
|
|
getBalanceByManagementPrecision(result.label, fromLocationCode.value, fromInventoryStatuses.value, balanceRes => {
|
|
|
|
if (balanceRes.success) {
|
|
|
|
if (balanceRes.data.list.length == 0) {
|
|
|
|
showErrorMessage('在来源库位[' + fromLocationCode.value + '],未查找到该包装的库存记录', res => {
|
|
|
|
packGetFocus();
|
|
|
|
});
|
|
|
|
} else if (balanceRes.data.list.length == 1) {
|
|
|
|
let balance = balanceRes.data.list[0];
|
|
|
|
afterGetBalance(result.label, balance, packageInfo);
|
|
|
|
} else {
|
|
|
|
label.value = result.label;
|
|
|
|
showBalanceSelect(balanceRes.data.list, packageInfo);
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
showErrorMessage(balanceRes.message.message);
|
|
|
|
}
|
|
|
|
uni.hideLoading();
|
|
|
|
});
|
|
|
|
}
|
|
|
|
} catch (e) {
|
|
|
|
showErrorMessage(e.stack);
|
|
|
|
uni.hideLoading();
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
const selectBalanceItem = (balance) => {
|
|
|
|
afterGetBalance(balance, balance, packageInfo.value);
|
|
|
|
};
|
|
|
|
|
|
|
|
const afterGetBalance = (label, balance, packageInfo) => {
|
|
|
|
try {
|
|
|
|
let itemCode = label.itemCode;
|
|
|
|
let packingCode = label.packingNumber;
|
|
|
|
let lot = label.batch;
|
|
|
|
let item = toLocation.value.Items.find(r => r.itemCode == itemCode);
|
|
|
|
let fromLocation = item.Locations.find(l => l.fromLocationCode == fromLocationCode.value);
|
|
|
|
// 成品发货任务--同一物料,可以扫描提交不在任务中的库位
|
|
|
|
if (!fromLocation) {
|
|
|
|
fromLocation = {
|
|
|
|
Batchs: [{
|
|
|
|
Recommends: [],
|
|
|
|
Records: [],
|
|
|
|
batch: label.batch,
|
|
|
|
detail: {
|
|
|
|
...packageInfo,
|
|
|
|
fromLocationCode: balance.locationCode,
|
|
|
|
toLocationCode: toLocationCode.value
|
|
|
|
},
|
|
|
|
handleQty: 0,
|
|
|
|
packingNumber: null,
|
|
|
|
qty: label.qty,
|
|
|
|
uom: label.uom
|
|
|
|
}],
|
|
|
|
toLocationCode: toLocationCode.value,
|
|
|
|
fromLocationCode: balance.locationCode,
|
|
|
|
handleQty: 0,
|
|
|
|
qty: label.qty,
|
|
|
|
uom: label.uom
|
|
|
|
};
|
|
|
|
item.Locations.push(fromLocation);
|
|
|
|
}
|
|
|
|
if (fromLocation != undefined) {
|
|
|
|
let batch = fromLocation.Batchs.find(r => r.batch == lot);
|
|
|
|
if (batch != undefined) {
|
|
|
|
if (batch.Records == undefined) {
|
|
|
|
batch.Records = [];
|
|
|
|
}
|
|
|
|
|
|
|
|
let record = batch.Records.find(r => r.packingNumber == packingCode);
|
|
|
|
if (record == undefined) {
|
|
|
|
// 如果有推荐箱码
|
|
|
|
if (batch.Recommends && batch.Recommends.length > 0) {
|
|
|
|
let recommend = batch.Recommends.find(r => r.packingNumber == packingCode);
|
|
|
|
if (recommend != undefined) {
|
|
|
|
addRecord(batch, label, balance, packageInfo);
|
|
|
|
} else {
|
|
|
|
// 允许修改箱码
|
|
|
|
if (jobContent.value.allowModifyPackingNumber == 'TRUE') {
|
|
|
|
addRecord(batch, label, balance, packageInfo);
|
|
|
|
} else {
|
|
|
|
showErrorMessage('未查找到该箱码【' + packingCode + '】的明细', res => {
|
|
|
|
getfocus();
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
addRecord(batch, label, balance, packageInfo);
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
showErrorMessage('箱码【' + packingCode + '】已经扫描,请继续扫描下一箱', res => {
|
|
|
|
getfocus();
|
|
|
|
});
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
if (jobContent.value.allowModifyBatch == "TRUE") {
|
|
|
|
showQuestionMessage('在【' + fromLocationCode.value + '】库位下,未查找到批次【' + lot +
|
|
|
|
'】的发货明细,是否要继续发货?', res => {
|
|
|
|
if (res) {
|
|
|
|
let batch = createBatchInfo(label, balance, packageInfo);
|
|
|
|
fromLocation.Batchs.unshift(batch);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
} else {
|
|
|
|
showErrorMessage('未查找到批次【' + lot + '】的发货明细', res => {
|
|
|
|
getfocus();
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
showErrorMessage('未查找到推荐库位【' + fromLocationCode.value + '】的发货明细', res => {
|
|
|
|
getfocus();
|
|
|
|
});
|
|
|
|
}
|
|
|
|
} catch (e) {
|
|
|
|
showErrorMessage(e.stack, res => {
|
|
|
|
getfocus();
|
|
|
|
});
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
const createBatchInfo = (data, balance, packageInfo) => {
|
|
|
|
let batch = {
|
|
|
|
batch: data.lot || data.batch,
|
|
|
|
qty: 0,
|
|
|
|
uom: data.uom,
|
|
|
|
handleQty: Number(data.qty),
|
|
|
|
Records: [],
|
|
|
|
detail: {
|
|
|
|
fromLocationCode: fromLocationCode.value, //balance.locationCode
|
|
|
|
toLocationCode: toLocationCode.value,
|
|
|
|
itemCode: data.itemCode,
|
|
|
|
handleQty: Number(data.qty),
|
|
|
|
packingNumber: data.packingNumber,
|
|
|
|
qty: 0,
|
|
|
|
uom: data.uom,
|
|
|
|
itemName: packageInfo.itemName,
|
|
|
|
itemDesc1: packageInfo.itemDesc1,
|
|
|
|
itemDesc2: packageInfo.itemDesc2,
|
|
|
|
singlePrice: balance.singlePrice,
|
|
|
|
amount: balance.amount
|
|
|
|
}
|
|
|
|
};
|
|
|
|
let record = creatRecord(data, balance, packageInfo);
|
|
|
|
batch.Records.push(record);
|
|
|
|
issueRecord.value.unshift(record);
|
|
|
|
return batch;
|
|
|
|
};
|
|
|
|
|
|
|
|
const creatRecord = (label, balance, packageInfo) => {
|
|
|
|
balance.packQty = packageInfo.packQty;
|
|
|
|
balance.packUnit = packageInfo.packUnit;
|
|
|
|
let record = {
|
|
|
|
scaned: true,
|
|
|
|
itemCode: label.itemCode,
|
|
|
|
packingNumber: label.packingNumber,
|
|
|
|
batch: label.batch,
|
|
|
|
qty: Number(label.qty) > Number(balance.qty) ? Number(balance.qty) : Number(label.qty),
|
|
|
|
uom: balance.uom,
|
|
|
|
inventoryStatus: balance.inventoryStatus,
|
|
|
|
balance: balance,
|
|
|
|
toLocationCode: toLocationCode.value,
|
|
|
|
supplierCode: label.supplierCode,
|
|
|
|
packUnit: packageInfo.packUnit,
|
|
|
|
packQty: packageInfo.packQty,
|
|
|
|
singlePrice: balance.singlePrice,
|
|
|
|
amount: balance.amount
|
|
|
|
};
|
|
|
|
return record;
|
|
|
|
};
|
|
|
|
|
|
|
|
const calcBatchHandleQty = (batch) => {
|
|
|
|
let handleQty = 0;
|
|
|
|
batch.Records.forEach(res => {
|
|
|
|
handleQty = calc.add(handleQty, res.qty);
|
|
|
|
});
|
|
|
|
batch.handleQty = handleQty;
|
|
|
|
};
|
|
|
|
|
|
|
|
const addRecord = (batch, label, balance, packageInfo) => {
|
|
|
|
let record = creatRecord(label, balance, packageInfo);
|
|
|
|
batch.Records.push(record);
|
|
|
|
issueRecord.value.unshift(record);
|
|
|
|
calcBatchHandleQty(batch);
|
|
|
|
getfocus();
|
|
|
|
};
|
|
|
|
|
|
|
|
const getfocus = () => {
|
|
|
|
if (comscan.value != undefined) {
|
|
|
|
comscan.value.getfocus();
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
const losefocus = () => {
|
|
|
|
if (comscan.value != undefined) {
|
|
|
|
comscan.value.losefocus();
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
const expands = () => {
|
|
|
|
expand.value = !expand.value;
|
|
|
|
expendIcon.value = expand.value ? "arrow-down" : "arrow-up";
|
|
|
|
};
|
|
|
|
|
|
|
|
const swipeClick = (e, item, index) => {
|
|
|
|
if (e.content.text == "详情") {
|
|
|
|
detail(item);
|
|
|
|
} else if (e.content.text == "编辑") {
|
|
|
|
edit(item);
|
|
|
|
} else if (e.content.text == "移除") {
|
|
|
|
remove(item, index);
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
const edit = (item) => {
|
|
|
|
editItem.value = item;
|
|
|
|
item.balance.balanceQty = item.balance.qty;
|
|
|
|
balanceQtyEdit.value.openEditPopup(item.balance, item.qty);
|
|
|
|
};
|
|
|
|
|
|
|
|
const detail = (item) => {
|
|
|
|
showItem.value = item;
|
|
|
|
receiptHint.value.openScanPopup();
|
|
|
|
};
|
|
|
|
|
|
|
|
const remove = (record, index) => {
|
|
|
|
showQuestionMessage("确定移除扫描信息?", res => {
|
|
|
|
if (res) {
|
|
|
|
record.qty = 0;
|
|
|
|
issueRecord.value.splice(index, 1);
|
|
|
|
|
|
|
|
let item = toLocation.value.Items.find(r => r.itemCode == record.itemCode);
|
|
|
|
if (item != undefined) {
|
|
|
|
item.Locations.forEach(l => {
|
|
|
|
let batch = l.Batchs.find(b => b.packingNumber == record.packingNumber && b.batch == record.batch);
|
|
|
|
let rIndex = batch.Records.findIndex(r => r.packingNumber == record.packingNumber && r.batch == record.batch);
|
|
|
|
batch.Records.splice(rIndex, 1);
|
|
|
|
});
|
|
|
|
}
|
|
|
|
emit('updateData', item);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
};
|
|
|
|
|
|
|
|
const packGetFocus = () => {
|
|
|
|
comscan.value.getfocus();
|
|
|
|
};
|
|
|
|
|
|
|
|
const packLoseFocus = () => {
|
|
|
|
comscan.value.losefocus();
|
|
|
|
};
|
|
|
|
|
|
|
|
const showMessage = (message, callback) => {
|
|
|
|
setTimeout(() => {
|
|
|
|
packLoseFocus();
|
|
|
|
comMessage.value.showMessage(message, callback);
|
|
|
|
});
|
|
|
|
};
|
|
|
|
|
|
|
|
const showErrorMessage = (message, callback) => {
|
|
|
|
setTimeout(() => {
|
|
|
|
packLoseFocus();
|
|
|
|
comMessage.value.showErrorMessage(message, callback);
|
|
|
|
});
|
|
|
|
};
|
|
|
|
|
|
|
|
const showQuestionMessage = (message, callback) => {
|
|
|
|
setTimeout(() => {
|
|
|
|
packLoseFocus();
|
|
|
|
comMessage.value.showQuestionMessage(message, callback);
|
|
|
|
});
|
|
|
|
};
|
|
|
|
|
|
|
|
const confirm = (val) => {
|
|
|
|
editItem.value.qty = Number(val);
|
|
|
|
emit('updateData', editItem.value);
|
|
|
|
};
|
|
|
|
|
|
|
|
const cancle = () => {
|
|
|
|
closeScanPopup();
|
|
|
|
};
|
|
|
|
</script>
|
|
|
|
|
|
|
|
<style lang="scss">
|
|
|
|
button {
|
|
|
|
border: none;
|
|
|
|
}
|
|
|
|
|
|
|
|
button::after {
|
|
|
|
border: none
|
|
|
|
}
|
|
|
|
|
|
|
|
.scroll-view {
|
|
|
|
overflow-y: scroll;
|
|
|
|
height: auto;
|
|
|
|
max-height: 300rpx;
|
|
|
|
padding: 10rpx;
|
|
|
|
}
|
|
|
|
</style>
|