133 lines
2.5 KiB
JavaScript
133 lines
2.5 KiB
JavaScript
|
Component({
|
|||
|
options: {
|
|||
|
addGlobalClass: true,
|
|||
|
multipleSlots: true, // 在组件定义时的选项中启用多slot支持
|
|||
|
},
|
|||
|
|
|||
|
externalClasses: [
|
|||
|
'title-class',
|
|||
|
'desc-class',
|
|||
|
'num-class',
|
|||
|
'thumb-class',
|
|||
|
'specs-class',
|
|||
|
'price-class',
|
|||
|
'origin-price-class',
|
|||
|
'price-prefix-class',
|
|||
|
],
|
|||
|
|
|||
|
relations: {
|
|||
|
'../order-card/index': {
|
|||
|
type: 'ancestor',
|
|||
|
linked(target) {
|
|||
|
this.parent = target;
|
|||
|
},
|
|||
|
},
|
|||
|
},
|
|||
|
|
|||
|
properties: {
|
|||
|
id: String,
|
|||
|
hidden: {
|
|||
|
// 设置为null代表不做类型转换
|
|||
|
type: null,
|
|||
|
observer(hidden) {
|
|||
|
// null就是代表没有设置,没有设置的话不setData,防止祖先组件触发的setHidden操作被覆盖
|
|||
|
if (hidden !== null) {
|
|||
|
this.setHidden(!!hidden);
|
|||
|
}
|
|||
|
},
|
|||
|
},
|
|||
|
data: Object,
|
|||
|
layout: {
|
|||
|
type: String,
|
|||
|
value: 'horizontal',
|
|||
|
},
|
|||
|
thumbMode: {
|
|||
|
type: String,
|
|||
|
value: 'aspectFill',
|
|||
|
},
|
|||
|
thumbWidth: Number,
|
|||
|
thumbHeight: Number,
|
|||
|
thumbWidthInPopup: Number,
|
|||
|
thumbHeightInPopup: Number,
|
|||
|
priceFill: {
|
|||
|
type: Boolean,
|
|||
|
value: true,
|
|||
|
},
|
|||
|
currency: {
|
|||
|
type: String,
|
|||
|
value: '¥',
|
|||
|
},
|
|||
|
lazyLoad: Boolean,
|
|||
|
centered: Boolean,
|
|||
|
showCart: Boolean,
|
|||
|
pricePrefix: String,
|
|||
|
cartSize: {
|
|||
|
type: Number,
|
|||
|
value: 48,
|
|||
|
},
|
|||
|
cartColor: {
|
|||
|
type: String,
|
|||
|
value: '#FA550F',
|
|||
|
},
|
|||
|
disablePopup: Boolean,
|
|||
|
},
|
|||
|
|
|||
|
data: {
|
|||
|
hiddenInData: false,
|
|||
|
specsPopup: {
|
|||
|
insert: false,
|
|||
|
show: false,
|
|||
|
},
|
|||
|
},
|
|||
|
|
|||
|
currentInTapSpecs: false,
|
|||
|
|
|||
|
lifetimes: {
|
|||
|
ready() {
|
|||
|
const { hidden } = this.properties;
|
|||
|
if (hidden !== null) {
|
|||
|
this.setHidden(!!hidden);
|
|||
|
}
|
|||
|
},
|
|||
|
},
|
|||
|
|
|||
|
methods: {
|
|||
|
closeSpecsPopup() {
|
|||
|
this.setData({
|
|||
|
'specsPopup.show': false,
|
|||
|
});
|
|||
|
this.triggerEvent('specsclose', { good: this.properties.data });
|
|||
|
},
|
|||
|
|
|||
|
removeSpecsPopup() {
|
|||
|
this.setData({
|
|||
|
'specsPopup.insert': false,
|
|||
|
});
|
|||
|
},
|
|||
|
|
|||
|
onClick(e) {
|
|||
|
if (this.currentInTapSpecs) {
|
|||
|
this.currentInTapSpecs = false;
|
|||
|
return;
|
|||
|
}
|
|||
|
this.triggerEvent('click', e.detail);
|
|||
|
},
|
|||
|
|
|||
|
onClickThumb(e) {
|
|||
|
this.triggerEvent('thumb', e.detail);
|
|||
|
},
|
|||
|
|
|||
|
onClickTag(e) {
|
|||
|
this.triggerEvent('tag', e.detail);
|
|||
|
},
|
|||
|
|
|||
|
onClickCart(e) {
|
|||
|
this.triggerEvent('add-cart', e.detail);
|
|||
|
},
|
|||
|
|
|||
|
setHidden(hidden) {
|
|||
|
this.setData({ hiddenInData: !!hidden });
|
|||
|
},
|
|||
|
},
|
|||
|
});
|