feat: 会员中心 hgcloud 主题初始化 + drone 部署步骤
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
- 解压官方默认主题 default_yfMBA.tar.gz 到 clientarea/hgcloud/ - .gitignore 排除压缩包和临时解压目录 - drone 新增步骤: 同步 hgcloud 到 /clientarea/template/pc/
This commit is contained in:
379
clientarea/hgcloud/js/shoppingCar.js
Normal file
379
clientarea/hgcloud/js/shoppingCar.js
Normal file
@@ -0,0 +1,379 @@
|
||||
(function (window, undefined) {
|
||||
var old_onload = window.onload;
|
||||
window.onload = function () {
|
||||
const template = document.getElementsByClassName("template")[0];
|
||||
Vue.prototype.lang = window.lang;
|
||||
new Vue({
|
||||
components: {
|
||||
asideMenu,
|
||||
topMenu,
|
||||
discountCode,
|
||||
eventCode,
|
||||
},
|
||||
created() {
|
||||
localStorage.frontMenusActiveId = "";
|
||||
this.getCommonData();
|
||||
},
|
||||
mounted() {
|
||||
this.addons_js_arr = JSON.parse(
|
||||
document.querySelector("#addons_js").getAttribute("addons_js")
|
||||
); // 插件列表
|
||||
const arr = this.addons_js_arr.map((item) => {
|
||||
return item.name;
|
||||
});
|
||||
if (arr.includes("PromoCode")) {
|
||||
// 开启了优惠码插件
|
||||
this.isShowPromo = true;
|
||||
}
|
||||
if (arr.includes("IdcsmartClientLevel")) {
|
||||
// 开启了等级优惠
|
||||
this.isShowLevel = true;
|
||||
}
|
||||
if (arr.includes("EventPromotion")) {
|
||||
// 开启活动满减
|
||||
this.isShowFull = true;
|
||||
}
|
||||
this.getCartList();
|
||||
},
|
||||
updated() {
|
||||
// 关闭loading
|
||||
document.getElementById("mainLoading").style.display = "none";
|
||||
document.getElementsByClassName("template")[0].style.display = "block";
|
||||
},
|
||||
destroyed() {},
|
||||
data() {
|
||||
return {
|
||||
timer1: null,
|
||||
listLoding: false,
|
||||
commonData: {},
|
||||
searchVal: "",
|
||||
checkedCities: [],
|
||||
checkAll: false, // 是否全选
|
||||
visible: false,
|
||||
showList: [],
|
||||
addons_js_arr: [], // 插件列表
|
||||
shoppingList: [],
|
||||
isShowPromo: false, // 是否开启优惠码
|
||||
isShowLevel: false, // 是否开启等级优惠
|
||||
isShowFull: false, // 是否开启满减优惠
|
||||
settleLoading: false,
|
||||
};
|
||||
},
|
||||
|
||||
filters: {
|
||||
formateTime(time) {
|
||||
if (time && time !== 0) {
|
||||
return formateDate(time * 1000);
|
||||
} else {
|
||||
return "--";
|
||||
}
|
||||
},
|
||||
filterMoney(money) {
|
||||
if (isNaN(money) || money * 1 < 0) {
|
||||
return "0.00";
|
||||
} else {
|
||||
return formatNuberFiexd(money);
|
||||
}
|
||||
},
|
||||
},
|
||||
computed: {
|
||||
totalPrice() {
|
||||
const arr = [];
|
||||
this.checkedCities.forEach((position) => {
|
||||
this.showList.forEach((item) => {
|
||||
if (position === item.position) {
|
||||
arr.push(item);
|
||||
}
|
||||
});
|
||||
});
|
||||
return arr.reduce((pre, cur) => {
|
||||
return pre + cur.calcItemPrice * 1;
|
||||
}, 0);
|
||||
},
|
||||
nowList() {
|
||||
if (this.searchVal !== "") {
|
||||
return this.showList.filter((item) =>
|
||||
item.name.includes(this.searchVal)
|
||||
);
|
||||
} else {
|
||||
return this.showList;
|
||||
}
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
// 获取购物车列表
|
||||
getCartList() {
|
||||
this.listLoding = true;
|
||||
cartList()
|
||||
.then((res) => {
|
||||
this.shoppingList = res.data.data.list.map((item, index) => {
|
||||
item.price = 0; // 商品单价
|
||||
item.calcItemPrice = 0;
|
||||
item.code_discount = 0; // 商品优惠码抵扣金额
|
||||
item.level_discount = 0; // 商品等级优惠折扣金额
|
||||
item.eventDiscount = 0; // 商品活动优惠金额
|
||||
item.isUseDiscountCode = false; // 商品是否使用优惠码
|
||||
item.position = index; // 商品所在购物车位置
|
||||
item.isShowTips = false; // 是否提示商品库存不足
|
||||
item.priceLoading = true; // 商品价格loading
|
||||
if (item.stock_control === 1 && item.qty > item.stock_qty) {
|
||||
item.isShowTips = true;
|
||||
item.qty = item.stock_qty;
|
||||
}
|
||||
item.isLoading = true; // 商品loading
|
||||
return item;
|
||||
});
|
||||
const arr = this.shoppingList.filter((arritem) => {
|
||||
return arritem.customfield?.is_domain !== 1;
|
||||
});
|
||||
this.listLoding = false;
|
||||
this.showList = [...arr];
|
||||
this.showList.forEach((item) => {
|
||||
this.getConfigOption(item);
|
||||
});
|
||||
})
|
||||
.catch((err) => {
|
||||
console.log(err);
|
||||
this.listLoding = false;
|
||||
});
|
||||
},
|
||||
// 获取商品配置项价格
|
||||
getConfigOption(item) {
|
||||
const params = {
|
||||
config_options: {
|
||||
...item.config_options,
|
||||
promo_code: item.customfield.promo_code,
|
||||
event_promotion: item.customfield.event_promotion,
|
||||
},
|
||||
qty: item.qty,
|
||||
};
|
||||
item.priceLoading = true;
|
||||
configOption(item.product_id, params)
|
||||
.then(async (res) => {
|
||||
item.info = res.data.data;
|
||||
const son_previews = [];
|
||||
if (res.data.data.other && res.data.data.other.son_previews) {
|
||||
res.data.data.other.son_previews.forEach((i) => {
|
||||
i.forEach((items) => {
|
||||
son_previews.push(items);
|
||||
});
|
||||
});
|
||||
}
|
||||
item.preview = res.data.data.preview.concat(son_previews);
|
||||
item.price = res.data.data.price * 1;
|
||||
item.calcItemPrice = res.data.data.price_total * 1;
|
||||
item.level_discount =
|
||||
res.data.data.price_client_level_discount * 1 || 0;
|
||||
item.code_discount =
|
||||
res.data.data.price_promo_code_discount * 1 || 0;
|
||||
item.eventDiscount =
|
||||
res.data.data.price_event_promotion_discount * 1 || 0;
|
||||
})
|
||||
.catch((err) => {
|
||||
item.preview = [];
|
||||
})
|
||||
.finally(() => {
|
||||
item.priceLoading = false;
|
||||
item.isLoading = false;
|
||||
this.$forceUpdate();
|
||||
});
|
||||
},
|
||||
// 更改活动
|
||||
changeEventCode(priceObj, item) {
|
||||
if (item.customfield.event_promotion == priceObj.id) {
|
||||
return;
|
||||
}
|
||||
item.customfield.event_promotion = priceObj.id;
|
||||
const params = {
|
||||
position: item.position,
|
||||
product_id: item.product_id,
|
||||
config_options: item.config_options, // 配置信息
|
||||
qty: item.qty, // 商品数量
|
||||
customfield: item.customfield,
|
||||
self_defined_field: item.self_defined_field,
|
||||
};
|
||||
updateCart(params).then((res) => {
|
||||
this.getConfigOption(item);
|
||||
});
|
||||
},
|
||||
// 使用优惠码
|
||||
getDiscount(data) {
|
||||
this.showList.forEach((item) => {
|
||||
if (item.position === data[2]) {
|
||||
item.customfield.promo_code = data[1];
|
||||
item.isUseDiscountCode = true;
|
||||
const params = {
|
||||
position: data[2],
|
||||
product_id: item.product_id,
|
||||
config_options: item.config_options, // 配置信息
|
||||
qty: item.qty, // 商品数量
|
||||
customfield: item.customfield,
|
||||
self_defined_field: item.self_defined_field,
|
||||
};
|
||||
updateCart(params).then((res) => {});
|
||||
this.getConfigOption(item);
|
||||
}
|
||||
});
|
||||
},
|
||||
// 删除优惠码
|
||||
removeDiscountCode(item) {
|
||||
item.customfield.promo_code = "";
|
||||
item.isUseDiscountCode = false;
|
||||
let i;
|
||||
this.shoppingList.forEach((items, index) => {
|
||||
if (items.position === item.position) {
|
||||
i = index;
|
||||
}
|
||||
});
|
||||
const params = {
|
||||
position: i,
|
||||
product_id: item.product_id,
|
||||
config_options: item.config_options, // 配置信息
|
||||
qty: item.qty, // 商品数量
|
||||
customfield: item.customfield,
|
||||
self_defined_field: item.self_defined_field,
|
||||
};
|
||||
updateCart(params).then((res) => {
|
||||
this.getConfigOption(item);
|
||||
});
|
||||
},
|
||||
// 搜索
|
||||
searchValChange(value) {
|
||||
this.checkedCities = [];
|
||||
this.checkAll = false;
|
||||
},
|
||||
// 点击全选按钮
|
||||
handleCheckAllChange(val) {
|
||||
const arr = this.showList.filter((item) => {
|
||||
return item.info;
|
||||
});
|
||||
const arrr = arr.map((item) => {
|
||||
return item.position;
|
||||
});
|
||||
this.checkedCities = val ? arrr : [];
|
||||
},
|
||||
// 编辑商品数量
|
||||
handelEditGoodsNum(index, num) {
|
||||
return editGoodsNum(index, num);
|
||||
},
|
||||
// 编辑商品
|
||||
goGoods(item) {
|
||||
if (item.info) {
|
||||
const obj = {
|
||||
config_options: item.config_options, // 配置信息
|
||||
position: item.position, // 修改接口要用的位置信息
|
||||
qty: item.qty, // 商品数量
|
||||
customfield: item.customfield,
|
||||
self_defined_field: item.self_defined_field,
|
||||
};
|
||||
sessionStorage.setItem("product_information", JSON.stringify(obj));
|
||||
}
|
||||
location.href = `goods.htm?id=${item.product_id}&change=true&name=${item.name}`;
|
||||
},
|
||||
// 监听购物车选择数量变化
|
||||
handleCheckedCitiesChange(value) {
|
||||
this.checkAll = value.length === this.showList.length;
|
||||
},
|
||||
// 删除商品函数
|
||||
deleteGoodsList(arr, isRefsh) {
|
||||
deleteGoods(arr)
|
||||
.then((res) => {
|
||||
if (res.data.status === 200) {
|
||||
this.$message.success(res.data.msg);
|
||||
isRefsh && this.getCartList();
|
||||
this.$refs.topMenu.getCartList();
|
||||
}
|
||||
})
|
||||
.catch((err) => {
|
||||
err.data.msg && this.$message.error(err.data.msg);
|
||||
})
|
||||
.finally(() => {});
|
||||
},
|
||||
// 点击删除按钮
|
||||
handelDeleteGoods(item, index) {
|
||||
// 调用删除接口
|
||||
const p = item.position;
|
||||
let shoppingList_index = 0;
|
||||
let checkedCities_index = 0;
|
||||
// 删除列表中对应的商品
|
||||
this.showList.splice(index, 1);
|
||||
this.shoppingList.forEach((item, index) => {
|
||||
if (item.position === p) {
|
||||
shoppingList_index = index;
|
||||
}
|
||||
});
|
||||
this.checkedCities.forEach((item, index) => {
|
||||
if (item.position === p) {
|
||||
checkedCities_index = index;
|
||||
}
|
||||
});
|
||||
this.shoppingList.splice(shoppingList_index, 1);
|
||||
this.checkedCities.splice(checkedCities_index, 1);
|
||||
this.deleteGoodsList([shoppingList_index]);
|
||||
},
|
||||
// 删除选中的商品
|
||||
deleteCheckGoods() {
|
||||
if (this.checkedCities.length === 0) {
|
||||
this.$message.warning(lang.referral_status9);
|
||||
return;
|
||||
} else {
|
||||
this.deleteGoodsList(this.checkedCities, true);
|
||||
this.checkedCities = [];
|
||||
}
|
||||
},
|
||||
// 商品数量增加减少
|
||||
handleChange(n, o, item, index) {
|
||||
if (item.stock_control === 1 && n >= item.stock_qty) {
|
||||
this.$message.error(lang.referral_status10);
|
||||
}
|
||||
// 节个流
|
||||
if (this.timer1) {
|
||||
clearTimeout(this.timer1);
|
||||
this.timer1 = null;
|
||||
}
|
||||
this.timer1 = setTimeout(() => {
|
||||
this.handelEditGoodsNum(index, n)
|
||||
.then(async () => {
|
||||
this.getConfigOption(item);
|
||||
})
|
||||
.catch((err) => {
|
||||
err.data.msg && this.$message.error(err.data.msg);
|
||||
})
|
||||
.finally(() => {
|
||||
clearTimeout(this.timer1);
|
||||
this.timer1 = null;
|
||||
});
|
||||
}, 500);
|
||||
},
|
||||
// 结算
|
||||
goSettle() {
|
||||
this.settleLoading = true;
|
||||
if (this.checkedCities.length === 0) {
|
||||
this.$message.warning(lang.referral_status11);
|
||||
return;
|
||||
}
|
||||
const arr = []; // 装的是被选中的商品在购物位置的索引
|
||||
this.shoppingList.forEach((item, index) => {
|
||||
this.checkedCities.forEach((items) => {
|
||||
if (items == item.position) {
|
||||
arr.push(index);
|
||||
}
|
||||
});
|
||||
});
|
||||
sessionStorage.shoppingCartList = JSON.stringify(arr);
|
||||
location.href = `/cart/settlement.htm?cart=1`;
|
||||
this.settleLoading = false;
|
||||
},
|
||||
// 获取通用配置
|
||||
getCommonData() {
|
||||
this.commonData = JSON.parse(
|
||||
localStorage.getItem("common_set_before")
|
||||
);
|
||||
document.title =
|
||||
this.commonData.website_name + "-" + lang.shoppingCar_title;
|
||||
},
|
||||
},
|
||||
}).$mount(template);
|
||||
typeof old_onload == "function" && old_onload();
|
||||
};
|
||||
})(window);
|
||||
Reference in New Issue
Block a user