jufubao-base 1.0.169 → 1.0.170

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/package.json +1 -1
  2. package/src/components/JfbBaseHeader/JfbBaseHeader.vue +2 -2
  3. package/src/components/JfbBaseLogin/Attr.js +1157 -510
  4. package/src/components/JfbBaseLogin/JfbBaseLogin.vue +369 -63
  5. package/src/components/JfbBaseMapSearch/MapSearchMp.vue +1 -1
  6. package/src/components/JfbBaseNotice/JfbBaseNotice.vue +2 -2
  7. package/src/components/JfbBaseTfkCardBind/Api.js +49 -30
  8. package/src/components/JfbBaseTfkCardBind/Attr.js +708 -38
  9. package/src/components/JfbBaseTfkCardBind/JfbBaseTfkCardBind.vue +688 -22
  10. package/src/components/JfbBaseTfkCardBind/Mock.js +19 -9
  11. package/src/components/JfbBaseTfkCardDetail/Api.js +19 -32
  12. package/src/components/JfbBaseTfkCardDetail/Attr.js +740 -33
  13. package/src/components/JfbBaseTfkCardDetail/JfbBaseTfkCardDetail.vue +639 -23
  14. package/src/components/JfbBaseTfkCardDetail/Mock.js +151 -11
  15. package/src/components/JfbBaseTfkCardLogin/Api.js +19 -34
  16. package/src/components/JfbBaseTfkCardLogin/Attr.js +1094 -32
  17. package/src/components/JfbBaseTfkCardLogin/JfbBaseTfkCardLogin.vue +775 -17
  18. package/src/components/JfbBaseTfkCardLogin/Mock.js +191 -11
  19. package/src/components/JfbBaseTfkCardLogin/XdCouponItem.vue +275 -0
  20. package/src/components/JfbBaseTfkCardLogin/XdNotice.vue +550 -0
  21. package/src/components/JfbBaseTfkSearch/AllList.vue +337 -0
  22. package/src/components/JfbBaseTfkSearch/Api.js +11 -42
  23. package/src/components/JfbBaseTfkSearch/Attr.js +344 -32
  24. package/src/components/JfbBaseTfkSearch/ContentCinema.vue +157 -0
  25. package/src/components/JfbBaseTfkSearch/ContentFilm.vue +218 -0
  26. package/src/components/JfbBaseTfkSearch/ContentProduct.vue +317 -0
  27. package/src/components/JfbBaseTfkSearch/ContentShop.vue +186 -0
  28. package/src/components/JfbBaseTfkSearch/CusAttr.js +213 -0
  29. package/src/components/JfbBaseTfkSearch/CustomList.vue +453 -0
  30. package/src/components/JfbBaseTfkSearch/JfbBaseTfkSearch.vue +286 -35
  31. package/src/components/JfbBaseTfkSearch/Mock.js +242 -11
  32. package/src/components/JfbBaseTfkSearch/SkeletonCinema.vue +45 -0
  33. package/src/components/JfbBaseTfkSearch/SkeletonFilm.vue +109 -0
  34. package/src/components/JfbBaseTfkSearch/SkeletonProduct.vue +246 -0
  35. package/src/components/JfbBaseTfkSearch/SkeletonShop.vue +81 -0
  36. package/src/components/JfbBaseTfkSearch/handleKeyword.js +24 -0
  37. package/src/components/JfbBaseTfkSearch/listMixins.js +187 -0
  38. package/src/components/JfbBaseUserInfo/JfbBaseUserInfo.vue +2 -1
  39. package/src/mixins/colorCardMixins.js +71 -9
  40. package/src/mixins/componentsMixins.js +376 -23
  41. package/src/mixins/posterMixins.js +122 -0
@@ -0,0 +1,213 @@
1
+ 'use strict';
2
+ export default (data)=>{
3
+ return [
4
+ {
5
+ ele: 'title',
6
+ label: '商品搜索相关设置',
7
+ size: 'small',
8
+ groupKey:'content',
9
+ },
10
+ {
11
+ label: '是否展示品牌:',
12
+ ele: 'xd-radio',
13
+ valueKey: 'is_show_brand',
14
+ value: data['is_show_brand'] || 'N',
15
+ placeholder: '请选择是否展示品牌',
16
+ multiple: false,
17
+ className: 'input80',
18
+ groupKey:'content',
19
+ list: [
20
+ {label: '是', value: 'Y'},
21
+ {label: '否', value: 'N'},
22
+ ]
23
+ },
24
+ {
25
+ label: "可否直接加入购物车",
26
+ ele: "xd-radio",
27
+ valueKey: "isAddCart",
28
+ groupKey:'content',
29
+ value: data['isAddCart'] || 'Y',
30
+ list: [
31
+ {label: "是", value: 'Y'},
32
+ {label: "否", value: 'N'}
33
+ ]
34
+ },
35
+ {
36
+ label: '是否显示价格:',
37
+ ele: 'xd-radio',
38
+ groupKey:'content',
39
+ valueKey: 'isPrice',
40
+ value: data['isPrice'] || 'Y',
41
+ placeholder: '请选择是否显示价格',
42
+ multiple: false,
43
+ className: 'input80',
44
+ list: [
45
+ {label: '是', value: 'Y'},
46
+ {label: '否', value: 'N'},
47
+ ]
48
+ },
49
+ data['isPrice']==='Y'&&{
50
+ label: '是否展示原价:',
51
+ ele: 'xd-radio',
52
+ groupKey:'content',
53
+ valueKey: 'isShowDiscount',
54
+ value: data['isShowDiscount'] || "Y",
55
+ rules: [
56
+ {required: true, message: '请选择', trigger: ['blur', 'change']}
57
+ ],
58
+ list: [
59
+ {"label": "显示", "value": "Y"},
60
+ {"label": "隐藏", "value": "N"},
61
+ ]
62
+ },
63
+ data['isShowDiscount']==='Y'&&{
64
+ label: '市场价减去售价大于多少展示:',
65
+ ele: 'el-input',
66
+ type: 'number',
67
+ valueKey: 'differ',
68
+ value: data['differ'] || '',
69
+ groupKey:'content',
70
+ placeholder: '价差',
71
+ className: 'input80',
72
+ },
73
+ data['isPrice']==='Y'&&{
74
+ label: '是否标明活动价:',
75
+ ele: 'xd-radio',
76
+ valueKey: 'showActivityPrice',
77
+ value: data['showActivityPrice'] || 'N',
78
+ placeholder: '请选择是否标明活动价',
79
+ groupKey:'content',
80
+ multiple: false,
81
+ className: 'input80',
82
+ list: [
83
+ {label: '是', value: 'Y'},
84
+ {label: '否', value: 'N'},
85
+ ]
86
+ },
87
+ {
88
+ label: '是否显示标签:',
89
+ ele: 'xd-radio',
90
+ valueKey: "isShowTag",
91
+ value: data['isShowTag'] || 'N',
92
+ groupKey:'content',
93
+ list: [
94
+ {label: '是', value: 'Y'},
95
+ {label: '否', value: 'N'},
96
+ ]
97
+ },
98
+
99
+ {
100
+ ele: 'title',
101
+ label: '列表样式设置',
102
+ size: 'small',
103
+ groupKey:'style',
104
+ },
105
+ {
106
+ label: '商品的品牌文字颜色:',
107
+ ele: 'xd-color',
108
+ valueKey: 'brandColor',
109
+ value: data['brandColor'] || '',
110
+ placeholder: '请选择商品的品牌文字颜色',
111
+ classNmae: 'input80',
112
+ groupKey:'style',
113
+ },
114
+
115
+ {
116
+ label: '填充设置:',
117
+ ele: 'xd-margin-padding',
118
+ groupKey:'style',
119
+ valueKey: 'contMargin',
120
+ value: data['contMargin'] || null,
121
+ setting: {
122
+ type: 'margin',
123
+ },
124
+ inline: false,
125
+ notice: '填充设置,单位:<span style="color: red">像素</span>。默认值:<span style="color: red">20</span> 像素',
126
+ },
127
+ {
128
+ label: '背景颜色:',
129
+ ele: 'xd-color',
130
+ valueKey: 'contBgColor',
131
+ value: data['contBgColor'] || '',
132
+ placeholder: '请选择背景颜色',
133
+ classNmae: 'input80',
134
+ groupKey:'style',
135
+ inline: false,
136
+ notice:'背景颜色值建议使用相对浅色系色值',
137
+ },
138
+ {
139
+ label: '当前投影设置:',
140
+ ele: 'xd-shadow',
141
+ groupKey:'style',
142
+ valueKey: 'contShadow',
143
+ value: data['contShadow'] || '',
144
+ setting: {
145
+ selected: 'N',
146
+ },
147
+ handleCustom({action, data}) {
148
+ XdBus.getParentApi('getOptionsSettingList')({setting_id: 'edtix_style_radius'})
149
+ .then(res => {
150
+ data.cb(res.list)
151
+ })
152
+ .catch(error => {
153
+ console.error(error);
154
+ data.cb([])
155
+ });
156
+ },
157
+ },
158
+ {
159
+ label: '当前边框设置:',
160
+ ele: 'xd-border',
161
+ groupKey:'style',
162
+ valueKey: 'contBorder',
163
+ value: data['contBorder'] || '',
164
+ setting: {
165
+ selected:'N'
166
+ },
167
+ },
168
+ {
169
+ label: '圆角设置:',
170
+ ele: 'xd-site-select-list',
171
+ valueKey: 'contRradius',
172
+ value: data['contRradius'] || '10',
173
+ groupKey:'style',
174
+ placeholder: '请选择内容圆角设置',
175
+ multiple: false,
176
+ className: 'input80',
177
+ handleCustom({action, data}) {
178
+ XdBus.getParentApi('getOptionsSettingList')({setting_id: 'edtix_style_radius'})
179
+ .then(res => {
180
+ data.cb(res.list)
181
+ })
182
+ .catch(error => {
183
+ console.error(error);
184
+ });
185
+ },
186
+ },
187
+ {
188
+ ele: 'title',
189
+ label: '图片样式设置',
190
+ size: 'small',
191
+ groupKey:'style',
192
+ },
193
+ {
194
+ label: '圆角设置:',
195
+ ele: 'xd-site-select-list',
196
+ valueKey: 'imgRradius',
197
+ value: data['imgRradius'] || '10',
198
+ groupKey:'style',
199
+ placeholder: '请选择内容圆角设置',
200
+ multiple: false,
201
+ className: 'input80',
202
+ handleCustom({action, data}) {
203
+ XdBus.getParentApi('getOptionsSettingList')({setting_id: 'edtix_style_radius'})
204
+ .then(res => {
205
+ data.cb(res.list)
206
+ })
207
+ .catch(error => {
208
+ console.error(error);
209
+ });
210
+ },
211
+ },
212
+ ]
213
+ }
@@ -0,0 +1,453 @@
1
+ <template>
2
+ <view class="custom-list" v-if="parentStatus">
3
+ <view v-if="dataList === null">
4
+ <view :class="{productBoxCell2: type_other === 2 }">
5
+ <view
6
+ v-for="item in skeletonCount"
7
+ class="skeleton-wrap"
8
+ :class="{productItemCell2: type_other === 2 }"
9
+ :key="item"
10
+ :style="{
11
+ marginBottom:listItemStyle.outSpacing + 'rpx',
12
+ padding:contMarginComp,
13
+ borderRadius:listItemStyle.contRradius+ 'rpx',
14
+ boxShadow:'0 0 10rpx rgba(0,0,0,0.1)',
15
+ width: (type_code === 'product' && type_other === 2) ? (outItemProduct + 'rpx'): 'auto',
16
+ }"
17
+ >
18
+ <skeleton-product
19
+ :cell="type_other"
20
+ v-if="productConfig !== null && type_code === 'product'"
21
+ :product-config="productConfig"
22
+ :out-spacing="listItemStyle.outSpacing"
23
+ :height="outItemProduct"
24
+ ></skeleton-product>
25
+ <skeleton-shop v-if="type_code === 'shop'" :out-spacing="listItemStyle.outSpacing"></skeleton-shop>
26
+ <skeleton-film v-if="type_code === 'film'" :out-spacing="listItemStyle.outSpacing"></skeleton-film>
27
+ <skeleton-cinema v-if="type_code === 'cinema'"></skeleton-cinema>
28
+ </view>
29
+ </view>
30
+ </view>
31
+ <view class="custom-list-data" v-else>
32
+ <template v-if="type_other !== 2">
33
+ <view
34
+ v-for="item in dataList"
35
+ :key="item.cuid"
36
+ :style="{
37
+ marginBottom:listItemStyle.outSpacing + 'rpx',
38
+ padding:contMarginComp,
39
+ borderRadius:listItemStyle.contRradius+ 'rpx',
40
+ border: listItemStyle.contBorder,
41
+ boxShadow:listItemStyle.contShadow,
42
+ width: (type_code === 'product' && type_other === 2) ? (outItemProduct + 'rpx'): 'auto',
43
+ height: heightRpx,
44
+ backgroundColor: listItemStyle.contBgColor
45
+ }"
46
+ >
47
+ <content-film
48
+ type="hot"
49
+ v-if="type_code === 'film'"
50
+ style="width: 100%; height: 100%"
51
+ :keyword="keyword"
52
+ :item="item"
53
+ :out-spacing="listItemStyle.outSpacing"
54
+ :color="listItemStyle.mainColor"
55
+ :border-radius="listItemStyle.imgRradius"
56
+ @on-film-detail="handleFilmDetail"
57
+ @on-buy="handleBuy"
58
+ ></content-film>
59
+ <content-cinema
60
+ v-if="type_code === 'cinema'"
61
+ style="width: 100%;height: 100%"
62
+ type="list"
63
+ :keyword="keyword"
64
+ :item="item"
65
+ :out-spacing="listItemStyle.outSpacing"
66
+ :color="{SEAT:listItemStyle.mainColor,CODE:listItemStyle.subMainColor,SELL:listItemStyle.successColor}"
67
+ :border-radius="listItemStyle.imgRradius"
68
+ @on-schedule="handleSchedule"
69
+ @on-cashier-detail="handleCashierDetail"
70
+ @on-code-detail="handleCodeDetail"
71
+ ></content-cinema>
72
+ <content-shop
73
+ v-if="type_code === 'shop'"
74
+ style="width: 100%; height: 100%"
75
+ :keyword="keyword"
76
+ :out-spacing="listItemStyle.outSpacing"
77
+ :item="item"
78
+ :color="listItemStyle.mainColor"
79
+ :border-radius="listItemStyle.imgRradius"
80
+ :is-echange="'Y' || listItemStyle.isShowExchange"
81
+ @on-shop-jhd="handleShopJhd"
82
+ @on-shop-detail="handleShopDetail"
83
+ ></content-shop>
84
+ <content-product
85
+ v-if="productConfig !== null && type_code === 'product'"
86
+ style="width: 100%; height: 100%"
87
+ :keyword="keyword"
88
+ :product-config="productConfig"
89
+ :out-spacing="listItemStyle.outSpacing"
90
+ :item="item"
91
+ :brand-color="listItemStyle.brandColor"
92
+ :color="listItemStyle.mainColor"
93
+ :border-radius="listItemStyle.imgRradius"
94
+ :cell="type_other"
95
+ @on-product-detail="handleProductDetail"
96
+ ></content-product>
97
+ </view>
98
+ </template>
99
+ <view v-else class="productBox2">
100
+ <view v-for="(value, listKey) in productTowList" :key="listKey">
101
+ <view
102
+ v-if="productTowList[listKey] !== null"
103
+ v-for="item in productTowList[listKey]"
104
+ :key="item.cuid"
105
+ :style="{
106
+ marginBottom:listItemStyle.outSpacing + 'rpx',
107
+ padding:contMarginComp,
108
+ borderRadius:listItemStyle.contRradius+ 'rpx',
109
+ border: listItemStyle.contBorder,
110
+ boxShadow:listItemStyle.contShadow,
111
+ width: (type_code === 'product' && type_other === 2) ? (outItemProduct + 'rpx'): 'auto',
112
+ height: heightRpx,
113
+ backgroundColor: listItemStyle.contBgColor
114
+ }"
115
+ >
116
+ <content-product
117
+
118
+ v-if="productConfig !== null"
119
+ style="width: 100%; height: 100%"
120
+ :keyword="keyword"
121
+ :product-config="productConfig"
122
+ :out-spacing="listItemStyle.outSpacing"
123
+ :item="item"
124
+ :height="outItemProduct"
125
+ :color="listItemStyle.mainColor"
126
+ :brand-color="listItemStyle.brandColor"
127
+ :border-radius="listItemStyle.imgRradius"
128
+ :cell="type_other"
129
+ @on-product-detail="handleProductDetail"
130
+ ></content-product>
131
+ </view>
132
+ </view>
133
+ </view>
134
+ </view>
135
+ </view>
136
+ </template>
137
+
138
+ <script>
139
+ import {mapState} from "vuex";
140
+ import SkeletonFilm from "./SkeletonFilm.vue";
141
+ import SkeletonCinema from "./SkeletonCinema.vue";
142
+ import SkeletonShop from "./SkeletonShop.vue";
143
+ import SkeletonProduct from "./SkeletonProduct.vue";
144
+ import ContentFilm from "./ContentFilm.vue";
145
+ import ContentCinema from "./ContentCinema.vue";
146
+ import ContentShop from "./ContentShop.vue";
147
+ import ContentProduct from "./ContentProduct.vue";
148
+
149
+ export default {
150
+ name: "CustomList",
151
+ components: {
152
+ ContentProduct,
153
+ SkeletonProduct,
154
+ SkeletonCinema,
155
+ SkeletonFilm,
156
+ SkeletonShop,
157
+ ContentFilm,
158
+ ContentCinema,
159
+ ContentShop,
160
+ },
161
+ props:{
162
+ keyword:{
163
+ type:String,
164
+ default:'',
165
+ },
166
+ listItemStyle:{
167
+ type:Object|null,
168
+ default:null,
169
+ },
170
+ productConfig:{
171
+ type:Object|null,
172
+ default:null,
173
+ },
174
+ tabId:{
175
+ type:String,
176
+ required:true
177
+ }
178
+ },
179
+
180
+ computed:{
181
+ ...mapState({
182
+ stateCity: state => state.cityLocation.city,
183
+ stateLocation: (state) => state.cityLocation.location || {},
184
+ }),
185
+ getParams(){
186
+ let params = {
187
+ search_range: this.search_range,
188
+ page_token: this.page_token,
189
+ page_size: this.page_size,
190
+ };
191
+
192
+ //关键字
193
+ if(this.keyword) params['keyword'] = this.keyword;
194
+
195
+ //设置城市
196
+ if(this.stateCity && this.stateCity.city_code) {
197
+ params['city_code'] = this.stateCity.city_code;
198
+ }
199
+
200
+ //设置经纬度
201
+ if(this.stateLocation &&
202
+ (this.stateLocation.latitude && this.stateLocation.longitude)
203
+ ){
204
+ params['latitude'] = this.stateLocation.latitude;
205
+ params['longitude'] = this.stateLocation.longitude;
206
+ }
207
+
208
+ return params
209
+ },
210
+ contMarginComp(){
211
+ if(this.getParent === null) return 0
212
+ let str = `${this.getParent().checkValue(this.listItemStyle.contMargin.top, 20)}rpx`;
213
+ str = `${str} ${this.getParent().checkValue(this.listItemStyle.contMargin.right, 20)}rpx`;
214
+ str = `${str} ${this.getParent().checkValue(this.listItemStyle.contMargin.bottom, 20)}rpx`;
215
+ str = `${str} ${this.getParent().checkValue(this.listItemStyle.contMargin.left, 20)}rpx`;
216
+ return str
217
+ },
218
+ outItemProduct(){
219
+ if(this.getParent === null) return 0
220
+ //获取每列元素最大宽度
221
+ let num = (750 - 3 * Number(this.listItemStyle.outSpacing))/2;
222
+ num = num - this.getParent().checkValue(this.listItemStyle.contMargin.right, 20) - this.getParent().checkValue(this.listItemStyle.contMargin.left, 20);
223
+ return num - this.listItemStyle.contBorderWidth * 2
224
+ },
225
+ heightRpx(){
226
+ let h = 'auto'
227
+ if(this.type_code === 'film') h = '240rpx'
228
+ if(this.type_code === 'cinema') h = 'auto';
229
+ if(this.type_code === 'shop') h = '200rpx';
230
+ return h;
231
+ }
232
+ },
233
+ data(){
234
+ return {
235
+ /**@type Function|null**/
236
+ getParent:null,
237
+ parentStatus: false,
238
+ skeletonCount: 6,
239
+ hasNoData: false,
240
+
241
+ page_token:'1',
242
+ page_size: 20,
243
+
244
+ //参数
245
+ type_code:'',
246
+ search_range:'',
247
+ type_other:null,
248
+ is_open_city:'N',
249
+
250
+
251
+ //列表数据
252
+ dataList: null,
253
+ timer:null,
254
+ dataConfig: null,
255
+
256
+
257
+ //商品两列功能
258
+ productTowList:{
259
+ left:null,
260
+ right:null,
261
+ },
262
+ }
263
+ },
264
+
265
+ watch:{
266
+ keyword(){
267
+ if(this.timer) {
268
+ clearTimeout(this.timer);
269
+ this.timer = null;
270
+ }
271
+ this.timer = setTimeout(()=>{
272
+ this.onCusReloadList();
273
+ },500)
274
+ },
275
+
276
+ tabId(){
277
+ this.handleClear();
278
+ this.parseTab()
279
+ this.onCusReloadList();
280
+ },
281
+
282
+ stateCity(n, o){
283
+ if(n && JSON.stringify(n) !== JSON.stringify(o)){
284
+ this.onCusReloadList()
285
+ }
286
+ },
287
+ },
288
+
289
+ created() {
290
+ this.getParentMV();
291
+ this.parseTab();
292
+ this.onCusReloadList();
293
+ },
294
+
295
+ methods:{
296
+
297
+ parseTab(){
298
+ let tabs = this.tabId.split('@');
299
+ this.type_code = tabs[1];
300
+ if(this.type_code === 'product'){
301
+ this.type_other = Number(tabs[3]);
302
+ if(this.type_other === 2) this.skeletonCount = 6
303
+ else this.skeletonCount = 6
304
+ }
305
+ else {
306
+ this.skeletonCount = 6;
307
+ this.type_other = null
308
+ }
309
+ this.search_range = tabs[0]
310
+ this.is_open_city = tabs[2];
311
+ },
312
+
313
+ handleClear(){
314
+ this.is_open_city = 'N';
315
+ this.dataConfig = null;
316
+ this.page_token = '1';
317
+ this.dataList = null;
318
+ this.productTowList = {
319
+ left:null,
320
+ right:null,
321
+ }
322
+ },
323
+
324
+ getParentMV(){
325
+ this.$emit('on-parent-vm', (getParent)=>{
326
+ this.getParent = getParent;
327
+ this.parentStatus = true;
328
+ })
329
+ },
330
+
331
+ onCusReachBottom(){
332
+ if(this.dataList === null || !this.page_token) return false;
333
+ this.getList();
334
+ },
335
+
336
+ //重新加载数据
337
+ onCusReloadList(params ={}){
338
+ this.handleClear();
339
+ this.getList();
340
+ },
341
+
342
+ getList(){
343
+ let time = new Date().getTime();
344
+
345
+ //无关键字不搜索
346
+ if(this.keyword === '') {
347
+ return;
348
+ }
349
+ //this.$xdShowLoading({});
350
+ this.$emit('on-list', {
351
+ params:this.getParams,
352
+ cb:(res)=>{
353
+ console.log(new Date().getTime()-time);
354
+ //无数据处理
355
+ if(res === null){
356
+ this.hasNoData = true;
357
+ this.dataList = [];
358
+ this.page_token = '1'
359
+ this.$xdHideLoading();
360
+ return
361
+ }
362
+
363
+ //正常数据处理
364
+ this.dataConfig = res;
365
+
366
+ //整理为统一ID
367
+ res.items = res.items.map((item,index)=>{
368
+ item.cuid = `${this.$xdUniHelper.randomChar(5)}_${item.product_id || item.resource_shop_id || item.cinema_id || item.film_id}`
369
+ return item;
370
+ })
371
+
372
+ //商品模式并且为两列功能
373
+ if(this.type_code === 'product' && this.type_other === 2){
374
+ let right = [], left=[];
375
+ res.items.map((item,index) =>{
376
+ item.testiIndex = index
377
+ if(index%2===0) left.push(item);
378
+ else right.push(item);
379
+ })
380
+ this.productTowList = {
381
+ left:(this.productTowList.left ||[]).concat(left),
382
+ right:(this.productTowList.right ||[]).concat(right)
383
+ };
384
+ }
385
+ this.dataList = (this.dataList||[]).concat(res.items);
386
+ this.page_token = res.next_page_token
387
+ this.hasNoData = false;
388
+ this.$nextTick(()=>{
389
+ setTimeout(()=>{
390
+ this.$xdHideLoading();
391
+ },300)
392
+ })
393
+ }
394
+ })
395
+ },
396
+
397
+ //影片
398
+ handleFilmDetail(film){
399
+ this.getParent().handleFilmDetail(film, this.dataConfig)
400
+ },
401
+ handleBuy(film){
402
+ this.getParent().handleBuy(film, this.dataConfig)
403
+ },
404
+
405
+ //影院
406
+ handleSchedule(cinema){
407
+ this.getParent().handleSchedule(cinema, this.dataConfig)
408
+ },
409
+ handleCashierDetail(cinema){
410
+ this.getParent().handleCashierDetail(cinema, this.dataConfig)
411
+ },
412
+ handleCodeDetail(cinema){
413
+ this.getParent().handleCodeDetail(cinema, this.dataConfig)
414
+ },
415
+
416
+ //门店
417
+ handleShopJhd(shop){
418
+ this.getParent().handleShopJhd(shop, this.dataConfig)
419
+ },
420
+ handleShopDetail(shop){
421
+ this.getParent().handleShopDetail(shop, this.dataConfig)
422
+ },
423
+
424
+ //商品
425
+ handleProductDetail(product){
426
+ this.getParent().handleProductDetail(product, this.dataConfig)
427
+ },
428
+
429
+ }
430
+ }
431
+ </script>
432
+
433
+
434
+
435
+ <style scoped lang="less">
436
+ .productBoxCell2 {
437
+ display: flex;
438
+ justify-content: space-between;
439
+ align-items: center;
440
+ flex-flow: wrap;
441
+ }
442
+ .productItemCell2 {
443
+
444
+ }
445
+
446
+ .productBox2 {
447
+ display: flex;
448
+ justify-content: space-between;
449
+ align-items: flex-start;
450
+ flex-flow: wrap;
451
+ }
452
+
453
+ </style>