let sBoxID = ''
let sSortmark = ''
let page = 0
let pageSize = 36
let hasNextPage = true
let searchKeyWord = '' // 搜索keyword
let isSearch = false
// 默认初始化会有限制选择图书借阅的数量的值
// public string getReader()
// 读者信息 {"Barcode":"700008","Name":"测试卡","nMaxNum":2}
let lendNum = 0
setInterval(function() {
$('.lending-btn img').css('animation-duration', '1s').addClass('animate__animated animate__tada');
setTimeout(function() {
$('.lending-btn img').removeClass('animate__animated animate__tada');
}, 1000);
}, 5000);
getBaseInfoReader()
function getBaseInfoReader(){
let readerJson = JSON.parse(boundObject.getReader())
console.log('readerJson',readerJson)
console.log('readerJson-Barcode',readerJson.Barcode)
console.log('readerJson-Name',readerJson.Name)
console.log('readerJson-nMaxNum',readerJson.nMaxNum)
lendNum = readerJson.nMaxNum
}
// 假设书籍数据
let books = [];
// 动态生成左侧分类的项
createHtmlLeftNav();
function createHtmlLeftNav() {
let LeftLocaltionJSON = boundObject.getBoxs('1')
let locations = JSON.parse(LeftLocaltionJSON)
console.log('LeftLocaltionJSON',LeftLocaltionJSON)
let LeftCategoriesJSON = boundObject.getSortmarks('2')
let categories = JSON.parse(LeftCategoriesJSON)
console.log('LeftCategoriesJSON',LeftCategoriesJSON)
// 图书位置
let locationsHtml = '
图书位置
';
locations.forEach((location, index) => {
let activeClass = index === 0 ? 'class="active"' : '';
locationsHtml += `- ${location.BoxName}
`;
});
locationsHtml += '
';
// 图书分类
let categoriesHtml = '图书分类
';
categories.forEach(category => {
categoriesHtml += `- ${category.SortName}
`;
});
categoriesHtml += '
';
document.getElementById('lib-book-left').innerHTML = `${locationsHtml}${categoriesHtml}`
}
// 为图书位置和分类的每个li元素添加点击事件
document.querySelectorAll('.left-filter li').forEach(item => {
item.addEventListener('click', function(event) {
document.querySelectorAll('.left-filter li').forEach(li => {
li.classList.remove('active');
});
const clickedLi = event.target;
const dataId = clickedLi.getAttribute('data-id');
// 判断点击的是图书位置还是分类,并分别处理
if (clickedLi.closest('.filter-location')) {
if(dataId === '*'){
sBoxID = '';
}else{
sBoxID = dataId;
}
sSortmark = ''
} else if (clickedLi.closest('.filter-sort')) {
sSortmark = dataId;
sBoxID = ''
}
this.classList.add('active');
page = 0
hasNextPage = true
document.querySelector('input[name="keyword"]').value = ''
searchKeyWord = ''
isSearch = false
document.querySelector('.rack-content').scrollTop = 0
document.querySelector('.rack-content').innerHTML = ''
createInitRackBooklist();
});
});
let scrollTimeout = null;
function debouncedOnScroll() {
if (scrollTimeout !== null) {
clearTimeout(scrollTimeout);
}
scrollTimeout = setTimeout(onScroll, 200); // 延迟1秒执行onScroll
}
// 滚动事件处理函数
function onScroll() {
const element = document.querySelector('.rack-content')
if (element.scrollTop + element.offsetHeight > element.scrollHeight - 100) {
FetchRightBookList();
}
}
document.querySelector('.rack-content').addEventListener('scroll', debouncedOnScroll);
// 使用事件委托为所有list-item图书添加点击事件
function addClickEventToItems() {
const rackContent = document.querySelector('.rack-content');
rackContent.addEventListener('click', function(event) {
const listItem = event.target.closest('.list-item');
if (listItem) {
listItem.classList.toggle('active');
}
});
}
window.addEventListener('DOMContentLoaded', () => {
addClickEventToItems();
});
function FetchRightBookList(){
if (!hasNextPage) return; // 如果没有下一页,停止加载
if (isSearch) {
page = 0
sBoxID = ''
sSortmark = ''
document.querySelector('.rack-content').innerHTML = ''
}
page += 1;
const params = {
'sName': searchKeyWord,
'sBoxID': sBoxID,
'sSortmark': sSortmark,
'nPageIndex': page,
'nPageMaxNum': pageSize
}
// js传参给 c#端
console.log('params',params)
console.log('sName',searchKeyWord)
console.log('sBoxID',sBoxID)
console.log('sSortmark',sSortmark)
console.log('nPageIndex',page)
console.log('nPageMaxNum',pageSize)
// ----- ----- ----- js调用c#的函数
let booksRightJson = boundObject.getBooks(searchKeyWord,sBoxID,sSortmark,page,pageSize)
var correctedJsonStr = booksRightJson.replace(/"status":\s*"0",\s*/, '');
// 去除字符串的头尾空白
correctedJsonStr = correctedJsonStr.trim();
// 去掉字符串的头花括号
correctedJsonStr = correctedJsonStr.substring(1);
books = JSON.parse(correctedJsonStr).data
const totalPages = JSON.parse(correctedJsonStr).totalPages
console.log('totalPages',totalPages)
if (books.length > 0) {
// books = books.concat(books);
appendBooksToRackContent(books);
} else {
hasNextPage = false; // 更新是否有下一页
}
if(page > totalPages){
hasNextPage = false
}
}
function appendBooksToRackContent(books) {
console.log('appendBooks',books.length)
const groupSize = 12;
const rackContent = document.querySelector('.rack-content');
let lastRackBoxList = rackContent.querySelector('.rack-box-list:last-child');
let lastGroupBooksCount = lastRackBoxList ? lastRackBoxList.querySelectorAll('.list-item').length : 0;
let currentBooksCount = 0; // 当前正在处理的书籍数量
// 循环遍历所有书籍,将它们添加到正确的容器中
books.forEach((book) => {
// 如果最后一个容器不存在或者书籍数量已经达到groupSize,创建一个新的rack-box-list
if (!lastRackBoxList || lastGroupBooksCount >= groupSize) {
lastRackBoxList = document.createElement('div');
lastRackBoxList.className = 'rack-box-list';
rackContent.appendChild(lastRackBoxList);
lastGroupBooksCount = 0; // 重置计数器
}
// 追加书籍到这个rack-box-list中
const authorSpan = (book.Author !== '' && book.Author !== 'NULL') ? `作者:${book.Author}` : '' ;
const bookElement = `
${book.Name}
${authorSpan}
`;
lastRackBoxList.innerHTML += bookElement;
lastGroupBooksCount++;
currentBooksCount++;
if (currentBooksCount >= groupSize) {
return;
}
});
}
// 初始化无图书封面的图书列表
createInitRackBooklist();
function createInitRackBooklist() {
if (isSearch) {
page = 0
sBoxID = ''
sSortmark = ''
document.querySelector('.rack-content').innerHTML = ''
}
const params = {
'sName': searchKeyWord,
'sBoxID': sBoxID,
'sSortmark': sSortmark,
'nPageIndex': page,
'nPageMaxNum': pageSize
}
// js传参给 c#端
console.log('初始化params',params)
console.log('初始化sName',searchKeyWord)
console.log('初始化sBoxID',sBoxID)
console.log('初始化sSortmark',sSortmark)
console.log('初始化nPageIndex',page)
console.log('初始化nPageMaxNum',pageSize)
// ----- ----- ----- js调用c#的函数
let booksRightJson = boundObject.getBooks(searchKeyWord,sBoxID,sSortmark,page,pageSize)
var correctedJsonStr = booksRightJson.replace(/"status":\s*"0",\s*/, '');
// 去除字符串的头尾空白
correctedJsonStr = correctedJsonStr.trim();
// 去掉字符串的头花括号
correctedJsonStr = correctedJsonStr.substring(1);
books = JSON.parse(correctedJsonStr).data
console.log('初始化Books',books.length)
if(books.length === 0){
document.querySelector(".lib-search-result span").innerHTML = 0
bookListHtml = `
暂无相关数据
`;
document.querySelector('.rack-content').innerHTML = bookListHtml;
if (bookList) {
bookList.remove()
}
}else{
const groupSize = 12;
let html = '';
for (let i = 0; i < books.length; i += groupSize) {
html += '';
for (let j = i; j < i + groupSize && j < books.length; j++) {
const authorSpan = (books[j].Author !== '' && books[j].Author !== 'NULL') ? `
作者:${books[j].Author}` : '';
html += `
${books[j].Name}
${authorSpan}
`;
}
html += '
';
}
document.querySelector('.rack-content').innerHTML += html
}
if(isSearch){
document.querySelector(".lib-search-result").style.display = 'block'
document.querySelector(".lib-search-result span").innerHTML = books.length
}else{
document.querySelector(".lib-search-result").style.display = 'none'
document.querySelector(".lib-search-result span").innerHTML = 0
}
}
// 创建借阅书籍弹框
function createlendDialog(books) {
// 借阅书籍列表
const listItems = books.map(function(book,index) {
return `
${index+1}
${book.barcode}
${book.title}
`;
}).join('');
// 弹框的HTML字符串
const dialogHTML = `
`;
// 将弹框添加到body
document.body.insertAdjacentHTML('beforeend', dialogHTML);
// 获取弹框元素
const dialog = document.getElementById('lib-dialog');
const cancelButton = dialog.querySelector('.cancel-btn');
const confirmButton = dialog.querySelector('.confirm-btn');
// 取消
cancelButton.addEventListener('click', function() {
removeSelected(dialog)
});
// 确定
confirmButton.addEventListener('click', function() {
// ----- ----- ----- js调用c#的函数 假设需要借阅得书籍id集
// public string beginLendBooks(string sData)
const bookBarcodes = books.map(function(book) {
return book.barcode
})
console.log('bookBarcodes',bookBarcodes)
const params = bookBarcodes.join(',')
let lendBookComfirmed = boundObject.beginLendBooks(params)
if(lendBookComfirmed){
removeSelected(dialog)
}
});
}
function removeSelected(dialog){
const bookListItems = document.querySelectorAll('.list-item');
bookListItems.forEach(function(item) {
item.classList.remove('active');
});
dialog.remove()
}
// 图书借阅弹框 show
document.querySelector(".lending-btn").addEventListener("click", function() {
const selectedBooks = [];
document.querySelectorAll('.list-item.active').forEach(activeLi => {
const bookData = {
barcode: activeLi.getAttribute('data-id'),
title: activeLi.querySelector('.book-name').textContent
};
selectedBooks.push(bookData);
});
// author: activeLi.querySelector('.book-writer') ? activeLi.querySelector('.book-writer').textContent : ''
if(selectedBooks.length === 0){
layer.alert('请先选择需要借阅的图书!');
return false
}else if(selectedBooks.length > lendNum){
layer.alert('最多只可借阅'+lendNum+'本图书!');
return false
}{
createlendDialog(selectedBooks);
}
});
// 搜索按钮点击搜索
document.querySelector(".search-btn").addEventListener("click", function() {
isSearch = true
searchKeyWord = document.querySelector('input[name="keyword"]').value
if(searchKeyWord === ''){
layer.alert('请输入关键词进行搜索!');
return false
}
hasNextPage = true
// document.querySelector('.rack-content').scrollTop = 0
// document.querySelector('.rack-content').innerHTML = ''
let bookNoData= document.querySelector('.rack-content').querySelector('.book-noData');
if(bookNoData){
bookNoData.remove()
}
document.querySelectorAll('.left-filter li').forEach(item => {
item.classList.remove('active');
});
createInitRackBooklist()
});