Browse Source

修改盘点

hella_online_20240829
lijuncheng 5 months ago
parent
commit
7cfa9ba78e
  1. 12
      src/pages.json
  2. 139
      src/pages/count/coms/comCountDetailcards.vue
  3. 647
      src/pages/count/job/countBlindDetail.vue
  4. 657
      src/pages/count/job/countDetail1.vue
  5. 10
      src/pages/count/job/countJob.vue
  6. 656
      src/pages/count/job/countLightDetail.vue

12
src/pages.json

@ -1789,9 +1789,17 @@
}
},
{
"path": "pages/count/job/countDetail",
"path": "pages/count/job/countBlindDetail",
"style": {
"navigationBarTitleText": "盘点详细",
"navigationBarTitleText": "盘点详细(盲盘)",
"enablePullDownRefresh": false
}
},
{
"path": "pages/count/job/countLightDetail",
"style": {
"navigationBarTitleText": "盘点详细(明盘)",
"enablePullDownRefresh": false
}

139
src/pages/count/coms/comCountDetailcards.vue

@ -0,0 +1,139 @@
<template>
<view class="" style="width: 100%;">
<view class="uni-flex uni-row space-between " style="align-items: center;" >
<view class="">
<item :dataContent="dataContent" style="margin-left: 15rpx;"></item>
<pack :packingCode="dataContent.packingNumber"></pack>
<batch :batch="dataContent.batch"></batch>
</view>
<view class="">
<view class="uni-flex uni-row">
<compareQty :dataContent="dataContent" :recommendQty="dataContent.recommendQty"
:handleQty="dataContent.handleQty"
> </compareQty>
</view>
<!-- <view v-if="dataContent.scaned" style="margin-top: 10rpx; float: right;">
<button type="primary" size="mini" @click="edit">编辑</button>
</view> -->
<view class="uni-flex uni-row" style="vertical-align:center" v-if="isDevlement()">
<text style="font-size: 30rpx;color: #2979ff; " @click="copy">复制采购</text>
<text style="font-size: 30rpx;color: #2979ff;" @click="copyPro">|制品</text>
</view>
<!-- <move-status :fromInventoryStatus="dataContent.inventoryStatus" >
</move-status> -->
</view>
</view>
</view>
</template>
<script>
import item from '@/mycomponents/item/item.vue'
import pack from '@/mycomponents/balance/pack.vue'
import batch from '@/mycomponents/balance/batch.vue'
import compareQty from '@/mycomponents/qty/compareQty.vue'
import moveStatus from '@/mycomponents/balance/moveStatus.vue'
import config from '@/static/config.js'
export default {
components: {
item,
pack,
batch,
compareQty,
moveStatus
},
data() {
return {
};
},
//
props: {
dataContent: {
type: Object,
default: null
},
handleQty: {
type: Number,
default: 0
},
isShowBalanceQty: {
type: Boolean,
default: true
},
showStdPack: {
type: Boolean,
default: false
},
},
methods: {
edit(){
this.$emit('editItem',this.dataContent)
},
isDevlement() {
return config.isDevelopment;
},
copy() {
// HPQ;V1.0;ICE115F11161AG;PP20230427000026;B20230427002;Q100
var content = "HPQ;V1.0;I" + this.dataContent.itemCode + ";P" + this.dataContent.packingNumber + ";B" + this.dataContent
.batch + ";Q" + this.dataContent.qty
// #ifdef H5
this.$copyText(content).then(
res => {
uni.showToast({
title: '复制采购标签成功',
icon: 'none'
})
}
)
// #endif
// #ifndef H5
uni.setClipboardData({
data: content,
success: () => {
uni.showToast({
title: '复制采购标签成功'
})
}
})
// #endif
},
copyPro() {
// HPQ;V1.0;ICE115F11161AG;PP20230427000026;B20230427002;Q100
var content = "HMQ;V1.0;I" + this.dataContent.itemCode + ";P" + this.dataContent.packingNumber + ";B" + this.dataContent
.batch + ";Q" + this.dataContent.qty
// #ifdef H5
this.$copyText(content).then(
res => {
uni.showToast({
title: '复制制品标签成功',
icon: 'none'
})
}
)
// #endif
// #ifndef H5
uni.setClipboardData({
data: content,
success: () => {
uni.showToast({
title: '复制制品标签成功'
})
}
})
// #endif
},
},
}
</script>
<style>
</style>

647
src/pages/count/job/countBlindDetail.vue

@ -0,0 +1,647 @@
<template>
<view class="page-wraper">
<view class="header">
<view class="">
<job-top :dataContent="jobContent"></job-top>
</view>
<view class="cen_card" style="padding-top: 10rpx;padding-bottom: 10rpx;">
<view class="cell_box uni-flex uni-row" style=" font-weight: bold;">
<view class="cell_info" style="color: #000">
<view class="text_lightblue" style="color: #000">阶段</view>
<view style="color: #000">{{getCountStageName(jobContent.stage)}}</view>
</view>
<view class="cell_info">
<view class="text_lightblue" style="color: #000">策略</view>
<view style="color: #000">{{ isOpenCount(jobContent.isOpenCount) }}</view>
</view>
<view class="cell_info">
<view class="text_lightblue" style="color: #000">库位</view>
<view style="color: #000">{{fromLocationCode}}</view>
</view>
<view class="cell_info">
<view class="text_lightblue" style="color: #000">已扫描</view>
<view style="color: #000">{{scanCount}}</view>
</view>
</view>
</view>
</view>
<u-line color="#D8D8D8" style="margin-bottom: 15rpx"></u-line>
<view style="margin-top: 170rpx; margin-bottom: 50rpx;">
<u-line color="#D8D8D8" style="margin-bottom: 15rpx"></u-line>
<scroll-view scroll-y="true" class="" style="margin-bottom: 50px;">
<view class="detail-list" v-for="(item, index) in showList" :key="item.id">
<uni-swipe-action ref="swipeAction">
<uni-swipe-action-item @click="swipeClick($event,item)"
:right-options="item.scaned?scanOptions:detailOptions">
<view class="uni-flex uni-row " style="align-items: center;"
:class="item.scaned?'scan_view':'item'">
<view class="" style="font-size: 30rpx; font-weight: bold;">
{{index+1}}.
</view>
<comCountDetailcards :ref="'countDetail_'+index" :dataContent="item" :index="index"
@editItem="editItem" :settingParam="jobContent" @remove="updateData"
@updateData="updateData">
</comCountDetailcards>
</view>
<view class='split_line'></view>
</uni-swipe-action-item>
</uni-swipe-action>
</view>
</scroll-view>
<uni-load-more :status="loadingType" v-if="showList.length>0" />
</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>
<view class=" uni-flex uni-row">
<button class="btn_single_commit" hover-class="btn_commit_after" @click="commit">提交</button>
</view>
</view>
</view>
<win-scan-button @goScan='openScanPopup'></win-scan-button>
<win-scan-pack-and-location ref="scanPopup" :noShowBalanceMessage="true" :queryBalance="false" @getResult='getScanResult'>
</win-scan-pack-and-location>
<count-qty-edit ref="countQtyEdit" @confirm="editConfirm" @close="editClose" :isShowStatus="true"
:allowEditStatus="editInventoryStatus" :isShowBalance="jobContent.isOpenCount=='TRUE'">
</count-qty-edit>
<detail-info-popup ref="detailInfoPopup"></detail-info-popup>
<comMessage ref="comMessage"></comMessage>
</view>
</template>
<script>
import {
getCountJobDetail,
takeCountJob,
cancleTakeCountJob,
countJobSubmit
} from '@/api/request2.js';
import {
calc
} from '@/common/calc.js';
import {
Decimal
} from 'decimal.js'; //
import {
goHome,
navigateBack,
getPackingNumberAndBatch,
compare
} from '@/common/basic.js';
import {
getCountStageName
} from '@/common/directory.js';
import {
getDetailOption,
getDetailEditRemoveOption,
getClearOption
} from '@/common/array.js';
import winScanButton from '@/mycomponents/scan/winScanButton.vue'
import winScanPack from '@/mycomponents/scan/winScanPack.vue'
import comCountDetailcards from '@/pages/count/coms/comCountDetailcards.vue'
import winScanPackAndLocation from "@/mycomponents/scan/winScanPackAndLocation.vue"
import countQtyEdit from '@/mycomponents/qty/countQtyEdit.vue'
import jobTop from '@/mycomponents/job/jobTop.vue'
import detailInfoPopup from '@/pages/count/coms/detailInfoPopup.vue'
export default {
name: 'receipt_detail',
components: {
winScanButton,
winScanPack,
comCountDetailcards,
winScanPackAndLocation,
countQtyEdit,
jobTop,
detailInfoPopup
},
data() {
return {
id: '',
receiptJob: {},
fromLocationCode: '',
isShowPackingCode: true,
jobContent: {}, //
subList: [], //subList
detailSource: [], //
balance: {}, //
editInventoryStatus: false,
package: {}, //
label: {}, //
currentEditItem: {},
jobStatus: "",
allCount: 0,
scanCount: 0,
index: 0,
pageSize: 20,
showList: [],
loadingType: "",
allDetails: [],
scanOptions: [],
detailOptions: [],
};
},
onLoad(option) {
this.id = option.id;
if (this.id != undefined) {
//
if (option.status == "1") {
this.receive((callback => {
this.getDetail();
}));
} else {
this.getDetail();
}
}
this.detailOptions = getDetailOption();
this.scanOptions = getDetailEditRemoveOption();
},
//
onNavigationBarButtonTap(e) {
if (e.index === 0) {
goHome();
}
},
//
onBackPress(e) {
//
if (e.from === 'backbutton') {
if (this.jobStatus == "2") {
//
cancleTakeCountJob(this.id).then(res => {
uni.navigateBack();
}).catch(error => {
uni.navigateBack();
})
} else {
uni.navigateBack();
}
return true;
}
},
onPullDownRefresh() {
this.initList();
uni.stopPullDownRefresh();
},
mounted() {
},
onReachBottom() {
console.log("onReachBottom")
//
if (this.loadingType == 'nomore') {
return;
}
this.index++;
var list = this.getDataPage(this.index, this.pageSize)
if (list.length > 0) {
// this.showList=list
this.showList = this.showList.concat(list)
} else {
//
this.loadingType = "nomore";
}
},
methods: {
//
receive(callback) {
if (this.id != null) {
takeCountJob(this.id).then(res => {
callback();
}).catch(error => {
this.showErrorMessage(error)
})
}
},
getDetail() {
var that = this;
uni.showLoading({
title: "加载中....",
mask: true
});
getCountJobDetail(that.id).then(res => {
uni.hideLoading();
if (res.data == null) {
that.showMessage('未获取到详情');
} else {
that.jobContent = res.data;
that.jobStatus = res.data.status;
that.fromLocationCode = that.jobContent.locationCode;
// res.data.subList.forEach(item => {
// item.recommendQty = item.qty
// item.handleQty = 0
// item.countTime = new Date()
// item.fromLocationCode =that.fromLocationCode;
// })
// that.allDetails = res.data.subList;
// that.allCount = res.data.subList.length;
that.initList()
}
}).catch(error => {
uni.hideLoading()
this.showErrorMessage(error)
})
},
initList() {
this.index = 1;
this.showList = []
this.loadingType = "";
this.showList = this.getDataPage(this.index, this.pageSize)
},
getDataPage(pageNo, pageSize) {
//
var totalPages = Math.ceil(this.allCount / pageSize);
//
const start = (pageNo - 1) * pageSize;
const end = start + pageSize; //
return this.allDetails.slice(start, end)
},
swipeClick(e, item) {
if (e.content.text == "详情") {
this.detail(item)
} else if (e.content.text == "编辑") {
this.editItem(item)
} else if (e.content.text == "移除") {
this.remove(item)
}
},
detail(item) {
this.showItem = item;
this.$refs.detailInfoPopup.openPopup(item);
},
remove(item, index) {
this.$refs.comMessage.showQuestionMessage("确定移除扫描信息?",
res => {
if (res) {
item.scaned = false;
item.handleQty = 0;
this.$emit('removePack')
}
});
},
updateData() {},
openScanPopup() {
var fromlocationList = [];
fromlocationList.push(this.fromLocationCode)
this.$refs.scanPopup.openScanPopupForJob(this.fromLocationCode, fromlocationList, this.jobContent);
},
closeScanPopup() {
if (this.$refs.scanPopup != undefined) {
this.$refs.scanPopup.closeScanPopup();
}
},
scanPopupGetFocus() {
if (this.$refs.scanPopup != undefined) {
this.$refs.scanPopup.packGetFocus();
}
},
scanPopupLoseFocus() {
if (this.$refs.scanPopup != undefined) {
this.$refs.scanPopup.packLoseFocus();
}
},
//
getScanResult(result) {
var itemCode = result.label.itemCode
var packingNumber = result.label.packingNumber
var pack = result.package
var batch = result.label.batch
var inventoryStatus = "OK"
var qty = result.label.qty ? result.label.qty : 0;
//
let items = this.allDetails.filter(r =>
r.itemCode === itemCode &&
r.packingNumber === packingNumber &&
r.batch === batch &&
r.inventoryStatus === inventoryStatus)
//,
if (items.length == 0) {
var detail = this.createAddDetailInfo(pack,qty)
detail.countTime = new Date();
this.allDetails.push(detail)
this.updateList();
this.$refs.countQtyEdit.openEditPopupShowSeconds(detail,
null);
} else {
var selectItem = items[0]
//
if (selectItem.scaned) {
this.$refs.comMessage.showQuestionMessage("包装【" + result.label.packingNumber +
"】已经完成盘点,是否要编辑盘点结果?",
res => {
if (res) {
this.currentEditItem = selectItem;
this.$refs.countQtyEdit.openEditPopup(selectItem,
null);
} else {
this.scanPopupGetFocus();
}
})
} else {
//
selectItem.scaned = true;
selectItem.recommendQty =Number(qty);
selectItem.handleQty = Number(qty)
selectItem.packQty = pack.packQty
selectItem.packUnit = pack.packUnit
this.$refs.countQtyEdit.openEditPopupShowSeconds(selectItem,
null);
selectItem.countTime = new Date();
this.updateList();
}
}
},
editConfirm(qty, inventoryStatus, mode) {
let that = this;
//
if (mode == 'edit') {
this.currentEditItem.handleQty = qty;
this.currentEditItem.inventoryStatus = inventoryStatus;
}
//
this.currentEditItem.countTime = new Date();
this.updateList();
this.scanPopupGetFocus();
},
updateList() {
this.allDetails.sort(compare('countTime')); //
this.initList()
this.scanPopupLoseFocus()
this.calcAllCount()
this.calcScanCount()
},
calcAllCount() {
this.allCount = this.allDetails.length;
},
calcScanCount() {
this.scanCount = this.allDetails.filter(r => r.scaned === true).length;
},
editClose() {
this.scanPopupGetFocus();
},
//
createAddDetailInfo(pack,qty) {
var detail = {
id: this.jobContent.masterId, //
scaned: true,
countDetailNumber: "",
ownerCode: "",
packingNumber: pack.number,
containerNumber: "",
batch: pack.batch,
inventoryStatus: "OK",
itemCode: pack.itemCode,
itemName: pack.itemName,
itemDesc1: pack.itemDesc1,
itemDesc2: pack.itemDesc2,
packQty: pack.packQty,
packUnit: pack.packUnit,
projectCode: "",
recommendQty:Number(qty),
qty: Number(qty),
handleQty: Number(qty),
uom: pack.uom,
number: pack.number,
remark: "",
countQty: 0,
balanceQty: 0,
fromLocationCode: this.fromLocationCode,
creator: this.$store.state.user.id,
countTime: new Date()
}
return detail;
},
commit() {
this.calcAllCount()
this.calcScanCount()
if (this.scanCount == this.allCount) {
this.submitJob();
} else if (this.scanCount < this.allCount) {
//
if (this.jobContent.allowPartialComplete == "TRUE") {
//
this.$refs.comMessage.showQuestionMessage("已经扫描[" + this.scanCount +
"]总共[" +
this.allCount + "],是否把未扫描的盘点数量设置为0?",
res => {
if (res) {
this.allDetails.forEach(item => {
if (!item.scaned) {
item.scaned = true;
item.handleQty = 0
}
})
this.submitJob();
}
});
} else {
//
this.$refs.comMessage.showErrorMessage('请完成扫描后,再进行提交<br>' + "已经扫描[" + this.scanCount +
"]总共[" + this
.getTotalCount() + "]", res => {
if (res) {
this.openScanPopup();
}
});
}
}
},
submitJob() {
uni.showLoading({
title: "提交中....",
mask: true
});
var params = this.setParams()
console.log("提交参数", JSON.stringify(params));
countJobSubmit(params).then(res => {
uni.hideLoading()
if (res.data) {
this.showCommitSuccessMessage("提交成功<br>生成盘点记录<br>" + res.data)
} else {
this.showErrorMessage("提交失败[" + res.msg + "]")
}
}).catch(error => {
uni.hideLoading()
this.showErrorMessage(error)
})
},
setParams() {
var subList = []
var creator = this.$store.state.user.id
this.allDetails.forEach(item => {
if (item.scaned) {
item.countQty = item.handleQty;
}
subList.push(item)
})
this.jobContent.subList = subList
this.jobContent.creator = creator;
return this.jobContent;
},
showMessage(message) {
this.$refs.comMessage.showMessage(message, res => {
if (res) {
this.afterCloseMessage()
}
});
},
showErrorMessage(message) {
this.$refs.comMessage.showErrorMessage(message, res => {
if (res) {
this.afterCloseMessage()
}
});
},
showScanMessage(message) {
this.$refs.comMessage.showScanMessage(message);
},
afterCloseMessage() {
this.scanPopupGetFocus();
},
closeScanMessage() {
this.scanPopupGetFocus();
},
editItem(item) {
this.currentEditItem = item;
this.$refs.countQtyEdit.openEditPopup(this.currentEditItem,
null);
},
showCommitSuccessMessage(hint) {
this.$refs.comMessage.showSuccessMessage(hint, res => {
navigateBack(1);
})
},
getCountStageName(value) {
return getCountStageName(value)
},
isOpenCount(value) {
return value == "TRUE" ? "明盘" : "盲盘"
}
}
}
</script>
<style scoped lang="scss">
page {
width: 100%;
height: 100%;
background-color: #fff;
}
.page-wraper {
display: flex;
flex-direction: column;
width: 100%;
height: 100%;
}
.header {
position: fixed;
top: 88rpx;
left: 0;
width: 100%;
background-color: #fff;
z-index: 10;
padding: 10rpx;
/* 确保头部在内容之上 */
}
.page-footer {
position: fixed;
bottom: 0;
left: 0;
right: 0;
}
.page-main {
flex: 1;
position: relative;
}
.page-main-scroll {
position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 0;
}
.page-main-list {
/* height: 80rpx;
line-height: 80rpx; */
text-align: center;
background: #e0e0e0;
}
.item {
background-color: #fff;
}
.item_scaned {
background-color: antiquewhite;
}
</style>

657
src/pages/count/job/countDetail1.vue

@ -0,0 +1,657 @@
<template>
<view class="page-wraper">
<view class="header">
<view class="">
<job-top :dataContent="jobContent"></job-top>
</view>
<view class="cen_card" style="padding-top: 10rpx;padding-bottom: 10rpx;">
<view class="cell_box uni-flex uni-row" style=" font-weight: bold;">
<view class="cell_info" style="color: #000">
<view class="text_lightblue" style="color: #000">阶段</view>
<view style="color: #000">{{getCountStageName(jobContent.stage)}}</view>
</view>
<view class="cell_info">
<view class="text_lightblue" style="color: #000">策略</view>
<view style="color: #000">{{ isOpenCount(jobContent.isOpenCount) }}</view>
</view>
<view class="cell_info">
<view class="text_lightblue" style="color: #000">库位</view>
<view style="color: #000">{{fromLocationCode}}</view>
</view>
<view class="cell_info">
<view class="text_lightblue" style="color: #000">总数</view>
<view style="color: #000"> {{allCount}}</view>
</view>
<view class="cell_info">
<view class="text_lightblue" style="color: #000">已扫描</view>
<view style="color: #000">{{scanCount}}</view>
</view>
</view>
</view>
</view>
<view style="margin-top: 170rpx; margin-bottom: 50rpx;">
<u-line color="#D8D8D8" style="margin-bottom: 15rpx"></u-line>
<scroll-view scroll-y="true" class="" style="margin-bottom: 50px;">
<view class="detail-list" v-for="(item, index) in showList" :key="item.id">
<uni-swipe-action ref="swipeAction">
<uni-swipe-action-item @click="swipeClick($event,item)"
:right-options="item.scaned?scanOptions:detailOptions">
<view class="uni-flex uni-row " style="align-items: center;"
:class="item.scaned?'scan_view':'item'">
<view class="" style="font-size: 30rpx; font-weight: bold;">
{{index+1}}.
</view>
<comCountDetailcards :ref="'countDetail_'+index" :dataContent="item" :index="index"
@editItem="editItem" :settingParam="jobContent" @remove="updateData"
@updateData="updateData">
</comCountDetailcards>
</view>
<view class='split_line'></view>
</uni-swipe-action-item>
</uni-swipe-action>
</view>
</scroll-view>
<uni-load-more :status="loadingType" v-if="showList.length>0" />
</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>
<view class=" uni-flex uni-row">
<button class="btn_single_commit" hover-class="btn_commit_after" @click="commit">提交</button>
</view>
</view>
</view>
<win-scan-button @goScan='openScanPopup'></win-scan-button>
<win-scan-pack-and-location ref="scanPopup" :noShowBalanceMessage="true" @getCountScanResult='getScanResult'>
</win-scan-pack-and-location>
<count-qty-edit ref="countQtyEdit" @confirm="editConfirm" @close="editClose" :isShowStatus="true"
:allowEditStatus="editInventoryStatus" :isShowBalance="jobContent.isOpenCount=='TRUE'">
</count-qty-edit>
<detail-info-popup ref="detailInfoPopup"></detail-info-popup>
<comMessage ref="comMessage"></comMessage>
</view>
</template>
<script>
import {
getCountJobDetail,
takeCountJob,
cancleTakeCountJob,
countJobSubmit
} from '@/api/request2.js';
import {
calc
} from '@/common/calc.js';
import {
Decimal
} from 'decimal.js'; //
import {
goHome,
navigateBack,
getPackingNumberAndBatch,
compare
} from '@/common/basic.js';
import {
getCountStageName
} from '@/common/directory.js';
import {
getDetailOption,
getDetailEditRemoveOption,
getClearOption
} from '@/common/array.js';
import winScanButton from '@/mycomponents/scan/winScanButton.vue'
import winScanPack from '@/mycomponents/scan/winScanPack.vue'
import comCountDetailcards from '@/pages/count/coms/comCountDetailcards.vue'
import winScanPackAndLocation from "@/mycomponents/scan/winScanPackAndLocation.vue"
import countQtyEdit from '@/mycomponents/qty/countQtyEdit.vue'
import jobTop from '@/mycomponents/job/jobTop.vue'
import detailInfoPopup from '@/pages/count/coms/detailInfoPopup.vue'
export default {
name: 'receipt_detail',
components: {
winScanButton,
winScanPack,
comCountDetailcards,
winScanPackAndLocation,
countQtyEdit,
jobTop,
detailInfoPopup
},
data() {
return {
id: '',
receiptJob: {},
fromLocationCode: '',
isShowPackingCode: true,
jobContent: {}, //
subList: [], //subList
detailSource: [], //
balance: {}, //
editInventoryStatus: false,
package: {}, //
label: {}, //
currentEditItem: {},
jobStatus: "",
allCount: 0,
scanCount: 0,
index: 0,
pageSize: 20,
showList: [],
loadingType: "",
allDetails: [],
scanOptions: [],
detailOptions: [],
};
},
onLoad(option) {
this.id = option.id;
if (this.id != undefined) {
//
if (option.status == "1") {
this.receive((callback => {
this.getDetail();
}));
} else {
this.getDetail();
}
}
this.detailOptions = getDetailOption();
this.scanOptions = getDetailEditRemoveOption();
},
//
onNavigationBarButtonTap(e) {
if (e.index === 0) {
goHome();
}
},
//
onBackPress(e) {
//
if (e.from === 'backbutton') {
if (this.jobStatus == "2") {
//
cancleTakeCountJob(this.id).then(res => {
uni.navigateBack();
}).catch(error => {
uni.navigateBack();
})
} else {
uni.navigateBack();
}
return true;
}
},
onPullDownRefresh() {
this.initList();
uni.stopPullDownRefresh();
},
mounted() {
},
onReachBottom() {
console.log("onReachBottom")
//
if (this.loadingType == 'nomore') {
return;
}
this.index++;
var list = this.getDataPage(this.index, this.pageSize)
if (list.length > 0) {
// this.showList=list
this.showList = this.showList.concat(list)
} else {
//
this.loadingType = "nomore";
}
},
methods: {
//
receive(callback) {
if (this.id != null) {
takeCountJob(this.id).then(res => {
callback();
}).catch(error => {
this.showErrorMessage(error)
})
}
},
getDetail() {
var that = this;
uni.showLoading({
title: "加载中....",
mask: true
});
getCountJobDetail(that.id).then(res => {
uni.hideLoading();
if (res.data == null) {
that.showMessage('未获取到详情');
} else {
that.jobContent = res.data;
that.jobStatus = res.data.status;
that.fromLocationCode = that.jobContent.locationCode;
res.data.subList.forEach(item => {
item.recommendQty = item.qty
item.handleQty = 0
item.countTime = new Date()
item.fromLocationCode =that.fromLocationCode;
})
that.allDetails = res.data.subList;
that.allCount = res.data.subList.length;
that.initList()
}
}).catch(error => {
uni.hideLoading()
this.showErrorMessage(error)
})
},
initList() {
this.index = 1;
this.showList = []
this.loadingType = "";
this.showList = this.getDataPage(this.index, this.pageSize)
},
getDataPage(pageNo, pageSize) {
//
var totalPages = Math.ceil(this.allCount / pageSize);
//
const start = (pageNo - 1) * pageSize;
const end = start + pageSize; //
return this.allDetails.slice(start, end)
},
swipeClick(e, item) {
if (e.content.text == "详情") {
this.detail(item)
} else if (e.content.text == "编辑") {
this.editItem(item)
} else if (e.content.text == "移除") {
this.remove(item)
}
},
detail(item) {
this.showItem = item;
this.$refs.detailInfoPopup.openPopup(item);
},
remove(item, index) {
this.$refs.comMessage.showQuestionMessage("确定移除扫描信息?",
res => {
if (res) {
item.scaned = false;
item.handleQty = 0;
this.$emit('removePack')
}
});
},
updateData() {},
openScanPopup() {
var fromlocationList = [];
fromlocationList.push(this.fromLocationCode)
this.$refs.scanPopup.openScanPopupForJob(this.fromLocationCode, fromlocationList, this.jobContent);
},
closeScanPopup() {
if (this.$refs.scanPopup != undefined) {
this.$refs.scanPopup.closeScanPopup();
}
},
scanPopupGetFocus() {
if (this.$refs.scanPopup != undefined) {
this.$refs.scanPopup.packGetFocus();
}
},
scanPopupLoseFocus() {
if (this.$refs.scanPopup != undefined) {
this.$refs.scanPopup.packLoseFocus();
}
},
//
getScanResult(result) {
var itemCode = result.label.itemCode
var packingNumber = result.label.packingNumber
var pack = result.package
var batch = result.label.batch
var inventoryStatus = result.balance ? result.balance.inventoryStatus : "OK"
var qty = result.balance ? result.balance.qty : 0;
//
let items = this.allDetails.filter(r =>
r.itemCode === itemCode &&
r.packingNumber === packingNumber &&
r.batch === batch &&
r.inventoryStatus === inventoryStatus)
//,
if (items.length == 0) {
this.$refs.comMessage.showQuestionMessage("包装【" + result.label.packingNumber +
"】不在任务列表中,是否要添加到列表中?",
res => {
//
if (res) {
var detail = this.createAddDetailInfo(pack)
detail.countTime = new Date();
this.allDetails.push(detail)
this.updateList();
this.$refs.countQtyEdit.openEditPopupShowSeconds(detail,
null);
} else {
this.scanPopupGetFocus();
}
})
} else {
var selectItem = items[0]
//
if (selectItem.scaned) {
this.$refs.comMessage.showQuestionMessage("包装【" + result.label.packingNumber +
"】已经完成盘点,是否要编辑盘点结果?",
res => {
if (res) {
this.currentEditItem = selectItem;
this.$refs.countQtyEdit.openEditPopup(selectItem,
null);
} else {
this.scanPopupGetFocus();
}
})
} else {
//
selectItem.scaned = true;
selectItem.handleQty = Number(qty)
selectItem.packQty = pack.packQty
selectItem.packUnit = pack.packUnit
this.$refs.countQtyEdit.openEditPopupShowSeconds(selectItem,
null);
selectItem.countTime = new Date();
this.updateList();
}
}
},
editConfirm(qty, inventoryStatus, mode) {
let that = this;
//
if (mode == 'edit') {
this.currentEditItem.handleQty = qty;
this.currentEditItem.inventoryStatus = inventoryStatus;
}
//
this.currentEditItem.countTime = new Date();
this.updateList();
this.scanPopupGetFocus();
},
updateList() {
this.allDetails.sort(compare('countTime')); //
this.initList()
this.scanPopupLoseFocus()
this.calcAllCount()
this.calcScanCount()
},
calcAllCount() {
this.allCount = this.allDetails.length;
},
calcScanCount() {
this.scanCount = this.allDetails.filter(r => r.scaned === true).length;
},
editClose() {
this.scanPopupGetFocus();
},
//
createAddDetailInfo(pack) {
var detail = {
id: this.jobContent.masterId, //
scaned: true,
countDetailNumber: "",
ownerCode: "",
packingNumber: pack.number,
containerNumber: "",
batch: pack.batch,
inventoryStatus: "OK",
itemCode: pack.itemCode,
itemName: pack.itemName,
itemDesc1: pack.itemDesc1,
itemDesc2: pack.itemDesc2,
packQty: pack.packQty,
packUnit: pack.packUnit,
projectCode: "",
qty: 0,
handleQty: 0,
uom: pack.uom,
number: pack.number,
remark: "",
countQty: 0,
balanceQty: 0,
fromLocationCode: this.fromLocationCode,
creator: this.$store.state.user.id,
countTime: new Date()
}
return detail;
},
commit() {
this.calcAllCount()
this.calcScanCount()
if (this.scanCount == this.allCount) {
this.submitJob();
} else if (this.scanCount < this.allCount) {
//
if (this.jobContent.allowPartialComplete == "TRUE") {
//
this.$refs.comMessage.showQuestionMessage("已经扫描[" + this.scanCount +
"]总共[" +
this.allCount + "],是否把未扫描的盘点数量设置为0?",
res => {
if (res) {
this.allDetails.forEach(item => {
if (!item.scaned) {
item.scaned = true;
item.handleQty = 0
}
})
this.submitJob();
}
});
} else {
//
this.$refs.comMessage.showErrorMessage('请完成扫描后,再进行提交<br>' + "已经扫描[" + this.scanCount +
"]总共[" + this
.getTotalCount() + "]", res => {
if (res) {
this.openScanPopup();
}
});
}
}
},
submitJob() {
uni.showLoading({
title: "提交中....",
mask: true
});
var params = this.setParams()
console.log("提交参数", JSON.stringify(params));
// countJobSubmit(params).then(res => {
// uni.hideLoading()
// if (res.data) {
// this.showCommitSuccessMessage("<br><br>" + res.data)
// } else {
// this.showErrorMessage("[" + res.msg + "]")
// }
// }).catch(error => {
// uni.hideLoading()
// this.showErrorMessage(error)
// })
},
setParams() {
var subList = []
var creator = this.$store.state.user.id
this.allDetails.forEach(item => {
if (item.scaned) {
item.countQty = item.handleQty;
}
subList.push(item)
})
this.jobContent.subList = subList
this.jobContent.creator = creator;
return this.jobContent;
},
showMessage(message) {
this.$refs.comMessage.showMessage(message, res => {
if (res) {
this.afterCloseMessage()
}
});
},
showErrorMessage(message) {
this.$refs.comMessage.showErrorMessage(message, res => {
if (res) {
this.afterCloseMessage()
}
});
},
showScanMessage(message) {
this.$refs.comMessage.showScanMessage(message);
},
afterCloseMessage() {
this.scanPopupGetFocus();
},
closeScanMessage() {
this.scanPopupGetFocus();
},
editItem(item) {
this.currentEditItem = item;
this.$refs.countQtyEdit.openEditPopup(this.currentEditItem,
null);
},
showCommitSuccessMessage(hint) {
this.$refs.comMessage.showSuccessMessage(hint, res => {
navigateBack(1);
})
},
getCountStageName(value) {
return getCountStageName(value)
},
isOpenCount(value) {
return value == "TRUE" ? "明盘" : "盲盘"
}
}
}
</script>
<style scoped lang="scss">
page {
width: 100%;
height: 100%;
background-color: #fff;
}
.page-wraper {
display: flex;
flex-direction: column;
width: 100%;
height: 100%;
}
.header {
position: fixed;
top: 88rpx;
left: 0;
width: 100%;
background-color: #fff;
z-index: 10;
padding: 10rpx;
/* 确保头部在内容之上 */
}
.page-footer {
position: fixed;
bottom: 0;
left: 0;
right: 0;
}
.page-main {
flex: 1;
position: relative;
}
.page-main-scroll {
position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 0;
}
.page-main-list {
/* height: 80rpx;
line-height: 80rpx; */
text-align: center;
background: #e0e0e0;
}
.item {
background-color: #fff;
}
.item_scaned {
background-color: antiquewhite;
}
</style>

10
src/pages/count/job/countJob.vue

@ -193,9 +193,17 @@
},
openJobDetail(item) {
//
if(item.isOpenCount=="TRUE"){
uni.navigateTo({
url: './countDetail?id=' + item.id + '&status=' + item.status
url: './countLightDetail?id=' + item.id + '&status=' + item.status
});
}else {
//
uni.navigateTo({
url: './countBlindDetail?id=' + item.id + '&status=' + item.status
});
}
},
showItemList(itemList) {

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

@ -0,0 +1,656 @@
<template>
<view class="page-wraper">
<view class="header">
<view class="">
<job-top :dataContent="jobContent"></job-top>
</view>
<view class="cen_card" style="padding-top: 10rpx;padding-bottom: 10rpx;">
<view class="cell_box uni-flex uni-row" style=" font-weight: bold;">
<view class="cell_info" style="color: #000">
<view class="text_lightblue" style="color: #000">阶段</view>
<view style="color: #000">{{getCountStageName(jobContent.stage)}}</view>
</view>
<view class="cell_info">
<view class="text_lightblue" style="color: #000">策略</view>
<view style="color: #000">{{ isOpenCount(jobContent.isOpenCount) }}</view>
</view>
<view class="cell_info">
<view class="text_lightblue" style="color: #000">库位</view>
<view style="color: #000">{{fromLocationCode}}</view>
</view>
<view class="cell_info">
<view class="text_lightblue" style="color: #000">总数</view>
<view style="color: #000"> {{allCount}}</view>
</view>
<view class="cell_info">
<view class="text_lightblue" style="color: #000">已扫描</view>
<view style="color: #000">{{scanCount}}</view>
</view>
</view>
</view>
</view>
<u-line color="#D8D8D8" style="margin-bottom: 15rpx"></u-line>
<view style="margin-top: 170rpx; padding-bottom: 130rpx;">
<u-line color="#D8D8D8" style="margin-bottom: 15rpx"></u-line>
<scroll-view scroll-y="true" class="" style="margin-bottom: 0px;">
<view class="detail-list" v-for="(item, index) in showList" :key="item.id">
<uni-swipe-action ref="swipeAction">
<uni-swipe-action-item @click="swipeClick($event,item)"
:right-options="item.scaned?scanOptions:detailOptions">
<view class="uni-flex uni-row " style="align-items: center;"
:class="item.scaned?'scan_view':'item'">
<view class="" style="font-size: 30rpx; font-weight: bold;">
{{index+1}}.
</view>
<comCountDetailcards :ref="'countDetail_'+index" :dataContent="item" :index="index"
@editItem="editItem" :settingParam="jobContent" @remove="updateData"
@updateData="updateData">
</comCountDetailcards>
</view>
<view class='split_line'></view>
</uni-swipe-action-item>
</uni-swipe-action>
</view>
</scroll-view>
<uni-load-more :status="loadingType" v-if="showList.length>0" />
</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>
<view class=" uni-flex uni-row">
<button class="btn_single_commit" hover-class="btn_commit_after" @click="commit">提交</button>
</view>
</view>
</view>
<win-scan-button @goScan='openScanPopup'></win-scan-button>
<win-scan-pack-and-location ref="scanPopup" :noShowBalanceMessage="true" @getCountScanResult='getScanResult'>
</win-scan-pack-and-location>
<count-qty-edit ref="countQtyEdit" @confirm="editConfirm" @close="editClose" :isShowStatus="true"
:allowEditStatus="editInventoryStatus" :isShowBalance="jobContent.isOpenCount=='TRUE'">
</count-qty-edit>
<detail-info-popup ref="detailInfoPopup"></detail-info-popup>
<comMessage ref="comMessage"></comMessage>
</view>
</template>
<script>
import {
getCountJobDetail,
takeCountJob,
cancleTakeCountJob,
countJobSubmit
} from '@/api/request2.js';
import {
calc
} from '@/common/calc.js';
import {
Decimal
} from 'decimal.js'; //
import {
goHome,
navigateBack,
getPackingNumberAndBatch,
compare
} from '@/common/basic.js';
import {
getCountStageName
} from '@/common/directory.js';
import {
getDetailOption,
getDetailEditRemoveOption,
getClearOption
} from '@/common/array.js';
import winScanButton from '@/mycomponents/scan/winScanButton.vue'
import winScanPack from '@/mycomponents/scan/winScanPack.vue'
import comCountDetailcards from '@/pages/count/coms/comCountDetailcards.vue'
import winScanPackAndLocation from "@/mycomponents/scan/winScanPackAndLocation.vue"
import countQtyEdit from '@/mycomponents/qty/countQtyEdit.vue'
import jobTop from '@/mycomponents/job/jobTop.vue'
import detailInfoPopup from '@/pages/count/coms/detailInfoPopup.vue'
export default {
name: 'receipt_detail',
components: {
winScanButton,
winScanPack,
comCountDetailcards,
winScanPackAndLocation,
countQtyEdit,
jobTop,
detailInfoPopup
},
data() {
return {
id: '',
receiptJob: {},
fromLocationCode: '',
isShowPackingCode: true,
jobContent: {}, //
subList: [], //subList
detailSource: [], //
balance: {}, //
editInventoryStatus: false,
package: {}, //
label: {}, //
currentEditItem: {},
jobStatus: "",
allCount: 0,
scanCount: 0,
index: 0,
pageSize: 20,
showList: [],
loadingType: "",
allDetails: [],
scanOptions: [],
detailOptions: [],
};
},
onLoad(option) {
this.id = option.id;
if (this.id != undefined) {
//
if (option.status == "1") {
this.receive((callback => {
this.getDetail();
}));
} else {
this.getDetail();
}
}
this.detailOptions = getDetailOption();
this.scanOptions = getDetailEditRemoveOption();
},
//
onNavigationBarButtonTap(e) {
if (e.index === 0) {
goHome();
}
},
//
onBackPress(e) {
//
if (e.from === 'backbutton') {
if (this.jobStatus == "2") {
//
cancleTakeCountJob(this.id).then(res => {
uni.navigateBack();
}).catch(error => {
uni.navigateBack();
})
} else {
uni.navigateBack();
}
return true;
}
},
onPullDownRefresh() {
this.initList();
uni.stopPullDownRefresh();
},
mounted() {
},
onReachBottom() {
console.log("onReachBottom")
//
if (this.loadingType == 'nomore') {
return;
}
this.index++;
var list = this.getDataPage(this.index, this.pageSize)
if (list.length > 0) {
// this.showList=list
this.showList = this.showList.concat(list)
} else {
//
this.loadingType = "nomore";
}
},
methods: {
//
receive(callback) {
if (this.id != null) {
takeCountJob(this.id).then(res => {
callback();
}).catch(error => {
this.showErrorMessage(error)
})
}
},
getDetail() {
var that = this;
uni.showLoading({
title: "加载中....",
mask: true
});
getCountJobDetail(that.id).then(res => {
uni.hideLoading();
if (res.data == null) {
that.showMessage('未获取到详情');
} else {
that.jobContent = res.data;
that.jobStatus = res.data.status;
that.fromLocationCode = that.jobContent.locationCode;
res.data.subList.forEach(item => {
item.recommendQty = item.qty
item.handleQty = 0
item.countTime = new Date()
item.fromLocationCode =that.fromLocationCode;
})
that.allDetails = res.data.subList;
that.allCount = res.data.subList.length;
that.initList()
}
}).catch(error => {
uni.hideLoading()
this.showErrorMessage(error)
})
},
initList() {
this.index = 1;
this.showList = []
this.loadingType = "";
this.showList = this.getDataPage(this.index, this.pageSize)
},
getDataPage(pageNo, pageSize) {
//
var totalPages = Math.ceil(this.allCount / pageSize);
//
const start = (pageNo - 1) * pageSize;
const end = start + pageSize; //
return this.allDetails.slice(start, end)
},
swipeClick(e, item) {
if (e.content.text == "详情") {
this.detail(item)
} else if (e.content.text == "编辑") {
this.editItem(item)
} else if (e.content.text == "移除") {
this.remove(item)
}
},
detail(item) {
this.showItem = item;
this.$refs.detailInfoPopup.openPopup(item);
},
remove(item, index) {
this.$refs.comMessage.showQuestionMessage("确定移除扫描信息?",
res => {
if (res) {
item.scaned = false;
item.handleQty = 0;
this.$emit('removePack')
}
});
},
updateData() {},
openScanPopup() {
var fromlocationList = [];
fromlocationList.push(this.fromLocationCode)
this.$refs.scanPopup.openScanPopupForJob(this.fromLocationCode, fromlocationList, this.jobContent);
},
closeScanPopup() {
if (this.$refs.scanPopup != undefined) {
this.$refs.scanPopup.closeScanPopup();
}
},
scanPopupGetFocus() {
if (this.$refs.scanPopup != undefined) {
this.$refs.scanPopup.packGetFocus();
}
},
scanPopupLoseFocus() {
if (this.$refs.scanPopup != undefined) {
this.$refs.scanPopup.packLoseFocus();
}
},
//
getScanResult(result) {
var itemCode = result.label.itemCode
var packingNumber = result.label.packingNumber
var pack = result.package
var batch = result.label.batch
var inventoryStatus = result.balance ? result.balance.inventoryStatus : "OK"
var qty = result.balance ? result.balance.qty : 0;
//
let items = this.allDetails.filter(r =>
r.itemCode === itemCode &&
r.packingNumber === packingNumber &&
r.batch === batch &&
r.inventoryStatus === inventoryStatus)
//,
if (items.length == 0) {
this.$refs.comMessage.showQuestionMessage("包装【" + result.label.packingNumber +
"】不在任务列表中,是否要添加到列表中?",
res => {
//
if (res) {
var detail = this.createAddDetailInfo(pack,qty)
detail.countTime = new Date();
this.allDetails.push(detail)
this.updateList();
this.$refs.countQtyEdit.openEditPopupShowSeconds(detail,
null);
} else {
this.scanPopupGetFocus();
}
})
} else {
var selectItem = items[0]
//
if (selectItem.scaned) {
this.$refs.comMessage.showQuestionMessage("包装【" + result.label.packingNumber +
"】已经完成盘点,是否要编辑盘点结果?",
res => {
if (res) {
this.currentEditItem = selectItem;
this.$refs.countQtyEdit.openEditPopup(selectItem,
null);
} else {
this.scanPopupGetFocus();
}
})
} else {
//
selectItem.scaned = true;
selectItem.handleQty = Number(qty)
selectItem.packQty = pack.packQty
selectItem.packUnit = pack.packUnit
this.$refs.countQtyEdit.openEditPopupShowSeconds(selectItem,
null);
selectItem.countTime = new Date();
this.updateList();
}
}
},
editConfirm(qty, inventoryStatus, mode) {
let that = this;
//
if (mode == 'edit') {
this.currentEditItem.handleQty = qty;
this.currentEditItem.inventoryStatus = inventoryStatus;
}
//
this.currentEditItem.countTime = new Date();
this.updateList();
this.scanPopupGetFocus();
},
updateList() {
this.allDetails.sort(compare('countTime')); //
this.initList()
this.scanPopupLoseFocus()
this.calcAllCount()
this.calcScanCount()
},
calcAllCount() {
this.allCount = this.allDetails.length;
},
calcScanCount() {
this.scanCount = this.allDetails.filter(r => r.scaned === true).length;
},
editClose() {
this.scanPopupGetFocus();
},
//
createAddDetailInfo(pack,qty) {
var detail = {
id: this.jobContent.masterId, //
scaned: true,
countDetailNumber: "",
ownerCode: "",
packingNumber: pack.number,
containerNumber: "",
batch: pack.batch,
inventoryStatus: "OK",
itemCode: pack.itemCode,
itemName: pack.itemName,
itemDesc1: pack.itemDesc1,
itemDesc2: pack.itemDesc2,
packQty: pack.packQty,
packUnit: pack.packUnit,
projectCode: "",
recommendQty:Number(qty),
qty: Number(qty),
handleQty: Number(qty),
uom: pack.uom,
number: pack.number,
remark: "",
countQty: 0,
balanceQty: Number(qty),
fromLocationCode: this.fromLocationCode,
creator: this.$store.state.user.id,
countTime: new Date()
}
return detail;
},
commit() {
this.calcAllCount()
this.calcScanCount()
if (this.scanCount == this.allCount) {
this.submitJob();
} else if (this.scanCount < this.allCount) {
//
if (this.jobContent.allowPartialComplete == "TRUE") {
//
this.$refs.comMessage.showQuestionMessage("已经扫描[" + this.scanCount +
"]总共[" +
this.allCount + "],是否把未扫描的盘点数量设置为0?",
res => {
if (res) {
this.allDetails.forEach(item => {
if (!item.scaned) {
item.scaned = true;
item.handleQty = 0
}
})
this.submitJob();
}
});
} else {
//
this.$refs.comMessage.showErrorMessage('请完成扫描后,再进行提交<br>' + "已经扫描[" + this.scanCount +
"]总共[" + this
.getTotalCount() + "]", res => {
if (res) {
this.openScanPopup();
}
});
}
}
},
submitJob() {
uni.showLoading({
title: "提交中....",
mask: true
});
var params = this.setParams()
console.log("提交参数", JSON.stringify(params));
// countJobSubmit(params).then(res => {
// uni.hideLoading()
// if (res.data) {
// this.showCommitSuccessMessage("<br><br>" + res.data)
// } else {
// this.showErrorMessage("[" + res.msg + "]")
// }
// }).catch(error => {
// uni.hideLoading()
// this.showErrorMessage(error)
// })
},
setParams() {
var subList = []
var creator = this.$store.state.user.id
this.allDetails.forEach(item => {
if (item.scaned) {
item.countQty = item.handleQty;
}
subList.push(item)
})
this.jobContent.subList = subList
this.jobContent.creator = creator;
return this.jobContent;
},
showMessage(message) {
this.$refs.comMessage.showMessage(message, res => {
if (res) {
this.afterCloseMessage()
}
});
},
showErrorMessage(message) {
this.$refs.comMessage.showErrorMessage(message, res => {
if (res) {
this.afterCloseMessage()
}
});
},
showScanMessage(message) {
this.$refs.comMessage.showScanMessage(message);
},
afterCloseMessage() {
this.scanPopupGetFocus();
},
closeScanMessage() {
this.scanPopupGetFocus();
},
editItem(item) {
this.currentEditItem = item;
this.$refs.countQtyEdit.openEditPopup(this.currentEditItem,
null);
},
showCommitSuccessMessage(hint) {
this.$refs.comMessage.showSuccessMessage(hint, res => {
navigateBack(1);
})
},
getCountStageName(value) {
return getCountStageName(value)
},
isOpenCount(value) {
return value == "TRUE" ? "明盘" : "盲盘"
}
}
}
</script>
<style scoped lang="scss">
page {
width: 100%;
height: 100%;
background-color: #fff;
}
.page-wraper {
display: flex;
flex-direction: column;
width: 100%;
height: 100%;
}
.header {
position: fixed;
top: 88rpx;
left: 0;
width: 100%;
background-color: #fff;
z-index: 10;
padding: 10rpx;
/* 确保头部在内容之上 */
}
.page-footer {
position: fixed;
bottom: 0;
left: 0;
right: 0;
}
.page-main {
flex: 1;
position: relative;
}
.page-main-scroll {
position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 0;
}
.page-main-list {
/* height: 80rpx;
line-height: 80rpx; */
text-align: center;
background: #e0e0e0;
}
.item {
background-color: #fff;
}
.item_scaned {
background-color: antiquewhite;
}
</style>
Loading…
Cancel
Save