1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
| 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 });
| },
| },
| });
|
|