java-mall-app/components/themes/shoptheme6.vue
2024-11-01 16:35:40 +08:00

1149 lines
36 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template name="shoptheme6">
<view v-if="commonTplData !== null">
<!--第六套模板 start-->
<view class="content" :style="{height:(commonTplData.windowHeight) + 'px'}">
<scroll-view class="category" scroll-y="true" :style="{height:(commonTplData.windowHeight) + 'px'}">
<view :class="['category-item', commonTplData.cid==item.store_product_cat_id?'category-item-select':'']" v-for="(item, i) in commonTplData.smallCategory"
:key="i" @click="ckallPD6" :data-id="(item.store_product_cat_id || '')" :data-name="(item.name)">
{{item.name}}
<view class="car-num" style="top: unset;margin-top: -84rpx;" v-if="(item.user_cart_quantity !== undefined && item.user_cart_quantity > 0)">{{item.user_cart_quantity ? item.user_cart_quantity : ""}}</view>
</view>
<view style="height:200rpx;"></view>
</scroll-view>
<scroll-view class="body" scroll-y="true" v-if="(commonTplData.pdlist.length > 0)" @scrolltolower="scrollbottom" :style="{height:commonTplData.windowHeight + 'px'}">
<view class="body-title" v-if="false && commonTplData.categoryname">{{commonTplData.categoryname}}</view>
<view style="background-color: #fff;height: 10px;"></view>
<view class="body-item" v-for="(item, index) in commonTplData.pdlist" :key="index" :url="'/pages/product/detail?is_store_flag='+(commonTplData.isStoreFlag) + '&pid=' + (item.id)"
hover-class="none">
<navigator :url="'/pages/product/detail?is_store_flag='+(commonTplData.isStoreFlag) + '&pid=' + (item.id)" hover-class="none">
<image :src="(item.ProductPic)"></image>
</navigator>
<view class="body-item-info">
<navigator class="item-info-title" :url="'/pages/product/detail?is_store_flag='+(commonTplData.isStoreFlag) + '&pid=' + (item.id)"
hover-class="none">{{item.productName}}</navigator>
<view class="item-info-salenum">{{sprintf(__('已售:%s'), item.SaleNum)}}</view>
<view class="item-info-price">
<label>{{__('¥')}}</label>{{number_format(item.ItemSalePrice, 2)}}
<view class="item-num-box" style="bottom:0;right:0;font-weight: normal;height:50rpx;">
<label class="item-num-over" v-if="(item.Stock == 0)">{{__('已售空')}}</label>
<block v-else>
<block v-if="(!item.HasManualSku)">
<view @click.stop="subcontent" :data-num="(item.user_cart_quantity)" :data-stock="(item.Stock)" :data-spuid="(item.id ? item.id : 0)"
:data-pname="(item.item_name ? item.item_name : '')" :data-skuid="(item.DefaultProductSkuId)" :data-index="(index)"
v-if="(item.user_cart_quantity>0)" class="iconfont icon-jian " style="font-size:50rpx;"></view>
<text class="item-num-add" v-if="(item.user_cart_quantity>0)">{{item.user_cart_quantity>99?'99+':item.user_cart_quantity}}</text>
<view @click.stop="addcontent" :data-num="(item.user_cart_quantity)" :data-stock="(item.Stock)" :data-spuid="(item.id ? item.id : 0)"
:data-pname="(item.item_name ? item.item_name : '')" :data-skuid="(item.DefaultProductSkuId)" :data-index="(index)" :data-is_virtual="(item.is_virtual)"
class="iconfont icon-add " style="font-size:50rpx;position:relative;bottom:5rpx;"></view>
</block>
<label class="item-num-choose" @click.stop="InitProduct" :data-item_id="(item.item_id)" :data-index="(index)"
v-else>{{__('选规格')}}
<view class="car-num" v-if="(item.user_cart_quantity>0)" style="right:-10rpx;top:-15rpx;">{{item.user_cart_quantity>99?'99+':item.user_cart_quantity}}</view>
</label>
</block>
</view>
</view>
</view>
</view>
<view class="m-loading-box">
<block v-if="(commonTplData.ispage)">
<view class="u-loadmore">
<label class="u-loading"></label>
<text class="u-loadmore-tips">{{__('正在加载')}}</text>
</view>
</block>
<block v-else>
<view class="u-loadmore u-loadmore-line">
<text class="u-loadmore-tips" style="background:white;">{{__('没有更多数据啦!')}}</text>
</view>
</block>
</view>
<view style="height:200rpx;"></view>
</scroll-view>
<view class="m-nullcontent" style="flex:4;width:80%;" v-else>
<view class="m-nullpage-middle" v-if="loadProductComplete">
<label class="iconfont icon-meiyougengduo"></label>
<view class="m-null-tip">
<text>{{__('亲~什么都没有')}}</text>
<text>{{__('暂时没有商品哦')}}</text>
</view>
</view>
</view>
</view>
<view class="window " v-if="(!commonTplData.click6)">
<view class="window-top" @click.stop="cancelwindow">
<view :class="['top-content', !commonTplData.click6?'animated slideInUp':'']" @click.stop.prevent="doNothing">
<view class="window-clear">
<label @click="delAll" class="delAll">{{__('清空购物车')}}</label>
<label class="iconfont icon-delete" @click="delAll"></label>
</view>
<view class="top-scrollbox">
<block v-for="(item, i) in commonTplData.cartlist.items[0].items" :key="i">
<view class="window-scroll-item" v-if="(item.cart_select)">
<label class="window-item-title" v-if="(!item.item_spec_name)">{{item.product_name}}</label>
<view class="window-item-title-sp" v-else>
<view class="sp-name">{{item.product_name}}</view>
<view class="sp-content">{{item.item_spec_name}}</view>
</view>
<label class="window-item-price">{{__('¥')}}{{item.item_sale_price}}</label>
<view class="item-num-box">
<view @click.stop="sub" :data-num="item.cart_quantity" :data-stock="item.item_quantity"
:data-cid="item.cart_id" :data-spuid="item.product_id" :data-skuid="item.item_id" class="iconfont icon-jian icon" style="font-size:45rpx;"></view>
<text class="item-num-add">{{item.cart_quantity>99?'99+':item.cart_quantity}}</text>
<view @click.stop="add" :data-num="item.cart_quantity" :data-stock="item.item_quantity"
:data-cid="item.cart_id" :data-spuid="item.product_id" :data-skuid="item.item_id" class="iconfont icon-add icon" style="font-size:45rpx;position:relative;bottom:5rpx;"></view>
</view>
</view>
</block>
</view>
</view>
</view>
<view class="window-bottom"></view>
</view>
<view class="car" @click.stop="shoppingcarclicked" v-if="(commonTplData.isdata)">
<view :class="'iconfont icon-gouwucheover car-img ' + (commonTplData.cartlist.Total>0?'red':'gray')"></view>
<view class="car-num" v-if="(commonTplData.cartlist.Total>0)">{{commonTplData.cartlist.Total>99?'99+':commonTplData.cartlist.Total}}
</view>
</view>
<view class="bottom-bar" v-if="(commonTplData.isdata)" @click.stop.prevent="doNothing">
<view class="bar-left" @click.stop="shoppingcarclicked">
<view class="price-box" v-if="(commonTplData.cartlist.Total>0)">
<view class="price-money">
<label>{{__('¥')}}</label>{{commonTplData.cartlist.TotalPrice}}</view>
<view class="price-delivery">{{__('不含运费')}}</view>
</view>
<text class="text-null" v-else>{{__('购物车为空')}}</text>
</view>
<view :class="'bar-right ' + (commonTplData.cartlist.Total>0?'bar-right-red':'bar-right-gray')" @click.stop="submitorder">{{__('结算')}}
{{commonTplData.cartlist.Total>0?'(':''}}{{commonTplData.cartlist.Total>0?(commonTplData.cartlist.Total>99?'99+':commonTplData.cartlist.Total):''}}{{commonTplData.cartlist.Total>0?')':''}}
</view>
</view>
<view class="msk1" v-if="(commonTplData.addCar)" style="z-index:20;" @click.stop="closeaddcar">
<view class="m-sp-box" @click.stop="innertouch">
<view class="m-sp-top">
<view class="u-close-sp" @click.stop="closeaddcar">✕</view>
<view class="m-sp-title">{{commonTplData.ProductInfo.SalesName}}</view>
<view class="m-sp-body" v-for="(items, i) in commonTplData.ProductInfo.product_spec" :key="i">
<view>{{items.name}}</view>
<view class="m-sp-unit">
<view v-for="(item, ii) in items.item" :key="ii" :class="['m-sp-choose', item.select?'sp-choose-item-checked':'']">
<label class="sp-choose-item " :data-specid="(items.specid)" :data-spuid="(item.id)" @click.stop="selectsp">{{item.name}}</label>
</view>
</view>
</view>
</view>
<view class="m-sp-bottom">
<label class="sp-bottom-price">{{__('¥')}}{{commonTplData.ProductInfo.item_sale_price}}</label> <label class="sp-bottom-des">(
<block v-for="(items, i) in commonTplData.ProductInfo.product_spec" :key="i">
<block v-for="(item, ii) in items.item" :key="ii">
<block v-if="(item.select)">{{item.name}} </block>
</block>
</block>
)</label>
<view class="item-num-box" style="bottom:0;right:30rpx;font-weight: normal;height:100rpx;">
<block>
<view @click.stop="subcontentsp" v-if="(commonTplData.count>0)" :data-stock="(commonTplData.ProductInfo.item_quantity)"
:data-spuid="(commonTplData.ProductInfo.product_id ? commonTplData.ProductInfo.product_id : 0)" :data-pname="(commonTplData.ProductInfo.SalesName2 ? commonTplData.ProductInfo.SalesName2 : '')"
:data-skuid="(commonTplData.ProductInfo.item_id)" class="iconfont icon-jian " style="font-size:50rpx;"></view>
<text class="item-num-add" v-if="(commonTplData.count>0)">{{commonTplData.count>99?'99+':commonTplData.count}}</text>
<view @click.stop="addcontentsp" :data-stock="(commonTplData.ProductInfo.item_quantity)" :data-spuid="(commonTplData.ProductInfo.product_id ? commonTplData.ProductInfo.product_id : 0)"
:data-pname="(commonTplData.ProductInfo.SalesName2 ? commonTplData.ProductInfo.SalesName2 : '')" :data-skuid="(commonTplData.ProductInfo.item_id)"
class="iconfont icon-add " style="font-size:50rpx;position:relative;bottom:5rpx;"></view>
</block>
</view>
</view>
</view>
</view>
<!--第六套模板 start-->
</view>
</template>
<script>
import $ from "../../helpers/util";
// 仅仅作为初始化数据结构使用
var thatProm = {
isStoreFlag: 1,
ProductInfo: {},
addCar: false,
count: 0,
windowHeight: 0,
categoryname: "",
click6: true,
cid: 0,
cartlist: {},
isdata: false,
select_cart_ids: [],
tapindex: 1,
viewtype: 0,
shopInfo: {},
pdlist: [],
sort: 2,
ispage: true,
flag: true,
distance: 0,
istop: false,
TemplateKey: "",
smallCategory: [],
loadStoreCategoryComplete: false, // 当前选中的店铺分类信息是否加载完成
currentCategoryId: 0, // 当前选中的店铺分类ID
currentCategoryName: '', // 当前选中的店铺分类名称
AdContent: {},
post: {
store_id: 0,
orderby: 1,
sort: 2,
isnew: false,
curpage: 1
},
formdate: "",
pageId: 0
};
export default {
name: "shoptheme6",
props: {
commonTPL: {
type: Object,
default () {
return {
isStoreFlag: 1,
ProductInfo: {},
addCar: false,
count: 0,
windowHeight: 0,
categoryname: "",
click6: true,
cid: 0,
cartlist: {},
isdata: false,
select_cart_ids: [],
tapindex: 1,
viewtype: 0,
shopInfo: {},
pdlist: [],
sort: 2,
ispage: true,
flag: true,
distance: 0,
istop: false,
TemplateKey: "",
smallCategory: [],
loadStoreCategoryComplete: false, // 当前选中的店铺分类信息是否加载完成
currentCategoryId: 0, // 当前选中的店铺分类ID
currentCategoryName: '', // 当前选中的店铺分类名称
AdContent: {},
post: {
store_id: 0,
chain_id: 0,
orderby: 1,
sort: 2,
isnew: false,
curpage: 1
},
formdate: "",
pageId: 0
}
},
}
},
data() {
return {
commonTplData: null,
pid: '',
spuid: '',
skuid: '',
index: 0,
formdate:'',
iddata:true,
splist: [],
splistStr: [],
loadProductComplete: false,
}
},
created: function() {
this.commonTplData = this.commonTPL;
console.info(this.commonTplData)
this.initData();
},
methods: {
initData: function() {
// 默认显示购物车
// this.getCartList();
this.GetPlistTakeAway();
},
//根据分类读取产品
GetPlistTakeAway: function() {
var that = this;
that.$set(that.commonTplData, 'flag', false)
that.$set(that.commonTplData, 'post', Object.assign({}, that.commonTplData.post, {
"isnew": that.commonTplData.post.isnew ? 1 : 0,
"user_cart_quantity": that.commonTplData.TemplateKey === "shop6" ? 1 : 0
}));
that.setData({
'loadProductComplete': false
})
let url = that.cf.URL.store.product;
if (that.commonTplData.isChainFlag)
{
url = that.cf.URL.store.listsChainProduct;
}
$.request({
url: url,
data: that.commonTplData.post,
success: function(data, status, msg, code) {
for (var i = 0; i < data.items.length; i++) {
data.items[i]['id'] = data.items[i]['item_id'];
data.items[i]['DefaultProductSkuId'] = data.items[i]['item_id'];
data.items[i]['productName'] = data.items[i]['product_name'];
data.items[i]['SalesName'] = data.items[i]['product_name'];
data.items[i]['ProductPic'] = data.items[i]['product_image'];
data.items[i]['ItemSalePrice'] = data.items[i]['item_unit_price'];
data.items[i]['SaleNum'] = data.items[i]['product_sale_num'];
data.items[i]['Stock'] = data.items[i]['product_quantity'];
data.items[i]['HasManualSku'] = data.items[i]['item_color'].length > 1;
data.items[i]['DefaultProductSkuId'] = data.items[i]['item_id'];
//data.items[i]['user_cart_quantity'] = 1;
}
if (data.items.length > 0) {
if (that.commonTplData.post.curpage == 1 && data.items.length < 10) {
that.$set(that.commonTplData, 'flag', false);
that.$set(that.commonTplData, 'ispage', false);
} else {
that.$set(that.commonTplData, 'flag', true);
that.$set(that.commonTplData, 'ispage', true);
}
that.$set(that.commonTplData, 'pdlist', that.commonTplData.pdlist.concat(data.items));
} else {
that.$set(that.commonTplData, 'flag', false)
that.$set(that.commonTplData, 'ispage', false)
}
that.setData({
'loadProductComplete': true
})
}
});
that.getCartList()
},
reloadCategoryProduct : function() {
let that = this;
this.$set(this.commonTplData, 'pdlist', []);
this.GetPlistTakeAway()
},
ckallPD6: function(e) {
let that = this;
this.$set(this.commonTplData, 'pdlist', []);
var t;
if (that.commonTplData.tapindex == 2 ) {
t = false
} else {
that.$set(that.commonTplData, 'tapindex', 3)
t = true
}
that.$set(that.commonTplData, 'categoryname', e.target.dataset.name);
that.$set(that.commonTplData, 'currentCategoryName', e.target.dataset.name);
that.$set(that.commonTplData, 'cid', e.target.dataset.id);
that.$set(that.commonTplData, 'currentCategoryId', e.target.dataset.id);
that.commonTplData.post = {
store_category_ids: e.target.dataset.id || '',
store_id: that.commonTplData.shopInfo.store_id,
chain_id: that.commonTplData.shopInfo.chain_id,
orderby: 1,
sort: 2,
isnew: t,
curpage: 1
};
this.GetPlistTakeAway()
},
shoppingcarclicked: function() {
let that = this;
if (that.commonTplData.cartlist.Total > 0) {
that.$set(that.commonTplData, 'click6', !that.commonTplData.click6);
}
},
cancelwindow: function() {
let that = this;
that.$set(that.commonTplData, 'click6', true);
},
doNothing: function() {
},
//读取购物车数据
requestCartList: function() {
let that = this;
var params = {
store_id: that.commonTplData.shopInfo.store_id,
chain_id: that.commonTplData.shopInfo.chain_id
};
return new Promise((res) => {
//发送购物车请求
that.$.request({
url: that.cf.URL.cart.lists,
data: params,
loading: false,
success: function(data, status, msg, code) {
if (typeof data.items == 'undefined') {
data.items = []
}
that.$set(that.commonTplData, 'isdata', data.total_quantity > 0 ? true : false);
if (data.items.length > 0)
{
data = that.ckalllength(data);
that.$set(that.commonTplData, 'cartlist', Object.assign({}, data, {
"Total": data.items[0].totalSelGoods,
"TotalPrice": data.orderSelMoneyAmount,
}));
} else {
that.$set(that.commonTplData, 'cartlist', Object.assign({}, data, {
"Total": 0,
"TotalPrice": 0,
}));
that.$set(that.commonTplData, 'click6', true);
}
if (typeof data.store_category_data == 'undefined') {
data.store_category_data = []
}
that.updateSmallCategoryCartData(that.commonTplData.smallCategory, data.store_category_data)
res({data:data, status:status, msg:msg, code:code});
},
fail: (err, status) => {
res({data:err, status:status});
}
});
})
},
updateSmallCategoryCartData: function (smallCategory, store_category_data) {
let obj = {};
let that = this;
store_category_data.forEach(i => {
obj[i.store_product_cat_id] = i;
});
smallCategory.map(ii => {
let ucq = 0;
if (typeof obj[ii.store_product_cat_id] == 'undefined')
{
ucq = 0;
}
else
{
if (typeof obj[ii.store_product_cat_id]['user_cart_quantity'] == 'undefined')
{
ucq = 0;
}
}
return Object.assign(ii, {'user_cart_quantity' : ucq});
});
that.$set(that.commonTplData, 'smallCategory', smallCategory)
},
getCartList:async function (){
var that = this;
await that.requestCartList();
},
ckalllength: function(data) {
var that = this,
selected_ids = [];
var total_sel = 0;
//循环所有店铺
if (!that.$.isNull(data.items) && data.items.length > 0) {
var total = 0;
for (var store_item_index in data.items) {
var cart_items = data.items[store_item_index].items,
s = cart_items.length;
var i = 0;
for (var item in cart_items) {
//按照item计算 i
if (cart_items[item].cart_select && cart_items[item].is_on_sale) {
i = i + cart_items[item].cart_quantity;
}
}
total = total + i;
}
data.Total = total;
} else {
data.Total = 0;
}
return data;
},
sub: function(e) {
let that = this;
var t = {
btntype: 2,
numval: e.currentTarget.dataset.num,
CID: e.currentTarget.dataset.cid,
stock: e.currentTarget.dataset.stock,
skuid: e.currentTarget.dataset.skuid,
spuid: e.currentTarget.dataset.spuid
};
this.unifiedNum(t)
},
add: function(e) {
let that = this;
var t = {
btntype: 1,
numval: e.currentTarget.dataset.num,
CID: e.currentTarget.dataset.cid,
stock: e.currentTarget.dataset.stock,
skuid: e.currentTarget.dataset.skuid,
spuid: e.currentTarget.dataset.spuid
};
this.unifiedNum(t)
},
unifiedNum: function(e) {
let that = this;
var num_obj = {
value: parseInt(e.numval),
stock: parseInt(e.stock)
};
e.btntype == 1 && (num_obj.value = num_obj.value + 1);
e.btntype == 2 && (num_obj.value = num_obj.value - 1);
num_obj.value > num_obj.stock && (num_obj.value = num_obj.stock);
num_obj.value <= 0 && (num_obj.value = 0);
var param = {
store_id: that.commonTplData.shopInfo.store_id,
chain_id: that.commonTplData.shopInfo.chain_id,
cart_id: e.CID,
cart_quantity: num_obj.value
};
//发送购物车请求
$.request({
url: that.cf.URL.cart.quantity,
data: param,
success: function(data) {
let product_info = that.searchFromMultArray(that.commonTplData.pdlist, e.spuid, 'product_id');
if (Object.keys(product_info).length >= 1) {
let item_info = that.searchFromMultArray(product_info.data['item_color'], e.skuid, 'item_id');
that.updateComminTplCartData(that.commonTplData.pdlist, product_info.index, item_info.index, e.btntype)
}
that.getCartList();
}
});
},
subcontent: function(e) {
let that = this;
var t = {
cart_quantity: -1,
item_id: e.currentTarget.dataset.skuid,
productName: e.currentTarget.dataset.pname,
productSkuId: e.currentTarget.dataset.skuid,
store_id: that.commonTplData.shopInfo.store_id,
chain_id: that.commonTplData.shopInfo.chain_id,
btntype: 2,
index: e.currentTarget.dataset.index,
is_item: false,
item_index: -1
};
if (e.currentTarget.dataset.num === '1') {
this.removeItems(e, e.currentTarget.dataset.skuid);
} else {
this.addCard(t)
}
},
subcontentsp: function(e) {
let that = this;
let skuInfo = that.searchFromMultArray(that.commonTplData.pdlist[this.index]['item_color'], e.currentTarget.dataset.skuid, 'item_id');
var t = {
cart_quantity: -1,
item_id: e.currentTarget.dataset.skuid,
productName: e.currentTarget.dataset.pname,
productSkuId: e.currentTarget.dataset.skuid,
store_id: that.commonTplData.shopInfo.store_id,
chain_id: that.commonTplData.shopInfo.chain_id,
btntype: 2,
index: this.index,
is_item: true,
item_index: skuInfo.index
};
this.addCard(t)
},
addcontent: function(e) {
let that = this;
var t = {
cart_quantity: 1,
item_id: e.currentTarget.dataset.skuid,
productName: e.currentTarget.dataset.pname,
productSkuId: e.currentTarget.dataset.skuid,
store_id: that.commonTplData.shopInfo.store_id,
chain_id: that.commonTplData.shopInfo.chain_id,
btntype: 1,
index: e.currentTarget.dataset.index,
is_item: false,
item_index: -1
};
if (e.currentTarget.dataset.stock == that.commonTplData.pdlist[t.index].user_cart_quantity) {
$.alert("没有库存啦");
return
}
if (e.currentTarget.dataset.is_virtual)
{
that.$.navigateTo({
url: "/pages/checkout/checkout?ifcart=0&cart_id=" + t.item_id + "|" + t.cart_quantity + "&chain_id=" + t.chain_id
})
}
else
{
this.addCard(t)
}
},
addcontentsp: function(e) {
let that = this;
let skuInfo = that.searchFromMultArray(that.commonTplData.pdlist[this.index]['item_color'], e.currentTarget.dataset.skuid, 'item_id');
var t = {
cart_quantity: 1,
item_id: e.currentTarget.dataset.skuid,
productName: e.currentTarget.dataset.pname,
productSkuId: e.currentTarget.dataset.skuid,
store_id: that.commonTplData.shopInfo.store_id,
chain_id: that.commonTplData.shopInfo.chain_id,
btntype: 1,
index: this.index,
is_item: true,
item_index: skuInfo.index
};
if (e.currentTarget.dataset.stock <= skuInfo.data.user_cart_quantity) {
$.alert("没有库存啦");
return
}
this.addCard(t)
},
searchFromMultArray: function(rows, item_id, search_key = 'item_id') {
let row = {};
for (const key in rows) {
if (rows[key][search_key] == item_id) {
row.data = rows[key];
row.index = key;
break;
}
}
return row;
},
addCard: function(params) {
var that = this;
if (that.commonTplData.pdlist[params.index].user_cart_quantity == 0 && params.btntype == 2) {
return;
}
if (that.stock <= 0) {
$.alert("亲~商品没有库存啦!");
return
}
$.request({
url: that.cf.URL.cart.add,
data: params,
success: function(data, status, msg, code) {
if (status == 200) {
that.updateComminTplCartData(that.commonTplData.pdlist, params.index, params.item_index, params.btntype)
that.getCartList();
} else {
$.alert(msg)
}
}
});
},
updateComminTplCartData: function (comData, index, item_index, btn_type) {
let that = this;
if (btn_type == 1) {
comData[index].user_cart_quantity++;
}
if (btn_type == 2) {
comData[index].user_cart_quantity--;
}
// 多规格
if (item_index != -1) {
if (btn_type == 1) {
comData[index].item_color[item_index].user_cart_quantity++;
}
if (btn_type == 2) {
comData[index].item_color[item_index].user_cart_quantity--;
}
that.$set(that.commonTplData, 'count', comData[index].item_color[item_index].user_cart_quantity);
}
that.$set(that.commonTplData, 'pdlist', comData);
},
removeItems: function(e, item_id) {
var that = this;
let tmp = that.commonTplData.pdlist;
$.showModal({
title: "提示",
content: "确认要删除这个商品吗?",
success: function(n) {
if (n.confirm) {
var param = {
item_id: item_id
};
$.request({
url: that.cf.URL.cart.removeItems,
data: param,
success: function(data) {
that.getCartList();
for (var r = 0; r < that.commonTplData.pdlist.length; r++) {
if (that.commonTplData.pdlist[r].id == e.target.dataset.spuid) {
tmp[r].user_cart_quantity = 0;
that.$set(that.commonTplData, 'pdlist', tmp);
break
}
}
}
});
}
}
})
},
delcart: function(e) {
var params = {
cart_id: e.CID
};
var that = this;
if (that.commonTplData.cartlist.Total == 1) {
that.$set(that.commonTplData, 'click6', true);
}
let tmp = that.commonTplData.pdlist;
$.showModal({
title: "提示",
content: "确认要删除这个商品吗?",
success: function(n) {
if (n.confirm) {
var param = {
cart_id: e.currentTarget.dataset.id
};
$.request({
url: that.cf.URL.cart.remove,
data: param,
success: function(data) {
that.getCartList();
for (var r = 0; r < that.commonTplData.pdlist.length; r++) {
if (that.commonTplData.pdlist[r].id == e.target.dataset.spuid) {
tmp[r].user_cart_quantity = tmp[r].user_cart_quantity - 1;
that.$set(that.commonTplData, 'pdlist', tmp);
break
}
}
}
});
}
}
})
},
delAll: function() {
let that = this;
this.clearshoppingcar();
var params = {
cart_id: that.commonTplData.select_cart_ids.toString()
};
let tmp = that.commonTplData.pdlist;
that.commonTplData.select_cart_ids.length <= 0 ? $.confirm("请选择需要删除的商品!") : $.confirm("是否删除选中商品?", function(t) {
if (t.confirm) {
var param = {
cart_id: that.commonTplData.select_cart_ids.toString()
};
$.request({
url: that.cf.URL.cart.remove,
data: param,
success: function(data) {
that.getCartList()
for (var n in that.commonTplData.pdlist) {
tmp[n].user_cart_quantity = 0;
that.$set(that.commonTplData, 'pdlist', tmp);
}
that.$set(that.commonTplData, 'count', 0);
}
});
}
},true)
},
clearshoppingcar: function() {
let that = this;
var ids = [],
n = that.commonTplData.cartlist.items[0].items;
for (var r in n) {
n[r].cart_select && ids.push(n[r].cart_id);
}
that.$set(that.commonTplData, 'select_cart_ids', ids);
that.$set(that.commonTplData, 'click6', true);
},
submitorder: function() {
let that = this;
let url = "/pages/checkout/checkout?checked_store=" + that.commonTplData.post.store_id;
if (that.commonTplData.isChainFlag)
{
url = "/pages/checkout/checkout?chain_id=" + that.commonTplData.post.chain_id;
}
that.commonTplData.cartlist.Total > 0 ? $.navigateTo({
url: url
}) : $.showModal({
title: "提示",
content: "请选择需要结算商品!",
showCancel: false
})
},
selectsp: function(e) {
var t = {
spuid: e.target.dataset.spuid,
specid: e.target.dataset.specid
},
spec_ids = [],
r = this.splist;
for (var i in r) {
r[i] == t.specid ? spec_ids.push(parseInt(t.spuid)) : spec_ids.push(parseInt(r[i]));
}
this.setData({
splist: [],
splistStr: []
});
let that = this;
var uniqid = spec_ids.join('-');
var item_id = that.commonTplData.ProductInfo.product_uniqid[uniqid][0];
var params = {
item_id: item_id,
eventId: this.eventId
};
//读取商品规格信息
$.request({
url: that.cf.URL.product.quick,
data: params,
success: function(data, status) {
if (status != 200) {
that.setData({
isdata: false
});
} else {
if (data.item_row.product_spec.length > 0) {
for (var n in data.item_row.product_spec) {
for (var r in data.item_row.product_spec[n].item) {
data.item_row.product_spec[n].item[r].select && (data.item_row.product_spec[n].specid = data.item_row.product_spec[
n].item[r].id, that.splist.push(data.item_row.product_spec[n].item[r].id), that.splistStr.push(data.item_row
.product_spec[n].item[r].name));
}
}
}
that.$set(that.commonTplData, 'ProductInfo', data.item_row);
let product_info = that.searchFromMultArray(that.commonTplData.pdlist, data.item_row.product_id, 'product_id')
let item_info = that.searchFromMultArray(product_info.data['item_color'], params.item_id, 'item_id');
that.$set(that.commonTplData, 'count', item_info.data.user_cart_quantity);
}
}
});
},
InitProduct: function(e) {
var that = this;
this.setData({
pid: e.target.dataset.item_id,
skuid: e.target.dataset.item_id,
index: e.target.dataset.index
});
var params = {
item_id: e.target.dataset.item_id
};
this.setData({
splist: [],
splistStr: []
});
//读取商品规格信息
$.request({
url: that.cf.URL.product.quick,
data: params,
success: function(data, status) {
if (status != 200) {
that.setData({
isdata: false
});
} else {
if (data.item_row.product_spec.length > 0) {
for (var n in data.item_row.product_spec) {
for (var r in data.item_row.product_spec[n].item) {
data.item_row.product_spec[n].item[r].select && (data.item_row.product_spec[n].specid = data.item_row.product_spec[
n].item[r].id, that.splist.push(data.item_row.product_spec[n].item[r].id), that.splistStr.push(data.item_row
.product_spec[n].item[r].name));
}
}
}
that.$set(that.commonTplData, 'ProductInfo', data.item_row);
that.$set(that.commonTplData, 'addCar', true);
let product_row = that.commonTplData.pdlist[e.target.dataset.index]
let item_info = that.searchFromMultArray(product_row['item_color'], e.target.dataset.item_id, 'item_id');
that.$set(that.commonTplData, 'count', item_info.data.user_cart_quantity);
}
},
fail: function(data) {
that.$.alert("网络错误,请重试!")
}
});
},
closeaddcar: function() {
let that = this;
that.$set(that.commonTplData, 'addCar', false);
},
searchcarcount: function(e) {
let that = this;
if (!$.isNull(that.commonTplData.cartlist.items)) {
that.$set(that.commonTplData, 'count', 0);
for (var t = 0; t < that.commonTplData.cartlist.items[0].items.length; t++) {
if (that.commonTplData.cartlist.items[0].items[t].item_id == e) {
that.$set(that.commonTplData, 'count', that.commonTplData.cartlist.items[0].items[t].Amount);
}
}
}
},
callTel: function(e) {
$.makePhoneCall({
phoneNumber: e.currentTarget.dataset.tel,
success: function(e) {},
fail: function(e) {}
})
},
scrollbottom: function(e) {
let that = this;
if (that.commonTplData.flag) {
that.setData({
flag: false
}), clearTimeout(n);
var n = setTimeout(function() {
that.$set(that.commonTplData, 'post', Object.assign({}, that.commonTplData.post, {curpage: that.commonTplData.post.curpage + 1}));
that.commonTplData.TemplateKey == "shop6" ? that.GetPlistTakeAway() : that.GetPlist()
},500)
}
},
tplGoToPage: function(e) {
var t = e.currentTarget.dataset;
switch (parseInt(t.type)) {
case 1:
$.navigateTo("/pages/product/detail?pid=" + t.id);
break;
case 2:
$.navigateTo("/pages/product/list?store_category_id==" + (t.id || 0) + "&cname=" + t.name);
break;
case 3:
$.navigateTo("/pages/product/list?pname=" + t.keyword);
break;
case 4:
$.navigateTo(t.appurl);
break;
case 5:
$.navigateTo(t.appurl);
break;
case 6:
$.navigateTo(t.appurl);
break;
case 7:
$.navigateToMiniProgram({
appId: t.appid,
path: t.appurl || ""
});
break;
case 8:
$.navigateTo("/pagesub/diy-page/diy-page?id=" + t.id);
break;
case 9:
$.navigateTo("/pagesub/webpage/webpage?u=" + encodeURIComponent(t.appurl) + "&tn=" + t.name + "&tc=" + t.appid +
"&tb=" + t.keyword)
}
},
bindDateChange: function(e) {
let that = this;
this.setData({
formdate: e.detail.value
})
},
formSubmit: function(e) {
var t = this,
n = [];
for (var r = 0; r < t.PageContent.length; r++) {
if (t.PageContent[r].eltmType == 13) {
var i = t.PageContent[r].eltm13.data;
for (var s = 0; s < i.length; s++) {
var o = e.detail.value[i[s].id],
u = i[s].isFillIn,
a = i[s].labelText,
f = i[s].id,
l = {},
c = true;
if (i[s].type == 2) {
if (u) {
if (!!$.isNull(t.formdate)) {
return $.confirm(i[s].placeholderText), c = false, false;
}
o = t.formdate, c = true
} else {
c = true;
}
} else if (u) {
if (!!$.isNull(o)) {
return $.confirm(i[s].placeholderText), c = false, false;
}
if (i[s].isVerification > 0) {
if (i[s].isVerification == 1) {
if (!/^1[23456789]\d{9}$/.test(o)) {
return $.confirm("请输入正确的手机号码!"), c = false, false;
}
c = true
}
if (i[s].isVerification == 2) {
if (!/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/.test(o)) {
return $.confirm("请输入正确的邮箱地址!"), c = false, false;
}
c = true
}
} else {
c = true
}
} else {
if (!$.isNull(o)) {
if (i[s].isVerification > 0) {
if (i[s].isVerification == 1) {
if (!/^1[23456789]\d{9}$/.test(o)) {
return $.confirm("请输入正确的手机号码!"), c = false, false;
}
c = true
}
if (i[s].isVerification == 2) {
if (!/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/.test(o)) {
return $.confirm("请输入正确的邮箱地址!"), c = false, false;
}
c = true
}
} else {
c = true;
}
}
c = true
}
c && (l.id = f, l.key = a, l.value = o, n.push(l))
}
}
}
var h = {
SubmitInfo: JSON.stringify(n),
PageId: t.pageId
};
/* ??? $.xsr($.makeUrl(api.SubmitFormData, h), function (e) {
e.Code == 0 ? $.alert("提交信息成功!") : $.confirm("你已经提交信息,请勿重复提交!")
})*/
},
innertouch: function() {}
}
}
</script>
<style lang="scss">
@import "../../styles/_variables";
@import '../../styles/layout.scss';
@import '../../styles/store_themes.scss';
@import '../../styles/store_tpl.scss';
</style>