feat(index): 添加快速检票功能

- 在首页添加快速检票输入框和按钮
- 实现快速检票逻辑,支持手动输入或扫描票号
- 优化页面加载和焦点处理
-调整检查结果页面,支持快速检票模式
main
Tuzki 8 months ago
parent 9f029b5bb5
commit 21b1c45334
  1. 15
      pages/checkResult/checkResult.vue
  2. 100
      pages/index.vue
  3. 1
      static/images/index/icon_quick-check.svg

@ -52,7 +52,8 @@
此票据无效或已过期
</view>
</view>
<button class="m-btn-big" @click="checkTicket">继续检票</button>
<button v-if="isQuick" class="m-btn-big deep-blue" @click="qucikCheckTicket">继续检票</button>
<button v-if="!isQuick" class="m-btn-big" @click="checkTicket">继续检票</button>
</view>
</template>
@ -63,13 +64,15 @@ export default {
data() {
return {
checkInfo:null,
load:false
load:false,
isQuick:false
};
},
onLoad(params) {
console.log(params)
if(params.result&&params.result!=''){
this.load = true
this.isQuick = params.quick == 1?true:false
uni.showLoading({
title:'请稍后'
})
@ -107,6 +110,11 @@ export default {
// })
},
methods: {
qucikCheckTicket(){
uni.reLaunch({
url: '/pages/index'
})
},
checkTicket(){
uni.scanCode({
onlyFromCamera: true,
@ -321,4 +329,7 @@ export default {
transform: translateX(-50%);
bottom: 50upx;
}
.deep-blue{
background: linear-gradient(90deg, #4582dd 0%, #1a63ca 100%);
}
</style>

@ -22,9 +22,34 @@
</view>
</view>
</view>
<view class="uni-form-item uni-columns" style="opacity: 0.9">
<input
ref="inputRef"
:focus="isAutoFocus"
@focus="handleFocus"
readonly
v-model="quickScanData"
@confirm="qucikScan"
class="uni-input"
focus
placeholder="请扫描或输入票号"
/>
<image @click="qucikScan" src="@/static/images/index/icon_quick-check.svg"></image>
</view>
<view class="btn-group">
<view class="m-btn" :class="item.name == '扫码检票' ? 'one' : item.name == '手持售票' ? 'two' : 'three'" @click="btnClick(item.name)" v-for="(item, index) in menus">
<image class="btn-img" :src="item.name == '扫码检票' ? '/static/images/index/icon_vote-check.png': item.name == '手持售票'? '/static/images/index/icon_vote-sell.png': '/static/images/index/icon_record.png'" alt="" />
<image
class="btn-img"
:src="
item.name == '扫码检票'
? '/static/images/index/icon_vote-check.png'
: item.name == '手持售票'
? '/static/images/index/icon_vote-sell.png'
: '/static/images/index/icon_record.png'
"
alt=""
/>
<view class="m-btn-text">{{ item.name }}</view>
</view>
<!-- <view class="m-btn" @click="getSN">
@ -55,7 +80,9 @@ export default {
return {
menus: null,
checkedNum: null,
ticketNum: null
ticketNum: null,
quickScanData: null,
isAutoFocus: false
};
},
computed: {
@ -63,6 +90,18 @@ export default {
return uni.getSystemInfoSync().windowHeight;
}
},
// onShow
onShow() {
// nextTick setTimeout DOM
this.$nextTick(() => {
this.quickScanData = null;
this.$refs.inputRef.focus(); // ref input
});
// 使
setTimeout(() => {
this.isAutoFocus = true; // :focus
}, 100);
},
onLoad: function () {
if (uni.getStorageSync('menu') && uni.getStorageSync('menu') != null) {
this.menus = uni.getStorageSync('menu');
@ -72,6 +111,12 @@ export default {
this.getIndexData();
// #ifdef APP-PLUS
this.timer = setInterval(() => {
uni.hideKeyboard();
}, 50);
// #endif
// // #ifdef APP-PLUS
// globalEvent.addEventListener('myScanEvent', function (e) {
// console.log(e);
@ -90,6 +135,28 @@ export default {
},
mounted() {},
methods: {
handleFocus() {
//
clearInterval(this.timer);
},
//
qucikScan() {
console.log(this.quickScanData, 'qucikScan');
if (!this.quickScanData) {
uni.showToast({
icon:'none',
title: '请先扫描或输入票号',
duration: 2000
});
return
}
uni.redirectTo({
url: '/pages/checkResult/checkResult?result=' + this.quickScanData + '&quick=1',
success() {
this.quickScanData = null;
}
});
},
//
btnClick(val) {
switch (val) {
@ -126,8 +193,8 @@ export default {
// })
},
goList() {
uni.removeStorageSync('ALL_TICKET')
uni.removeStorageSync('EVENT')
uni.removeStorageSync('ALL_TICKET');
uni.removeStorageSync('EVENT');
uni.navigateTo({
url: '/pages/ticketCheckingRecord'
});
@ -217,8 +284,8 @@ export default {
});
},
scanCode() {
uni.removeStorageSync('ALL_TICKET')
uni.removeStorageSync('EVENT')
uni.removeStorageSync('ALL_TICKET');
uni.removeStorageSync('EVENT');
uni.scanCode({
onlyFromCamera: true,
scanType: ['qrCode'],
@ -228,7 +295,7 @@ export default {
console.log('条码类型:' + res.scanType);
console.log('条码内容:' + res.result);
uni.redirectTo({
url: '/pages/checkResult/checkResult?result='+res.result
url: '/pages/checkResult/checkResult?result=' + res.result + '&quick=0'
});
}
});
@ -416,4 +483,23 @@ export default {
}
}
}
.uni-columns {
display: flex;
align-items: center;
width: 90%;
background-color: #fff;
margin: 0 auto;
justify-content: space-between;
margin-bottom: 20px;
border-radius: 10px;
.uni-input {
width: 70%;
padding-left: 10px;
}
image {
width: 15%;
height: 35px;
}
}
</style>

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 7.4 KiB

Loading…
Cancel
Save