// $( document ).ready(function() {
// });
// 載入共用 template
$('#navbar').load('../../template/navbar.html');
$('#footer').load('../../template/footer.html');
$('#removeResultBtn').hide(); // 隱藏全部清除按鈕
// 處理 radio 選取狀態
$('.filter-list .form-check').click(function (e) {
e.preventDefault();
$(this).find('.form-check-input').prop('checked', true);
// 取得 radio 按鈕的 label
let radioLabel = $(this).find('.form-check-label').text().trim().replace(/\s+/g, ' '); // 移除換行空白
// 取上一層 search-tab 按鈕文字
let buttonValue = $(this).closest('.dropdown').find('.search-tab').text().trim();
let buttonId = $(this).closest('.dropdown').find('.search-tab').attr('id');
updateSelectedOptions(buttonId, buttonValue, radioLabel);
});
let filterList = []; // 篩選條件
// 更新篩選狀態
function updateSelectedOptions(id, button, radio) {
console.log('更新篩選狀態', button, radio);
if (filterList.length) {
let exists = false; // 判斷是否已存在
for (let index = 0; index < filterList.length; index++) {
const element = filterList[index];
// 如有重複 button 只改 radio 狀態
if (element.text === button) {
element.value = radio;
exists = true;
// 更新篩選的值
$(`.search-tab-result .budget:contains(${button})`).find('p').text(`${button}:${radio}`);
}
}
// 如果 filterList 中不存在則新增
if (!exists) {
const newItem = {
id: id,
text: button,
value: radio
};
filterList.push(newItem);
createFilterHtml(newItem);
}
} else {
// 儲存篩選條件
filterList.push({
id: id,
text: button,
value: radio
})
for (let index = 0; index < filterList.length; index++) {
const element = filterList[index];
createFilterHtml(element);
}
}
designerSearch(); // 搜尋
console.log('filterList', filterList);
// 切換按鈕選取狀態
$('.dropdown').each(function () {
let hasCheckedRadio = $(this).find('input[type="radio"]:checked').length > 0;
$(this).find('.search-tab').toggleClass('active', hasCheckedRadio);
});
}
// 新增篩選條件 HTML
function createFilterHtml(item) {
let dom = `
${item.text}:${item.value}
`;
$('.search-tab-result').append(dom);
$('#removeResultBtn').show();
}
let page = 1; // 當前頁數
let pageSize = 18; // 每頁數量
// 列表篩選
async function designerSearch(type = "") {
// 預設排序為 recommend
let url = `https://m3.hhh.com.tw:18673/designer_search?page=${page}&page_size=${pageSize}&order_by=recommend`;
console.log('type', type);
if (type === "order_by") {
url += `&${type}=${assignOrder}`
}
let input = $(".keywords").val();
console.log('input', input);
if (input !== "") {
url += `&keyword=${input}`
}
if (filterList.length) {
filterList.map(item => {
if (item.id === 'budget') {
switch (item.value) {
case "100萬以下":
url += `&${item.id}=1`
break;
case "100~200萬":
url += `&${item.id}=2`
break;
case "200~300萬":
url += `&${item.id}=3`
break;
case "300~400萬":
url += `&${item.id}=4`
break;
case "400~500萬":
url += `&${item.id}=5`
break;
case "500萬以上":
url += `&${item.id}=6`
break;
default:
break;
}
} else {
url += `&${item.id}=${item.value}`
}
})
}
try {
const response = await axios.get(url);
let totalCount = response.data.total_count;
let totalPages = Math.ceil(totalCount / pageSize);
if (totalPages) {
$('.filter-list .pagination').show();
setPagination(totalPages); // 分頁處理
} else {
$('.filter-list .pagination').hide();
}
let resultHtml = '';
console.log(' response.data.designers', response.data.designers);
if (response.data.designers.length) {
response.data.designers.forEach((item) => {
resultHtml += `
找不到符合的資料,請重新搜尋。
" } $('#designerList').html(resultHtml); } catch (error) { console.log("error", error); } } designerSearch(); let maxPagesMobile = 5; // 手機板最多顯示 5 頁 let maxPagesDesktop = 10; // 電腦版最多顯示 10 頁 // 分頁 function setPagination(pages) { let screenWidth = $(window).width(); let maxPages = screenWidth > 991 ? maxPagesDesktop : maxPagesMobile; function renderPagination(currentPage) { let dom = `