You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
128 lines
3.0 KiB
128 lines
3.0 KiB
<template>
|
|
<view class="container">
|
|
<!-- 扫码按钮 -->
|
|
<button type="primary" @click="scanCode" class="scan-btn">
|
|
扫码识别图书
|
|
</button>
|
|
|
|
<!-- 图书信息展示 -->
|
|
<view class="book-info" v-if="bookData.title">
|
|
<image :src="bookData.image" class="book-cover" mode="widthFix"></image>
|
|
<view class="book-title">{{ bookData.title }}</view>
|
|
<view class="book-desc">作者:{{ bookData.author }}</view>
|
|
<view class="book-desc">出版社:{{ bookData.publisher }}</view>
|
|
<view class="book-desc">出版日期:{{ bookData.pubdate }}</view>
|
|
<view class="book-desc">ISBN:{{ isbn }}</view>
|
|
</view>
|
|
|
|
<!-- 无数据提示 -->
|
|
<view class="empty" v-else>
|
|
请点击按钮扫描图书条形码
|
|
</view>
|
|
</view>
|
|
</template>
|
|
|
|
<script>
|
|
export default {
|
|
data() {
|
|
return {
|
|
isbn: '', // 扫码得到的ISBN
|
|
bookData: {} // 图书信息
|
|
}
|
|
},
|
|
methods: {
|
|
// 调用微信扫码
|
|
async scanCode() {
|
|
try {
|
|
// 只允许扫条形码(图书ISBN)
|
|
const res = await uni.scanCode({
|
|
onlyFromCamera: true,
|
|
scanType: ['barCode']
|
|
})
|
|
|
|
// res.result 就是扫码得到的ISBN编码
|
|
// this.isbn = res.result
|
|
this.isbn = '9787020167319'
|
|
console.log('扫码结果:', this.isbn)
|
|
|
|
// 根据ISBN查询图书信息
|
|
this.getBookInfo()
|
|
|
|
} catch (err) {
|
|
uni.showToast({
|
|
title: '扫码失败',
|
|
icon: 'none'
|
|
})
|
|
}
|
|
},
|
|
|
|
// 查询图书信息(免费公开接口)
|
|
async getBookInfo() {
|
|
uni.showLoading({ title: '查询中...' })
|
|
|
|
try {
|
|
this.bookData = {
|
|
title: "活着",
|
|
author: "余华",
|
|
publisher: "人民文学出版社",
|
|
pubdate: "2012-08-01",
|
|
image: "https://qiniu.aiyxlib.com/1606124577077"
|
|
};
|
|
|
|
uni.hideLoading();
|
|
uni.showToast({ title: "查询成功" });
|
|
// const res = await uni.request({
|
|
// url: 'https://api.jike.xyz/situ/book/isbn/' + this.isbn,
|
|
// method: 'GET'
|
|
// })
|
|
|
|
// if (res.data.code === 200) {
|
|
// this.bookData = res.data.data
|
|
// uni.showToast({ title: '查询成功' })
|
|
// } else {
|
|
// uni.showToast({ title: '未查询到图书信息', icon: 'none' })
|
|
// }
|
|
} catch (err) {
|
|
uni.showToast({ title: '查询失败', icon: 'none' })
|
|
} finally {
|
|
uni.hideLoading()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style scoped>
|
|
.container {
|
|
padding: 40rpx;
|
|
}
|
|
.scan-btn {
|
|
margin-bottom: 40rpx;
|
|
}
|
|
.book-info {
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
}
|
|
.book-cover {
|
|
width: 300rpx;
|
|
height: 420rpx;
|
|
margin-bottom: 20rpx;
|
|
border: 1rpx solid #eee;
|
|
}
|
|
.book-title {
|
|
font-size: 36rpx;
|
|
font-weight: bold;
|
|
margin-bottom: 15rpx;
|
|
}
|
|
.book-desc {
|
|
font-size: 28rpx;
|
|
color: #666;
|
|
margin-bottom: 10rpx;
|
|
}
|
|
.empty {
|
|
text-align: center;
|
|
color: #999;
|
|
margin-top: 100rpx;
|
|
}
|
|
</style>
|