Browse Source

在线选书/图书推荐 api逻辑last

master
xuhuajiao 2 years ago
parent
commit
1a2e1e80ad
  1. BIN
      library-activity/src/assets/images/book-img.png
  2. 3
      library-activity/src/utils/api.js
  3. 4
      library-activity/src/views/bookList/bookList.vue
  4. 89
      library-activity/src/views/cart/cart.vue
  5. 12
      library-activity/src/views/index.vue
  6. 22
      library-activity/src/views/logisticsInfo/logisticsInfo.vue
  7. 65
      library-activity/src/views/mine/mine.vue
  8. 42
      library-activity/src/views/myAddress/myAddress.vue
  9. 142
      library-activity/src/views/myLending/myLending.vue
  10. 189
      library-activity/src/views/order/order.vue
  11. 33
      library-activity/src/views/orderDetail/orderDetail.vue
  12. 3
      selfServiceMachine/package.json
  13. 7
      selfServiceMachine/src/api/book.js
  14. 4
      selfServiceMachine/src/assets/styles/index.scss
  15. 2
      selfServiceMachine/src/main.js
  16. 71
      selfServiceMachine/src/views/bookRecommend.vue
  17. 33
      selfServiceMachine/src/views/onlineBookSelection.vue

BIN
library-activity/src/assets/images/book-img.png

After

Width: 200  |  Height: 263  |  Size: 126 KiB

3
library-activity/src/utils/api.js

@ -43,6 +43,9 @@ API.ORDERDETAILS = '/orderDetails'
// 我的借阅
API.MYBORROWING = '/myBorrowing'
// 确认收货
API.TASKGOODS = 'takeGoods'
export default API

4
library-activity/src/views/bookList/bookList.vue

@ -362,4 +362,8 @@ export default {
}
}
input[type="search"]::-webkit-search-cancel-button{
display: none;
}
</style>

89
library-activity/src/views/cart/cart.vue

@ -14,7 +14,7 @@
<div class="cart-item" v-if="bookItem.length !== 0">
<div class="list-top">
<van-checkbox v-model="bookItem.activeSelect" @change="handleselectedAll(index)"></van-checkbox>
<div class="top-info">
<div class="top-info" @click="toActive(bookItem[0].selectId)">
<p class="active-name">
{{ bookItem[0] && bookItem[0].selectName }}<i></i>
</p>
@ -104,8 +104,8 @@
<van-dialog v-model:show="showDetial" :show-confirm-button="false">
<div class="bookItem-dialog-detail">
<div class="list-top">
<div class="top-info">
<p class="active-name">你选书我买单<i></i></p>
<div class="top-info" @click="toActive(detailBook.listId)">
<p class="active-name">{{ detailBook.listName }}<i></i></p>
</div>
</div>
<div class="product-cont">
@ -220,7 +220,16 @@ export default {
});
});
}
});
})
let toActive = (id) =>{
proxy.$router.push({
path: '/BookList',
query: {
activeId: id
}
})
}
let getMyshoppingCart = () => {
let param = {}
@ -231,6 +240,7 @@ export default {
.then((res) => {
if(res.data.length === 0){
data.list = []
data.totalLength = 0
}else{
let allArraysEmpty = true;
for (let i = 0; i < res.data.length; i++) {
@ -241,7 +251,7 @@ export default {
}
if (allArraysEmpty) {
data.list = []
console.log('都为空')
data.totalLength = 0
} else {
data.list = res.data
data.list.forEach(bookItem => {
@ -279,6 +289,7 @@ export default {
console.log(res)
})
}
let deltBookShoppingCart = (ids) => {
let param = {
ids: ids,
@ -303,17 +314,8 @@ export default {
}
let confirmDelt = () => {
// let ids = data.list.filter(item => item.checked).map(item => item.id);
// console.log('ids',ids)
// if(ids.length === 0){
// Toast('')
// }else{
// ids = ids.join(',')
// console.log(ids)
// deltBookShoppingCart(ids)
// }
data.checkedBooks = data.list
.flat() //
.flat()
.filter(item => item.checked === true)
.map(item => item.id);
@ -336,14 +338,6 @@ export default {
//
let handleSingle = (index) => {
// const selectedProductsCount = data.list.filter((item) => item.checked).length
// if (
// selectedProductsCount === 1 && !data.list.find((p) => p.checked).checked
// ) {
// data.activeSelect = false
// } else {
// data.activeSelect = selectedProductsCount === data.list.length
// }
}
//
@ -354,25 +348,19 @@ export default {
}
let goPay = () => {
// let bookIds = data.list.filter(item => item.checked).map(item => item.bookId);
// console.log('bookIds',bookIds)
// if(bookIds.length === 0){
// Toast('')
// }else{
// bookIds = bookIds.join(',')
// console.log(bookIds)
// getMyAddress()
// // addPlaceOrder(bookIds)
// }
data.checkedBooksPay = data.list
.flat() //
.flat()
.filter(item => item.checked === true)
.map(item => item);
console.log(data.checkedBooksPay)
if(data.checkedBooksPay.length === 0){
Toast('请选择需要下单的书籍')
Toast('请选择需要下单的书籍')
}else{
getMyAddress()
if(data.checkedBooksPay.length > 3){
Toast('当前活动限选三本图书')
}else{
getMyAddress()
}
}
}
@ -410,28 +398,20 @@ export default {
const defaultAddress = res.data.myAddress.find(function(address) {
return address.isDefault === 1;
});
// supplierName
const bookIdMap = new Map();
for (const item of data.checkedBooksPay) {
if (!bookIdMap.has(item.supplierName)) {
bookIdMap.set(item.supplierName, []);
}
bookIdMap.get(item.supplierName).push(item.bookId);
}
// supplierName bookId
for (const [key, value] of bookIdMap) {
console.log(`SupplierName: ${key}`);
console.log(`BookId list: ${value}`);
data.list.forEach((group) => {
const checked_books = [];
group.forEach((item) => {
if (item.checked) {
checked_books.push(item.bookId);
}
});
var book_ids = checked_books.join(',');
let param = {
addressId: defaultAddress.id,
bookIds: value.join(',')
bookIds: book_ids
}
console.log(param)
addPlaceOrder(param)
}
})
}else{
Toast('请先添加收货地址后再下单')
}
@ -443,6 +423,7 @@ export default {
return {
...toRefs(data),
toActive,
goPay,
cartDelt,
deltCurrentItem,

12
library-activity/src/views/index.vue

@ -63,23 +63,17 @@ export default {
console.log(res)
data.activeList = res.data.list
data.activeList.forEach(item=>{
const startDateStr = item.startTime
const endDateStr = item.endTime
const currentDate = new Date();
const startDate = new Date(startDateStr);
const endDate = new Date(endDateStr);
const remainingDays = Math.ceil((endDate.getTime() - currentDate.getTime()) / (1000 * 3600 * 24));
const remainingDays = Math.ceil((new Date(item.endTime).getTime() - currentDate.getTime()) / (1000 * 3600 * 24));
if (currentDate >= startDate && currentDate <= endDate) {
if (currentDate >= new Date(item.startTime) && currentDate <= new Date(item.endTime)) {
item.activeStatusType = 1
if (remainingDays <= 3) {
item.activeStatus = `活动仅剩最后 ${remainingDays}`
} else {
console.log('活动正在进行中');
}
} else if (currentDate < startDate) {
} else if (currentDate < new Date(item.startTime)) {
item.activeStatus = `活动 ${item.startTime} 开始`
item.activeStatusType = 0
} else {

22
library-activity/src/views/logisticsInfo/logisticsInfo.vue

@ -48,11 +48,27 @@ export default {
setup() {
const { proxy } = getCurrentInstance()
let data = reactive({
tabActive: 0
tabActive: 0,
orderType: null
})
onMounted(() => {})
onMounted(() => {
if(proxy.$route.query.tabActive !== undefined){
data.orderType = JSON.parse(proxy.$route.query.tabActive)
}else{
data.orderType = null
}
})
let toBack = () => {
proxy.$router.go(-1)
if(data.orderType){
proxy.$router.push({
path: '/Order',
query: {
tabActive: data.orderType
}
})
}else{
proxy.$router.go(-1)
}
}
let copyLogisticsInfo = () => {
const logisticsInfo = 'SF1629871960733';

65
library-activity/src/views/mine/mine.vue

@ -10,8 +10,8 @@
<div class="user-tip">欢迎来到东西湖图书馆</div>
</div>
<div class="user-card">
<p>NO.420112012002888</p>
<span @click="showCard=true">切换证号</span>
<p>NO.{{ cardNum }}</p>
<span @click="openChangeCard">切换证号</span>
</div>
</div>
</div>
@ -25,42 +25,42 @@
<div class="order-item" @click="toOrder(1)">
<div class="order-icon">
<img src="@assets/images/d-she.png" alt="" />
<i v-if="orderStatus === 1">{{ orderNum }}</i>
<i v-if="status1">{{ status1 }}</i>
</div>
<p>待审核</p>
</div>
<div class="order-item" @click="toOrder(2)">
<div class="order-icon">
<img src="@assets/images/d-fh.png" alt="" />
<i v-if="orderStatus === 2">{{ orderNum }}</i>
<i v-if="status2">{{ status2 }}</i>
</div>
<p>待发货</p>
</div>
<div class="order-item" @click="toOrder(3)">
<div class="order-icon">
<img src="@assets/images/d-shuo.png" alt="" />
<i v-if="orderStatus === 3">{{ orderNum }}</i>
<i v-if="status3">{{ status3 }}</i>
</div>
<p>待收货</p>
</div>
<div class="order-item" @click="toOrder(4)">
<div class="order-icon">
<img src="@assets/images/y-wc.png" alt="" />
<i v-if="orderStatus === 4">{{ orderNum }}</i>
<i v-if="status4">{{ status4 }}</i>
</div>
<p>已完成</p>
</div>
<div class="order-item" @click="toOrder(5)">
<div class="order-icon">
<img src="@assets/images/y-qx.png" alt="" />
<i v-if="orderStatus === 5">{{ orderNum }}</i>
<i v-if="status5">{{ status5 }}</i>
</div>
<p>已取消</p>
</div>
</div>
<div class="log-info" v-if="orderStatus === 3">
<div class="log-info" v-if="status3">
<div class="log-img">
<img src="" alt="" />
<img src="@assets/images/book-img.png" alt="" />
</div>
<div class="log-txt" @click="toLogisticsInfo">
<div class="log-num">顺丰速运 SF1629871960733</div>
@ -103,18 +103,18 @@
<van-dialog v-model:show="showCard" :show-confirm-button="false">
<div class="dialog-card">
<h5>切换读者证</h5>
<div class="card-item" @click="cardIndex=0">
<div class="card-item" v-for="(item,index) in cardData" :key="index" @click="cardIndex = index">
<img src="@assets/images/card-img2.png" alt="" />
<div class="card-txt">
<span>读者证号</span>
<p>NO.420112012002888</p>
<p>NO.{{ item }}</p>
</div>
<div :class="['select-card', cardIndex===0 ? 'active': '']"></div>
<div :class="['select-card', cardIndex===index ? 'active': '']"></div>
</div>
</div>
<div class="card-btn">
<span @click="changeCardComfired">确定</span>
<span @click="showCard=false">取消</span>
<span @click="cancelCard">取消</span>
</div>
</van-dialog>
</div>
@ -132,11 +132,17 @@ export default {
let data = reactive({
tabCur: 2,
showCard: false,
cardNum:'',
cardIndex: 0,
orderStatus: null,
orderNum: null
status1: null,
status2: null,
status3: null,
status4: null,
status5: null,
cardData: ['420112012002888','420112012002999']
})
onMounted(() => {
data.cardNum = data.cardData[data.cardIndex]
getMyOrderNum()
})
let getMyOrderNum = () => {
@ -149,8 +155,19 @@ export default {
})
.then((res) => {
console.log(res)
data.orderStatus = res.data.myAddress.status
data.orderNum = res.data.myAddress.num
res.data.myAddress.forEach(item => {
if(item.status === 1){
data.status1 = item.num
}else if(item.status === 2){
data.status2 = item.num
}else if(item.status === 3){
data.status3 = item.num
}else if(item.status === 4){
data.status4 = item.num
}else if(item.status === 5){
data.status5 = item.num
}
});
})
.catch((res) => {
console.log(res)
@ -185,9 +202,19 @@ export default {
let toLogisticsInfo = () => {
proxy.$router.push({ path: '/LogisticsInfo' })
}
let openChangeCard = () => {
const index = data.cardData.indexOf(data.cardNum)
data.cardIndex = index
data.showCard = true
}
let changeCardComfired = () => {
data.cardNum = data.cardData[data.cardIndex]
data.showCard = false
Toast('读者证切换成功')
}
let cancelCard = () => {
data.showCard = false
}
onMounted(() => {})
return {
@ -199,7 +226,9 @@ export default {
toAboutUs,
toFeedback,
toLogisticsInfo,
changeCardComfired
openChangeCard,
changeCardComfired,
cancelCard
}
},
}

42
library-activity/src/views/myAddress/myAddress.vue

@ -22,13 +22,12 @@
<span class="edit-btn" @click="toAddOrEdit('edit',item)"></span>
</div>
<div class="setting-handle" v-if="isSetting">
<span :class="item.isDefault == 1 ? 'active' :''">默认地址</span>
<span :class="item.isDefault == 1 ? 'active' :''" @click="setDefault(item)">默认地址</span>
<span @click="deleteMyAddress(item.id)">删除</span>
</div>
<span v-if="item.isDefault == 1" class="mr-flag">默认</span>
</div>
</div>
<div class="address-bottom" @click="toAddOrEdit('add',null)">添加收货地址</div>
</div>
<!-- <TabBar :tabCur.sync="tabCur" /> -->
@ -61,7 +60,41 @@ export default {
}
})
}
let setDefault = (item) => {
if(item.isDefault === 1){
return false
}
let param = {
address: item.address,
district: item.district,
id: item.id,
isDefault: !item.isDefault && 1,
name: item.name,
phone: item.phone
}
console.log(param)
proxy.$http
.post(proxy.$API.EDITMYADDRESS,
param,
{
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}
}
)
.then(res => {
if(res.errCode === 0){
Toast('修改默认成功')
setTimeout(()=>{
getMyAddress()
data.isSetting = false
},500)
}
})
.catch((res) => {
console.log(res)
})
}
let getMyAddress = () => {
let param = {
openid: 'ocHu-sysUQ6-xb9knAJ5mATqCOJE'
@ -109,7 +142,8 @@ export default {
toBack,
toAddOrEdit,
getMyAddress,
deleteMyAddress
deleteMyAddress,
setDefault
}
},
}

142
library-activity/src/views/myLending/myLending.vue

@ -7,40 +7,46 @@
<div class="order-main">
<van-tabs v-model:active="active" swipeable @click-tab="onClickTab">
<van-tab v-for="item in tabTitle" :title="item.name">
<div>
<div class="order-item">
<div class="list-top">
<div class="top-info">
<p class="active-name">
你选书我买单<i></i>
</p>
</div>
<div class="order-status jy">借阅中</div>
</div>
<div class="product-cont lending-cont">
<div class="product-img">
<img src="" alt="" />
</div>
<div class="product-txt">
<div class="product-info">
<h4 class="overflow-txt-only">秒懂AI提问让人工智能开发大脑</h4>
<div class="author-date">
<p class="author overflow-txt-only">秋叶 刘进新 姜梅 定秋枫</p>
<p class="date overflow-txt-only">2023年07月</p>
</div>
<div class="intro overflow-txt">精心提炼20种GPT提问方法及指令从入门到进阶再到精通100个案例带你玩</div>
</div>
</div>
</div>
<div class="mylending-info">
<p class="lending-date">借阅开始时间2023-11-18 10:15:30</p>
<p class="lending-date">最后归还时间2023-11-18 10:15:30</p>
<p class="actual-date">实际归还时间2023-11-18 10:15:30</p>
<div class="myLending-status lq-status"></div>
</div>
</div>
</div>
<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>
@ -72,38 +78,83 @@ export default {
name: '已归还',
}
],
page:{
pageNo: 1,
pageSize: 20
loading: false,
finished: false,
pagetTable: {
current: 1,
size: 10,
total: '',
}
})
onMounted(() => {
data.active = JSON.parse(proxy.$route.query.tabActive)
if(data.active){
getMyBorrowing()
onLoad()
}
})
let onClickTab = (item) => {
data.pagetTable.current = 1
data.loading = true
data.finished = false
data.active = item.name
data.orderList = []
getMyBorrowing()
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.page.pageNo,
pageSize: data.page.pageSize
pageNo: data.pagetTable.current,
pageSize: data.pagetTable.size,
}
proxy.$http
.get(proxy.$API.MYBORROWING, {
params: param,
})
.then((res) => {
if(res.data.length !== 0){
data.borrowingList = res.data
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) => {
@ -117,7 +168,8 @@ export default {
...toRefs(data),
toBack,
getMyBorrowing,
onClickTab
onClickTab,
onLoad
}
},
}

189
library-activity/src/views/order/order.vue

@ -7,54 +7,55 @@
<div class="order-main">
<van-tabs v-model:active="active" swipeable @click-tab="onClickTab" >
<van-tab v-for="item in tabTitle" :title="item.name" >
<div v-for="(orderItem,index) in orderList" :key="index">
<div class="order-item">
<div class="list-top">
<div class="top-info">
<p class="active-name">
{{ orderItem.books && orderItem.books[0].selectName}}<i></i>
</p>
</div>
<div :class="['order-status', orderItem.status === 1 && 'dshe', (orderItem.status===2 || orderItem.status===3) && 'dhuo']">{{ orderItem.orderName }}</div>
</div>
<div v-for="(item,i) in orderItem.books" :key="i">
<div class="product-cont" @click="toOrderDeatil(orderItem.status,orderItem.id)" >
<div class="product-img">
<img
:src="
$coverUrl+'/demoOnlineSelect/getBookCover.do?id=' +
item.id
"
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 class="order-book-price">
<span><i></i>{{ item.price }}</span>
<span>X1</span>
<van-list
v-model:loading="loading"
:finished="finished"
finished-text="没有更多了"
@load="onLoad"
>
<div v-for="(orderItem,index) in orderList" :key="index">
<div class="order-item">
<div class="list-top">
<div class="top-info">
<p class="active-name" @click="toActive(orderItem.books[0].selectId)">
{{ orderItem.books && orderItem.books[0].selectName}}<i></i>
</p>
</div>
<div :class="['order-status', orderItem.status === 1 && 'dshe', (orderItem.status===2 || orderItem.status===3) && 'dhuo']">{{ orderItem.orderName }}</div>
</div>
</div>
<div class="order-dealer">
<p class="dealer">{{ orderItem.books && orderItem.books[0].supplierName}}</p>
<p class="order-pay">实付款<span><i></i>0</span></p>
</div>
<div class="order-bottom">
<span v-if="orderItem.status===3 || orderItem.status === 4" class="order-btn01" @click="toLogisticsInfo">查看物流</span>
<span v-if="orderItem.status===3" class="order-btn02" @click="show = true">确认收货</span>
<span v-if="orderItem.status===5" class="order-btn01" @click="showDelt=true">删除订单</span>
<div v-for="(item,i) in orderItem.books" :key="i">
<div class="product-cont" @click="toOrderDeatil(orderItem.status,orderItem.id)" >
<div class="product-img">
<img :src="$coverUrl+'/demoOnlineSelect/getBookCover.do?id='+item.id" 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 class="order-book-price">
<span><i></i>{{ item.price }}</span>
<span>X1</span>
</div>
</div>
</div>
<div class="order-dealer">
<p class="dealer">{{ orderItem.books && orderItem.books[0].supplierName}}</p>
<p class="order-pay">实付款<span><i></i>0</span></p>
</div>
</div>
</div>
<div class="order-bottom">
<span v-if="orderItem.status===3 || orderItem.status === 4" class="order-btn01" @click="toLogisticsInfo">查看物流</span>
<span v-if="orderItem.status===3" class="order-btn02" @click="taskGoods(orderItem)">确认收货</span>
<span v-if="orderItem.status===5" class="order-btn01" @click="showDelt=true">删除订单</span>
</div>
</div>
</div>
</van-list>
</van-tab>
</van-tabs>
</div>
@ -100,6 +101,7 @@ export default {
show: false,
showDelt: false,
orderList:[],
taskGoodsItem: null,
tabTitle: [
{
value: '0',
@ -126,28 +128,55 @@ export default {
name: '已取消',
},
],
page:{
pageNo: 1,
pageSize: 20
loading: false,
finished: false,
pagetTable: {
current: 1,
size: 10,
total: '',
}
})
onMounted(() => {
data.active = JSON.parse(proxy.$route.query.tabActive)
getMyOrder()
if(data.active){
onLoad()
}
})
let toBack = () => {
proxy.$router.go(-1)
proxy.$router.push({
path: '/Mine'
})
}
let toActive = (id) =>{
proxy.$router.push({
path: '/BookList',
query: {
activeId: id
}
})
}
let onClickTab = (item) => {
data.pagetTable.current = 1
data.loading = true
data.finished = false
data.active = item.name
data.orderList = []
getMyOrder()
onLoad()
}
let onLoad = () => {
let timer = setTimeout(() => {
getMyOrder()
data.pagetTable.current ++
data.finished && clearTimeout(timer);//
}, 1000);
}
let getMyOrder = () => {
let param = {
openid: 'ocHu-sysUQ6-xb9knAJ5mATqCOJE',
pageNo: data.page.pageNo,
pageSize: data.page.pageSize,
pageNo: data.pagetTable.current,
pageSize: data.pagetTable.size,
status: data.active
}
proxy.$http
@ -156,7 +185,8 @@ export default {
})
.then((res) => {
if(res.data.myOrder.length !== 0){
data.orderList = res.data.myOrder
// data.pagetTable.total = res.data.page.totalRows
data.orderList.push(...res.data.myOrder)
data.orderList.forEach(orderItem=>{
switch(orderItem.status){
case 1 :
@ -176,6 +206,14 @@ export default {
break;
}
})
data.loading = false
data.finished = true
// if (data.orderList.length >= res.data.page.totalRows) {
// data.finished = true
// }
}else{
data.orderList = [];
data.finished = true;
}
})
.catch((res) => {
@ -194,12 +232,44 @@ export default {
}
let toLogisticsInfo = () => {
proxy.$router.push({ path: '/LogisticsInfo' })
proxy.$router.push({
path: '/LogisticsInfo',
query: {
tabActive: data.active
}
})
}
let taskGoods = (orderItem) => {
data.show = true
data.taskGoodsItem = orderItem
}
let comfiredHandle = () =>{
data.show = false
Toast('确认收货成功')
console.log(data.taskGoodsItem.id)
proxy.$http
.post(proxy.$API.TASKGOODS,
{
id: data.taskGoodsItem.id
},
{
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}
}
)
.then(res => {
if(res.errCode === 0){
data.show = false
Toast('确认收货成功')
getMyOrder()
}
})
.catch((res) => {
console.log(res)
})
}
let deltHandle = () =>{
data.showDelt = false
Toast('删除订单成功')
@ -207,12 +277,15 @@ export default {
return {
...toRefs(data),
toBack,
toActive,
toOrderDeatil,
toLogisticsInfo,
taskGoods,
comfiredHandle,
deltHandle,
onClickTab,
getMyOrder
getMyOrder,
onLoad
}
},
}

33
library-activity/src/views/orderDetail/orderDetail.vue

@ -8,8 +8,8 @@
<p>{{ orderName }}</p>
<span>{{ orderInfo }}</span>
</div>
<div v-if="orderType==='2' || orderType==='3'" class="parcel-log" @click="toLogisticsInfo">
<p>共2个包裹运送中</p>
<div v-if="orderType==='3' || orderType==='4'" class="parcel-log" @click="toLogisticsInfo">
<p>共2个包裹</p>
<p>顺丰速运SF162987196073</p>
</div>
<div class="user-location">
@ -18,7 +18,7 @@
</div>
<div class="order-item">
<div class="list-top">
<div class="top-info">
<div class="top-info" @click="toActive(orderBookList[0].selectId)">
<p class="active-name">
{{ orderBookList.length !== 0 && orderBookList[0].selectName }}<i></i>
</p>
@ -123,26 +123,25 @@ export default {
}),
orderInfo: computed(function(){
switch(data.orderType){
case '0' :
case '1' :
return '您的订单已提交,请耐心等待审核'
break;
case '1' :
case '2' :
return '您的订单已审核,马上安排发货'
break;
case '2' :
case '3' :
return '快递马上就到,请及时查收'
break;
case '3' :
case '4' :
return '您的订单已完成'
break;
case '4' :
case '5' :
return '您的订单已取消'
break;
}
})
})
onMounted(async () => {
console.log(proxy.$route.query.type)
data.orderType = proxy.$route.query.type
data.orderId = proxy.$route.query.orderId
if(data.orderId){
@ -150,8 +149,21 @@ export default {
}
})
let toBack = () => {
proxy.$router.go(-1)
proxy.$router.push({
path: '/Order',
query: {
tabActive: data.orderType
}
})
}
let toActive = (id) =>{
proxy.$router.push({
path: '/BookList',
query: {
activeId: id
}
})
}
let getOrderDetail = () => {
let param = {
orderId: data.orderId
@ -198,6 +210,7 @@ export default {
return {
...toRefs(data),
toBack,
toActive,
getOrderDetail,
toLogisticsInfo,
copyOrderNum

3
selfServiceMachine/package.json

@ -16,9 +16,12 @@
"core-js": "^3.6.4",
"echarts": "^4.6.0",
"element-ui": "^2.15.9",
"qrcode": "^1.5.3",
"qrcodejs2": "0.0.2",
"swiper": "^8.4.2",
"vue": "^2.6.11",
"vue-awesome": "^4.0.2",
"vue-qrcode": "^2.2.0",
"vue-router": "^3.1.5",
"vuex": "^3.1.2"
},

7
selfServiceMachine/src/api/book.js

@ -11,17 +11,14 @@ export function FetchBookRecommendList(params) {
}
//书单推荐-书籍详情
export function FetchBookRecommendDetails(parameter) {
export function FetchBookRecommendDetails(params) {
return request({
url: 'frontDemoApi/bookRecommendDetails',
method: 'post',
data: parameter
params: params
})
}
export default {
FetchBookRecommendList,
FetchBookRecommendDetails

4
selfServiceMachine/src/assets/styles/index.scss

@ -24,11 +24,11 @@
height: calc(1920px - 60px);
background: url('~@/assets/images/online.png') no-repeat left top;
background-size: 100% 100%;
img{
.qrcode{
display: block;
position: absolute;
left: 134px;
bottom: 24px;
bottom: 26px;
width: 180px;
height: 180px;
}

2
selfServiceMachine/src/main.js

@ -21,6 +21,8 @@ import echarts from 'echarts'
Vue.prototype.$echarts = echarts
Vue.prototype.coverUrl = 'http://192.168.99.67:8080'
Vue.prototype.isLocal = 1
Vue.config.productionTip = false
new Vue({

71
selfServiceMachine/src/views/bookRecommend.vue

@ -37,16 +37,16 @@
>
<el-carousel-item v-for="(item,index) in topThree" :key="index">
<div class="ranking-img">
<img :src="coverUrl+'/demoOnlineSelect/getBookCover.do?id='+item.id" alt="" />
<img :src="coverUrl+'/demoRecommend/getBookCover.do?id='+item.id" alt="" />
</div>
</el-carousel-item>
</el-carousel>
<div v-if="i === carIndex" class="ranking-book-detail" v-for="(item,i) in topThree" :key="i">
<div class="book-info">
<h5 class="title-item-only">{{ item.bookName }}</h5>
<div class="book-author">
<span>{{ item.author }}</span>
<span>{{ item.publish }}</span>
<div class="book-author" style="display: flex; justify-content: flex-start;">
<span class="title-item-only">{{ item.author }}</span>
<span class="title-item-only">{{ item.publish }}</span>
</div>
<p class="book-intro title-item">
{{ item.introduce }}
@ -103,7 +103,7 @@
<div class="recommend-item" v-for="(item,index) in bookList" :key="index">
<div class="book-detail">
<div class="book-img">
<img :src="coverUrl+'/demoOnlineSelect/getBookCover.do?id='+item.id" alt="" />
<img :src="coverUrl+'/demoRecommend/getBookCover.do?id='+item.id" alt="" />
</div>
<div class="book-txt">
<h4>
@ -125,11 +125,11 @@
<div class="book-eval">
<span class="eval-num">{{item.clickNum}}</span>
<div class="eval-star">
<span class="active"></span>
<span class="active"></span>
<span></span>
<span></span>
<span></span>
<span :class="{ 'active': 1 <= item.recommendIndex }"></span>
<span :class="{ 'active': 2 <= item.recommendIndex }"></span>
<span :class="{ 'active': 3 <= item.recommendIndex }"></span>
<span :class="{ 'active': 4 <= item.recommendIndex }"></span>
<span :class="{ 'active': 5 <= item.recommendIndex }"></span>
</div>
<div class="to-book-more" @click="getBookDetail(item)">查看详情</div>
</div>
@ -145,7 +145,7 @@
<div class="dialog-book">
<div class="book-detail">
<div class="book-img">
<img :src="coverUrl+'/demoOnlineSelect/getBookCover.do?id='+detailData.id" alt="" />
<img :src="coverUrl+'/demoRecommend/getBookCover.do?id='+detailData.id" alt="" />
</div>
<div class="book-txt">
<h4>
@ -167,11 +167,11 @@
<div class="book-eval">
<span class="eval-num"> {{ detailData.clickNum }}</span>
<div class="eval-star">
<span class="active"></span>
<span class="active"></span>
<span></span>
<span></span>
<span></span>
<span :class="{ 'active': 1 <= detailData.recommendIndex }"></span>
<span :class="{ 'active': 2 <= detailData.recommendIndex }"></span>
<span :class="{ 'active': 3 <= detailData.recommendIndex }"></span>
<span :class="{ 'active': 4 <= detailData.recommendIndex }"></span>
<span :class="{ 'active': 5 <= detailData.recommendIndex }"></span>
</div>
</div>
</div>
@ -233,7 +233,7 @@ export default {
publishDate:[],
topThree: [],
rankingOther: [],
keywordData:['人工智能','遥遥领先','ChatAPT','5G'],
keywordData:['余华','人工智能','5G', 'ChatAPT','遥遥领先',],
selectedIndex: null,
selectedDateIndex: null,
keyWordIndex: null,
@ -286,9 +286,14 @@ export default {
},
resetSearch(){
this.resetData()
this.keyWordIndex = null
this.selectedIndex = null
this.selectedDateIndex = null
this.addMoreData()
},
toSearch(){
this.selectedIndex = null
this.selectedDateIndex = null
this.query = {
title: null,
isbn: null,
@ -329,7 +334,6 @@ export default {
'publish':this.query.publish,
'createdDate':this.query.createdDate
}
console.log(params)
FetchBookRecommendList(params).then(res => {
console.log(res)
this.publish = res.publishGroup
@ -347,20 +351,22 @@ export default {
this.totalPages = res.page.totalPages;
if (this.pageIndex < 1) {
this.bookList = resData;
} else {
this.bookList = this.bookList.concat(resData)
}
this.bookList = this.bookList.concat(resData)
}).catch(() => {
this.$message.error('接口错误')
})
},
getBookDetail(item){
FetchBookRecommendDetails({bookId: item.id}).then(res => {
let param = {
'bookId': item.id
}
FetchBookRecommendDetails(param).then(res => {
console.log(res)
this.detailShow = true
if(Object.keys(res).length !== 0){
this.detailData = res.book
}else{
this.detailData = item
}
@ -408,12 +414,31 @@ export default {
this.addMoreData()
},
selectKeyWord(index){
this.addMoreData()
this.resetData()
if (this.keyWordIndex === index) {
this.keyWordIndex = null;
} else {
this.keyWordIndex = index;
this.keyword = this.keywordData[index]
switch(this.selectValue){
case 'title' :
this.query.title = this.keyword
break;
case 'isbn' :
this.query.isbn = this.keyword
break;
case 'author' :
this.query.author = this.keyword
break;
case 'publish' :
this.query.publish = this.keyword
break;
case 'createdDate' :
this.query.createdDate = this.keyword
break;
}
}
this.addMoreData()
},
carouselChange(val) {
this.carIndex = val

33
selfServiceMachine/src/views/onlineBookSelection.vue

@ -2,22 +2,51 @@
<div id="book">
<div class="top-bg"></div>
<div class="online-active">
<img src="~@/assets/images/code.png" alt="" />
<div class="qrcode" id="qrCodeUrl"></div>
</div>
</div>
</template>
<script>
import QRCode from "qrcodejs2";
export default {
name: 'OnlineBookSelection',
components: {},
components: {
QRCode
},
data() {
return {
QRCode: '',
activeId: ''
}
},
created() {
this.activeId = this.$route.query.activeId
console.log(this.$route.query.activeId)
},
mounted(){
this.creatQrCode()
},
methods: {
creatQrCode() {
const that = this;
console.log(window.location.href);
if(this.isLocal){
that.QRCode = 'http://192.168.99.50:8089/BookList?activeId?activeId='+ this.activeId
}else{
that.QRCode = window.location.href+'BookList?activeId?activeId='+ this.activeId
}
console.log(that.QRCode)
that.$nextTick(function () {
let q = new QRCode("qrCodeUrl", {
text: that.QRCode,
width: 180,
height: 180,
colorDark: "#000000",
colorLight: "#ffffff",
})
})
}
}
}
</script>

Loading…
Cancel
Save