演示项目-图书馆
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.
 
 
 
 
 

212 lines
6.3 KiB

<template>
<div class="main">
<div class="top-header">
<span class="back" @click="toBack"></span>
<p>我的借阅</p>
</div>
<div class="order-main">
<van-tabs v-model:active="active" swipeable @click-tab="onClickTab">
<van-tab v-for="item in tabTitle" :title="item.name">
<van-list
v-model:loading="loading"
:finished="finished"
finished-text="没有更多了"
@load="onLoad"
>
<div v-for="(item,i) in borrowingList" :key="i">
<div class="order-item">
<div class="list-top">
<div class="top-info">
<p class="active-name">
{{ item.seleceName }}<i></i>
</p>
</div>
<div :class="['order-status', !item.realityTime && 'jy']">{{ !item.realityTime ? '借阅中' : '已归还' }}</div>
</div>
<div class="product-cont lending-cont">
<div class="product-img">
<img :src="$coverUrl+'/demoOnlineSelect/getBookCover.do?id='+item.bookId" alt="" />
</div>
<div class="product-txt">
<div class="product-info">
<h4 class="overflow-txt-only">{{ item.bookName }}</h4>
<div class="author-date">
<p class="author overflow-txt-only">{{ item.author }}</p>
<p class="date overflow-txt-only">{{ item.createdDate }}</p>
</div>
<div class="intro overflow-txt">{{ item.introduce }}</div>
</div>
</div>
</div>
<div class="mylending-info">
<p class="lending-date">借阅开始时间{{ item.startTime }}</p>
<p class="lending-date">最后归还时间{{ item.returnTime }}</p>
<p v-if="item.realityTime" class="actual-date">实际归还时间:{{ item.realityTime }}</p>
<div :class="['myLending-status', item.returnBook === 1 && 'lq-status', item.returnBook === 2 && 'zs-status', item.returnBook === 3 && 'yq-status']"></div>
</div>
</div>
</div>
</van-list>
</van-tab>
</van-tabs>
</div>
</div>
</template>
<script>
// import { Toast } from 'vant'
import { reactive, computed, onMounted, getCurrentInstance, toRefs } from 'vue'
export default {
name: 'Order',
setup() {
const { proxy } = getCurrentInstance()
let data = reactive({
tabCur: 1,
active: 0,
borrowingList:[],
tabTitle: [
{
value: '0',
name: '全部',
},
{
value: '1',
name: '借阅中',
},
{
value: '2',
name: '已归还',
}
],
loading: false,
finished: false,
pagetTable: {
current: 1,
size: 10,
total: '',
}
})
onMounted(() => {
data.active = JSON.parse(proxy.$route.query.tabActive)
if(data.active){
onLoad()
}
})
let onClickTab = (item) => {
data.pagetTable.current = 1
data.loading = true
data.finished = false
data.active = item.name
data.borrowingList = []
onLoad()
}
let onLoad = () => {
let timer = setTimeout(() => {
getMyBorrowing()
data.pagetTable.current ++
data.finished && clearTimeout(timer);//清除计时器
}, 1000);
}
let getMyBorrowing = () => {
let param = {
openid: 'ocHu-sysUQ6-xb9knAJ5mATqCOJE',
status: data.active,
pageNo: data.pagetTable.current,
pageSize: data.pagetTable.size,
}
proxy.$http
.get(proxy.$API.MYBORROWING, {
params: param,
})
.then((res) => {
if(res.data !== null && res.data.length !== 0){
// data.borrowingList = res.data
// data.pagetTable.total = res.data.page.totalRows
data.borrowingList.push(...res.data.myBorrowing)
data.loading = false
data.finished = true
// if (data.list.length >= res.data.page.totalRows) {
// data.finished = true
// }
data.borrowingList.forEach(item=>{
if (item.realityTime) {
if (item.realityTime <= item.returnTime) {
item.returnBook = 2
console.log('准时1')
} else {
item.returnBook = 3
console.log('逾期')
}
} else {
const currentDate = new Date();
const remainingDays = Math.ceil((new Date(item.returnTime) - currentDate) / (1000 * 3600 * 24));
console.log(remainingDays)
if (remainingDays <= 3) {
item.returnBook = 1
console.log('临时')
} else {
// item.returnBook = 2
console.log('借阅中,还未到临期时间')
}
}
})
}else{
data.borrowingList = []
data.finished = true;
}
})
.catch((res) => {
console.log(res)
})
}
let toBack = () => {
proxy.$router.go(-1)
}
return {
...toRefs(data),
toBack,
getMyBorrowing,
onClickTab,
onLoad
}
},
}
</script>
<style scoped lang="scss">
.mylending-info{
position: relative;
margin-top: .32rem;
padding: .25rem;
font-size: .24rem;
line-height: .4rem;
background: rgba(241,241,249,0.4);
border-radius: 0.08rem;
border: 0.02rem solid #C6C6E2;
p.actual-date{
color: #FF3871;
}
.myLending-status{
position: absolute;
right: .3rem;
top: .36rem;
width: 1.22rem;
height: 1.07rem;
&.yq-status{
background: url('@assets/images/mylending-img1.png') no-repeat;
background-size: 100% 100%;
}
&.zs-status{
background: url('@assets/images/mylending-img2.png') no-repeat;
background-size: 100% 100%;
}
&.lq-status{
background: url('@assets/images/mylending-img3.png') no-repeat;
background-size: 100% 100%;
}
}
}
</style>