/**
* 更新佔位符顯示狀態
* 1. 計算最大組數:取各組 ceil(selected / fullB) 的最大值,最小為 1
* 2. 每組目標數量 = 最大組數 * fullB
* 3. 每組佔位符數量 = 目標數量 - 已選數量
*
* 範例:狗組需1件,貓組需3件
* - 狗0件、貓0件 → maxGroups=1 → 狗目標1(佔位1)、貓目標3(佔位3)
* - 狗2件、貓2件 → maxGroups=2 → 狗目標2(佔位0)、貓目標6(佔位4)
* - 狗0件、貓8件 → maxGroups=3 → 狗目標3(佔位3)、貓目標9(佔位1)
*
* @param {Array} groupSettings - 組別設定陣列,每項包含 {index, fullA, fullB, selected, AS}
*/
function updatePlaceholderVisibility(groupSettings) {
if (!groupSettings || groupSettings.length === 0) return;
// 計算每組可湊成的組數,取最大值為最大組數
var maxGroups = 0;
groupSettings.forEach(function(group) {
if (group.fullB > 0) {
var groupCount = Math.ceil(group.selected / group.fullB);
if (groupCount > maxGroups) {
maxGroups = groupCount;
}
}
});
// 若所有組都沒有選購,至少顯示一組的佔位符
if (maxGroups === 0) {
maxGroups = 1;
}
var carousel = $(".user-list6 .orderSlide");
// 先按 index 排序 groupSettings,確保處理順序正確
groupSettings.sort(function(a, b) {
return a.index - b.index;
});
// 第一步:移除所有現有的佔位符(每組可能有多個)
groupSettings.forEach(function(group) {
var placeItems = carousel.find('.pic-bg.num_' + group.index);
placeItems.each(function() {
var owlItem = $(this).parents(".owl-item").not(".cloned");
if (owlItem.length > 0) {
carousel.trigger('remove.owl.carousel', [owlItem.index()]).trigger('refresh.owl.carousel');
}
});
});
// 第二步:計算每組需要的佔位符數量並加入
groupSettings.forEach(function(group) {
// 目標數量 = 最大組數 * 該組每組需求量
var targetCount = maxGroups * group.fullB;
// 佔位符數量 = 目標數量 - 已選數量
var placeholderCount = targetCount - group.selected;
if (placeholderCount < 0) placeholderCount = 0;
for (var i = 0; i < placeholderCount; i++) {
var groupName = group['AS'];
var placeholderHtml = '
' +
'
' + groupName + _jsLang.組 + '
' +
'
' + _jsLang.商品尚未選購 + '
' +
'
';
// 加到最後
carousel.trigger('add.owl.carousel', [$(placeholderHtml)]).trigger('refresh.owl.carousel');
}
});
}
$(document).ready(function(){
//增加
$('.combosBox').on('click','.button1',function(e){
var _this = $(this),
id = _this.attr("sid"),
group = _this.attr("group"),
num = _this.parents(".productBox").find(".select-num-input").val(),
parent = _this.attr("parent");
if(id && num){
$.ajax({
url:Project_Country+'activities/ajax/act8/ajax_set_cart.php',
type:"POST",
cache:false,
async:true,
data:{type:'add',group:group,id:id,Amount:num,parent:parent},
error:function(d){
alert('網路連線過慢,網頁請重新整理');
},
success:function(d){
$("#Act_Title_Box").html(d);
$(".product-detail").find(".amountBox").val($("#Fit_Amount").val())
if($("#Alert_Msg").val()){
alert($("#Alert_Msg").val());
}else{
order_add(_this);
}
}
});
}else{
if(!id){
alert(_jsLang.請選擇尺寸與規格);
}else if(!num){
alert(_jsLang.請選擇數量);
}
return false;
}
});
//減少
$(".user-orderBox").on('click','.delete',function(){
const del = $(this).parents('.orderProduct');
const carousel = del.parents(".owl-carousel");
// 動畫後移除商品元素,佔位符由 updatePlaceholderVisibility 處理
del.find('.title').remove();
del.find('img').animate(
{ opacity: 0 },
300,
function(){
carousel.trigger('remove.owl.carousel', del.parents('.owl-item').index()).trigger('refresh.owl.carousel');
}
);
var id = $(this).attr("sid"),
group = $(this).attr("group"),
parent = $(this).attr("parent");
$.ajax({
url:Project_Country+'activities/ajax/act8/ajax_set_cart.php',
type:"POST",
cache:false,
async:true,
data:{type:'del',group:group,id:id,parent:parent},
error:function(d){
alert('網路連線過慢,網頁請重新整理');
},
success:function(d){
$("#Act_Title_Box").html(d);
$(".product-detail").find(".amountBox").val($("#Fit_Amount").val());
// updatePlaceholderVisibility 會在 ajax_set_cart.php 返回的 script 中被呼叫
}
});
});
//加入購物車
$(document).on('click','.Add_Tmp_To_Cart',function(){
//固定模式
if($(this).attr("type") == "Stable"){
var Prod = "";
$(".orderProduct .button1").each(function(){
Prod += $(this).attr("group")+"="+$(this).attr("sid")+",";
});
}
$.ajax({
url:Project_Country+'activities/ajax/ajax_add_to_cart.php',
type:"POST",
cache:false,
async:true,
data:{Act_Type:$(this).attr("act_type"),ID:$(this).attr("prod_id"),Prod:Prod},
dataType: 'json',
error:function(d){
alert('網路連線過慢,網頁請重新整理');
},
success:function(d){
if(d.Msg)
{
alert(d.Msg);
}
else
{
switch(d.Status){
case "RET_SUCCESS":
if(d.DataLayer){eval(d.DataLayer)}
AlertPop({
icon: '',
string: _jsLang.加入購物車成功,
})
window.location.reload();
break;
case "RET_NO_MEMBER_NO":
alert(_jsLang.欲購買紅利兌換商品請先登入會員並完成會員認證);
break;
case "RET_RBONUS_OUT":
alert(_jsLang.紅利不足);
break;
case "RET_ERROR":
alert(_jsLang.資料庫忙線中);
break;
case "RET_PROD_ERROR":
alert(_jsLang.商品已下架);
break;
case "RET_PROD_ERROR2":
alert(_jsLang.商品尚未開賣);
break;
case "RET_NO_PROD":
alert(_jsLang.請選擇商品);
break;
case "RET_STOCK_ERROR":
alert(_jsLang.商品庫存不足);
break;
case "RET_LIMIT_ERROR":
alert(_jsLang.數量超過限購量)
break;
case "RET_DAILY_LIMIT_ERROR":
alert(_jsLang.數量超過每日限購量 || '數量超過每日限購量')
break;
case "RET_MAX_SALE_QTY_ERROR":
alert(_jsLang.此商品已達銷售上限 || '此商品已達銷售上限')
break;
case "RET_OVER_SIT_MAX":
alert(_jsLang.數量超過定期購限購量);
break;
case "RET_PROD_IN_ONESHOPPAGE_ERROR":
alert(_jsLang.此商品於一頁式購物推廣中+','+_jsLang.暫無法加入購物車);
break;
case "RET_NO_MEMBER":
alert(_jsLang.欲購買會員等級限制商品請先登入會員 || '欲購買會員等級限制商品請先登入會員');
break;
case "RET_ERROR_LEVEL":
alert(_jsLang.此會員等級暫無法加入購物車 || '此會員等級暫無法加入購物車');
break;
case "GAME_PLAYED":
alert(_jsLang.購物車內有遊戲未結商品無法修改購物車);
break;
default:
alert(_jsLang.資料庫忙線中);
break;
};
}
}
});
});
});
function order_add(_this){
const product = _this.parents('.productBox')
const product_title = product.find('.title').text()
const product_img = product.find('img').attr('src')
const product_price = product.find('.price-digit').text()
const product_num = product.find('.select-num-input').val()
const product_spec = product.find('.color-select').find('option:selected').text()
const product_group = _this.attr("group")
const product_id = _this.attr("sid")
const product_parent = _this.attr("parent")
const n = _this.parents('.combos').index();
const html = `
${product_title}
${(product_spec? product_spec: _jsLang.單一規格)}
${_jsLang.Language_Currency + product_price}
`
const slideWrapper = $('.user-orderBox')
slideWrapper.addClass('in-active')
setTimeout(function() {
slideWrapper.removeClass('in-active')
}, 1000)
order_animate(product,html,product_num);
}
function order_animate(product,html,num){
var choseImg = product.find('.productImg img').eq(0),
Img_html = choseImg.clone().addClass('moveImg'),
choseImg_top = product.offset().top,
choseImg_left = product.offset().left,
choseImg_width = product.width(),
choseImg_height = product.height();
var origin_box = $('.user-orderBox .pic-bg').eq(0),
orderBox_change = origin_box.length ? origin_box : $(".orderProduct").eq(0)
changeBox_top = orderBox_change.offset().top,
changeBox_left = orderBox_change.offset().left,
changeBox_width = orderBox_change.width(),
changeBox_height = orderBox_change.height();
$('body').append(Img_html);
$('.moveImg').css({
'top':choseImg_top,
'left':choseImg_left,
'width':choseImg_width,
'height':choseImg_height
}).animate({
'top':changeBox_top,
'left':changeBox_left,
'width':changeBox_width,
'height':changeBox_height
},300,function(){
$(this).remove();
// if(origin_box.length){
// $(".user-list6 .orderSlide").trigger('remove.owl.carousel',origin_box.parents('.owl-item').index()).trigger('refresh.owl.carousel');
// }
$(".user-list6 .orderSlide").trigger('to.owl.carousel',[0,0,true]).trigger('add.owl.carousel',[$(html),0]).trigger('refresh.owl.carousel');
num = num-1;
if(num >0){
order_animate(product,html,num);
}
});
//$(".user-list6 .orderSlide").trigger('to.owl.carousel',[0,0,true]).trigger('add.owl.carousel',[$(html),0]).trigger('refresh.owl.carousel');
}
// ==========================================================
// 複製連結
// ==========================================================
$(function(){
$(document).on("click", ".copy-btn", function(e){
e.preventDefault()
navigator.clipboard.writeText($(this).data("link"))
alert("複製連結成功")
})
})