jufubao-base 1.0.169-beta2 → 1.0.169-beta21

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 (42) hide show
  1. package/package.json +1 -1
  2. package/src/components/JfbBaseHeader/JfbBaseHeader.vue +2 -2
  3. package/src/components/JfbBaseLogin/Attr.js +54 -16
  4. package/src/components/JfbBaseLogin/JfbBaseLogin.vue +3 -1
  5. package/src/components/JfbBaseMapSearch/MapSearchMp.vue +1 -1
  6. package/src/components/JfbBaseNotice/JfbBaseNotice.vue +2 -2
  7. package/src/components/JfbBaseOrderDetail/Api.js +12 -7
  8. package/src/components/JfbBaseOrderDetail/Attr.js +28 -14
  9. package/src/components/JfbBaseOrderDetail/JfbBaseOrderDetail.vue +68 -18
  10. package/src/components/JfbBaseOrderDetail/Mock.js +3 -1
  11. package/src/components/JfbBaseTfkCardBind/Api.js +49 -30
  12. package/src/components/JfbBaseTfkCardBind/Attr.js +139 -15
  13. package/src/components/JfbBaseTfkCardBind/JfbBaseTfkCardBind.vue +234 -20
  14. package/src/components/JfbBaseTfkCardBind/Mock.js +19 -9
  15. package/src/components/JfbBaseTfkCardDetail/Api.js +11 -0
  16. package/src/components/JfbBaseTfkCardDetail/Attr.js +158 -7
  17. package/src/components/JfbBaseTfkCardDetail/JfbBaseTfkCardDetail.vue +159 -17
  18. package/src/components/JfbBaseTfkCardLogin/Attr.js +490 -4
  19. package/src/components/JfbBaseTfkCardLogin/JfbBaseTfkCardLogin.vue +394 -107
  20. package/src/components/JfbBaseTfkCardLogin/Mock.js +6 -536
  21. package/src/components/JfbBaseTfkCardLogin/XdCouponItem.vue +75 -19
  22. package/src/components/JfbBaseTfkCardLogin/XdNotice.vue +550 -0
  23. package/src/components/JfbBaseTfkSearch/AllList.vue +337 -0
  24. package/src/components/JfbBaseTfkSearch/Api.js +11 -42
  25. package/src/components/JfbBaseTfkSearch/Attr.js +344 -32
  26. package/src/components/JfbBaseTfkSearch/ContentCinema.vue +157 -0
  27. package/src/components/JfbBaseTfkSearch/ContentFilm.vue +218 -0
  28. package/src/components/JfbBaseTfkSearch/ContentProduct.vue +317 -0
  29. package/src/components/JfbBaseTfkSearch/ContentShop.vue +186 -0
  30. package/src/components/JfbBaseTfkSearch/CusAttr.js +213 -0
  31. package/src/components/JfbBaseTfkSearch/CustomList.vue +453 -0
  32. package/src/components/JfbBaseTfkSearch/JfbBaseTfkSearch.vue +286 -35
  33. package/src/components/JfbBaseTfkSearch/Mock.js +242 -11
  34. package/src/components/JfbBaseTfkSearch/SkeletonCinema.vue +45 -0
  35. package/src/components/JfbBaseTfkSearch/SkeletonFilm.vue +109 -0
  36. package/src/components/JfbBaseTfkSearch/SkeletonProduct.vue +246 -0
  37. package/src/components/JfbBaseTfkSearch/SkeletonShop.vue +81 -0
  38. package/src/components/JfbBaseTfkSearch/handleKeyword.js +24 -0
  39. package/src/components/JfbBaseTfkSearch/listMixins.js +187 -0
  40. package/src/mixins/colorCardMixins.js +71 -9
  41. package/src/mixins/componentsMixins.js +376 -23
  42. package/src/mixins/posterMixins.js +122 -0
@@ -14,86 +14,325 @@
14
14
  </view>
15
15
  <!-- #endif -->
16
16
  <view class="jfb-base-tfk-search__body">
17
- <view>测试插件( {{containerId}} )</view>
17
+ <view class="x-line"></view>
18
+ <view :class="{hidden: keyword}">
19
+ <xd-search-history ref="searchHistory"
20
+ :saveKey="containerId+'_search_history'"
21
+ :saveLength="10"
22
+ @onClick="handleToSearch"></xd-search-history>
23
+ </view>
24
+ <view v-if="keyword">
25
+ <view class="menu_wrap" :style="menuWrapBoxStyle">
26
+ <view class="menu_list" :style="menuBoxStyle">
27
+ <view class="menu_item"
28
+ v-for="(item, i) in showMenuList" :key="item.value"
29
+ @click="handleSwitchMenu(item)"
30
+ >
31
+ <view class="menu_inner"
32
+ :style="[
33
+ menuItemBoxStyle,
34
+ item.value === tabId ? menuItemActiveStyle : menuItemStyle,
35
+ {
36
+ marginRight: i === showMenuList.length - 1 ? '0' : menuItemMargin + 'rpx',
37
+ }
38
+ ]"
39
+ >{{ item.label }}</view>
40
+ </view>
41
+ </view>
42
+ </view>
43
+ <view v-if="!isPreview" :style="{height: menuHeight}"></view>
44
+ <view class="tfk-search" :style="{padding: outSpacing + 'rpx'}">
45
+ <all-list v-if="tabId === 'all'"
46
+ :keyword="keyword"
47
+ :list-item-style="listItemStyle"
48
+ :product-config="productConfig"
49
+ :all-style="allStyle"
50
+ @on-parent-vm="handleParentVm"
51
+ @on-list="handleList"
52
+ @on-switch="handleSwitchMenu"
53
+ ></all-list>
54
+ <custom-list
55
+ :tab-id="tabId"
56
+ :keyword="keyword"
57
+ :list-item-style="listItemStyle"
58
+ :product-config="productConfig"
59
+ ref="customList"
60
+ @on-parent-vm="handleParentVm"
61
+ @on-list="handleList"
62
+ ></custom-list>
63
+ </view>
64
+ </view>
18
65
  </view>
19
66
  </view>
20
67
  </template>
21
68
 
22
69
  <script>
70
+ import XdSearchHistory from "@/components/XdSearchHistory/XdSearchHistory";
23
71
  import XdFontIcon from "@/components/XdFontIcon/XdFontIcon";
24
72
  import { jfbRootExec } from "@/utils/xd.event";
25
73
  import JfbBaseTfkSearchMixin from "./JfbBaseTfkSearchMixin";
26
74
  import { getContainerPropsValue } from "@/utils/xd.base";
27
75
  import componentsMixins from "@/mixins/componentsMixins";
28
76
  import extsMixins from "@/mixins/extsMixins";
77
+ import listMixins from "./listMixins";
78
+ import CustomList from "./CustomList.vue";
79
+ import AllList from "./AllList.vue";
80
+
81
+ class EmitParent {
82
+ constructor(options) {
83
+ this.options = options;
84
+ }
85
+ }
86
+
29
87
  export default {
30
88
  name: "JfbBaseTfkSearch",
31
89
  components: {
32
- XdFontIcon
90
+ CustomList,
91
+ XdFontIcon,
92
+ AllList,
93
+ XdSearchHistory
33
94
  },
34
95
  mixins: [
35
- componentsMixins, extsMixins, JfbBaseTfkSearchMixin
96
+ componentsMixins, extsMixins, JfbBaseTfkSearchMixin,listMixins
36
97
  ],
37
98
  data() {
38
99
  return {
100
+ hideMask: true,
101
+ tabId: 'all', //cinema/film/shop/product
102
+ keyword: '',
103
+ options:{},
104
+ menuList: [],
105
+ //公共样式
106
+ outSpacing:20,
107
+ isPreview: false,
108
+
109
+ //面板
110
+ menuMargin: {},
111
+ menuPadding: {},
112
+ menuBgColor: {},
113
+ menuItemPadding: {},
114
+ menuTabColor: {},
115
+ menuBorderWidth: 1,
116
+ menuItemMargin: 40,
117
+ searchScope: [],
118
+ allListBgColor: "",
119
+ allModulePadding: {},
120
+ allModuleRadius: 0,
121
+ allModuleTitleBgColor: {},
122
+ allModuleTitlePadding: {},
123
+ allModuleMoreStyle: "",
124
+ allModuleMargin: 20,
125
+ allModuleTitleStyle: "",
126
+ allModuleItemContBorder: {},
127
+ allModuleItemContMargin: 20,
128
+ allModuleItemContShadow: {},
129
+ allModuleItemContPadding: {},
130
+ allModuleItemContRadius: 16,
131
+ allModuleItemContBgColor: "#FFFFFF",
132
+ emitParent:{},
133
+ }
134
+ },
135
+ computed: {
136
+ showMenuList(){
137
+ return [{label: "全部", value: "all"}, ...this.menuList]
138
+ },
139
+ menuWrapBoxStyle(){
140
+ let padding = `${this.checkValue(this.menuMargin.top, 20)}rpx`;
141
+ padding = `${padding} ${this.checkValue(this.menuMargin.right, 20)}rpx`;
142
+ padding = `${padding} ${this.checkValue(this.menuMargin.bottom, 20)}rpx`;
143
+ padding = `${padding} ${this.checkValue(this.menuMargin.left, 20)}rpx`;
144
+
145
+ let style = {padding};
146
+ if(!this.isPreview){
147
+ style['position'] = 'fixed';
148
+ style['top'] = `${this.layoutInfo.top}rpx`;
149
+ }
150
+ return this.styleObjectToString(style)
151
+ },
152
+ menuBoxStyle(){
153
+ let padding = `${this.checkValue(this.menuPadding.top, 20)}rpx`;
154
+ padding = `${padding} ${this.checkValue(this.menuPadding.right, 20)}rpx`;
155
+ padding = `${padding} ${this.checkValue(this.menuPadding.bottom, 20)}rpx`;
156
+ padding = `${padding} ${this.checkValue(this.menuPadding.left, 20)}rpx`;
157
+ return this.styleObjectToString({
158
+ padding: padding,
159
+ backgroundColor: this.menuBgColor,
160
+ })
161
+ },
162
+ menuItemBoxStyle(){
163
+ let padding = `${this.checkValue(this.menuItemPadding.top, 20)}rpx`;
164
+ padding = `${padding} ${this.checkValue(this.menuItemPadding.right, 20)}rpx`;
165
+ padding = `${padding} ${this.checkValue(this.menuItemPadding.bottom, 20)}rpx`;
166
+ padding = `${padding} ${this.checkValue(this.menuItemPadding.left, 20)}rpx`;
167
+ return this.styleObjectToString({
168
+ padding
169
+ })
170
+ },
171
+ menuItemStyle(){
172
+ let styleObj = {
173
+ color: this.menuTabColor['color'] || '#333',
174
+ background: this.menuTabColor['bgColor'] || 'transparent',
175
+ fontSize: this.menuTabColor['fontSize'] || '30rpx',
176
+ fontWeight: this.menuTabColor['fontWeight'] || 'normal',
177
+ borderWidth: this.menuBorderWidth + 'px',
178
+ }
39
179
 
40
- //todo
180
+ return this.styleObjectToString(styleObj)
181
+ },
182
+ menuHeight(){
183
+ const { menuItemPadding, menuPadding, menuMargin } = this;
184
+ let height = this.checkValue(menuMargin.top, 20) + this.checkValue(menuMargin.bottom, 20) +
185
+ this.checkValue(menuPadding.top, 20) + this.checkValue(menuPadding.bottom, 20) +
186
+ this.checkValue(menuItemPadding.top, 20) + this.checkValue(menuItemPadding.bottom, 20);
187
+ return (height + 40) + 'rpx';
188
+ },
189
+ menuItemActiveStyle(){
190
+ let defaultTextColor = this.mainColor;
191
+ let styleActiveObj = {
192
+ color: this.menuTabColor['actColor'] || defaultTextColor,
193
+ background: this.menuTabColor['actBgColor'] || 'transparent',
194
+ fontSize: this.menuTabColor['actFontSize'] || '30rpx',
195
+ fontWeight: this.menuTabColor['actFontWeight'] || 'normal',
196
+ borderBottom: `${this.menuBorderWidth}px solid ${this.menuTabColor['actColor'] || defaultTextColor}`
197
+ }
198
+ return this.styleObjectToString(styleActiveObj)
199
+ },
200
+ allStyle(){
201
+ return {
202
+ allListBgColor: this.allListBgColor,
203
+ allModulePadding: this.allModulePadding,
204
+ allModuleRadius: this.allModuleRadius,
205
+ allModuleTitleBgColor: this.allModuleTitleBgColor,
206
+ allModuleTitlePadding: this.allModuleTitlePadding,
207
+ allModuleMoreStyle: this.allModuleMoreStyle,
208
+ allModuleMargin: this.allModuleMargin,
209
+ allModuleTitleStyle: this.allModuleTitleStyle,
210
+ allModuleItemContBorder: this.allModuleItemContBorder,
211
+ allModuleItemContMargin: this.allModuleItemContMargin,
212
+ allModuleItemContShadow: this.allModuleItemContShadow,
213
+ allModuleItemContPadding: this.allModuleItemContPadding,
214
+ allModuleItemContRadius: this.allModuleItemContRadius,
215
+ allModuleItemContBgColor: this.allModuleItemContBgColor
216
+ }
41
217
  }
42
218
  },
43
219
  watch: {
44
220
  container(value, oldValue) {
45
221
  if (JSON.stringify(value) === JSON.stringify(oldValue)) return;
46
- if (this.$configProject['isPreview']) this.init(value)
222
+ if (this.$configProject['isPreview']){
223
+ this.init(value);
224
+ this.cusInit(value)
225
+ }
47
226
  },
48
227
  },
49
228
  created() {
229
+ this.emitParent = new EmitParent({
230
+ getParent: ()=>{
231
+ return this;
232
+ }
233
+ })
50
234
  this.init(this.container);
51
-
52
- //todo
235
+ this.cusInit(this.container);
53
236
  },
54
- methods: {
55
- onJfbLoad(options) {
56
237
 
57
- // jfbRootExec('baiduUserLogin', {
58
-
59
- // vm: this,// data: {
60
-
61
- // account: 'gaoshiyong',// password: '123456789',// type: 3,// ...options
238
+ methods: {
239
+ /**
240
+ * @description 获取数据列表
241
+ * @param params
242
+ * @param cb {Function}
243
+ */
244
+ handleList({params, cb}){
245
+ let data = {...params};
246
+ if(this.tabId === 'all'){
247
+ data['search_range'] = this.searchScope.map(item => item.value.split("@")[0]).join(',');
248
+ }
62
249
 
63
- // }
250
+ jfbRootExec("getTfkSearchList", {
251
+ vm: this,
252
+ data: data
253
+ }).then(res => {
254
+ if(this.tabId === 'all'){
255
+ if(!this.$configProject['isPreview']){
256
+ res = this.filtersResData(res);
257
+ this.menuList = res.tabs;
258
+ }
259
+ cb(res.list)
260
+ }else{
261
+ if(this.isPreview){
262
+ return cb(res.list.find(item => item.type === this.tabId.split("@")[1]))
263
+ }
264
+ if(res.list.length > 0) {
265
+ cb(res.list[0])
266
+ }
267
+ else cb(null)
268
+ }
269
+ }).catch((e)=>{
270
+ cb(null);
271
+ })
272
+ },
64
273
 
65
- // }).then().catch()
274
+ onJfbLoad(options) {
275
+ this.options = options;
66
276
  },
67
277
  /**
68
278
  * @description 监听事件变化
69
279
  * @param container {object} 业务组件对象自己
70
280
  */
71
281
  init(container) {
282
+ this.outSpacing = getContainerPropsValue(container, 'content.outSpacing', '20');
283
+ this.menuMargin = getContainerPropsValue(container, 'content.menuMargin', {});
284
+ this.menuPadding = getContainerPropsValue(container, 'content.menuPadding', {});
285
+ this.menuBgColor = getContainerPropsValue(container, 'content.menuBgColor', '');
286
+ this.menuItemPadding = getContainerPropsValue(container, 'content.menuItemPadding', {});
287
+ this.menuTabColor = getContainerPropsValue(container, 'content.menuTabColor', {});
288
+ this.menuBorderWidth = getContainerPropsValue(container, 'content.menuBorderWidth', 1);
289
+ this.menuItemMargin = getContainerPropsValue(container, 'content.menuItemMargin', 40);
290
+ this.searchScope = getContainerPropsValue(container, 'content.searchScope', []);
291
+ this.allListBgColor = getContainerPropsValue(container, 'content.allListBgColor', '');
292
+ this.allModulePadding = getContainerPropsValue(container, 'content.allModulePadding', {});
293
+ this.allModuleRadius = getContainerPropsValue(container, 'content.allModuleRadius', 0);
294
+ this.allModuleTitleBgColor = getContainerPropsValue(container, 'content.allModuleTitleBgColor', '');
295
+ this.allModuleTitlePadding = getContainerPropsValue(container, 'content.allModuleTitlePadding', {});
296
+ this.allModuleMoreStyle = getContainerPropsValue(container, 'content.allModuleMoreStyle', "");
297
+ this.allModuleMargin = getContainerPropsValue(container, 'content.allModuleMargin', 20);
298
+ this.allModuleTitleStyle = getContainerPropsValue(container, 'content.allModuleTitleStyle', "");
299
+ this.allModuleItemContBorder = getContainerPropsValue(container, 'content.allModuleItemContBorder', {});
300
+ this.allModuleItemContMargin = getContainerPropsValue(container, 'content.allModuleItemContMargin', 20);
301
+ this.allModuleItemContShadow = getContainerPropsValue(container, 'content.allModuleItemContShadow', {});
302
+ this.allModuleItemContPadding = getContainerPropsValue(container, 'content.allModuleItemContPadding', {});
303
+ this.allModuleItemContRadius = getContainerPropsValue(container, 'content.allModuleItemContRadius', 16);
304
+ this.allModuleItemContBgColor = getContainerPropsValue(container, 'content.allModuleItemContBgColor', '#FFFFFF');
72
305
 
73
- //this.bgcolor = getContainerPropsValue(container, 'content.bgcolor', '#fff');
74
-
75
- //this.height = getContainerPropsValue(container, 'content.height', 10);
76
- },
77
- onJfbScroll(options) {
78
- console.log('event.onJfbScroll', options)
306
+ if(this.$configProject['isPreview']){
307
+ this.menuList = this.searchScope;
308
+ this.keyword = "搜索关键字";
309
+ this.isPreview = true;
310
+ }
79
311
  },
80
- onJfbReachBottom(options) {
81
- console.log('event.onJfbReachBottom', options)
312
+ handleSwitchMenu(item){
313
+ this.tabId = item.value;
82
314
  },
83
- onJfbShow(options) {
84
- console.log('event.onJfbShow', options)
315
+ handleToSearch(item){
316
+ this.keyword = item;
85
317
  },
86
- onJfbHide(options) {
87
- console.log('event.onJfbHide', options)
318
+ onJfbScroll(options) {
319
+ // console.log('event.onJfbScroll', options)
88
320
  },
321
+
89
322
  onJfbBack(options) {
90
- console.log('event.onJfbBack', options)
323
+ this.$xdUniHelper.navigateBack()
91
324
  },
92
- onJfbUpdate(...data) {
93
- console.log('event.onJfbUpdate', data)
94
- },
95
- onJfbCustomEvent(options) {
96
- console.log('event.onJfbReachBottom', options)
325
+
326
+ onJfbCustomEvent({action, data}) {
327
+ if(action === 'baseHeader@search'){
328
+ uni.pageScrollTo({
329
+ scrollTop: 0,
330
+ duration: 0
331
+ });
332
+ this.keyword = data;
333
+ this.tabId = 'all';
334
+ this.$refs.searchHistory.addHistory(data);
335
+ }
97
336
  },
98
337
  }
99
338
  }
@@ -105,7 +344,19 @@
105
344
 
106
345
  .jfb-base-tfk-search {
107
346
  &__body{
108
-
347
+ .hidden{
348
+ display: none;
349
+ }
350
+ .menu_wrap{
351
+ box-sizing: border-box;
352
+ width: 100%;
353
+ left: 0;
354
+ z-index: 999;
355
+ }
356
+ .menu_list{
357
+ display: flex;
358
+ box-sizing: border-box;
359
+ }
109
360
  }
110
361
  }
111
362
  </style>
@@ -1,13 +1,244 @@
1
- 'use strict';
1
+ "use strict";
2
2
 
3
3
  module.exports = {
4
-
5
- getTfkByIdFilmSquate:{},
6
-
7
- updateTfkFilmPaiqiDate:{},
8
-
9
- removeTfkFilmAddress:{},
10
-
11
- addTfkFilmcart:{},
12
-
13
- }
4
+ getTfkSearchList: {
5
+ list: [
6
+ {
7
+ tab: "1@product@Y@2",
8
+ type: "product",
9
+ name: "蛋糕",
10
+ detail_redirect_data:
11
+ '{"dir":"market","host":"sandbox-website-05.jufubao.cn","path":"\\/main\\/mall\\/detail","appType":"h5","site_id":"17928cc37788be02","site_url":"https:\\/\\/sandbox-website-05.jufubao.cn\\/market\\/main\\/mall\\/detail","frontPath":"\\/market\\/main\\/mall\\/detail","fixed_business_code":""}',
12
+ detail1_redirect_data: "",
13
+ more_redirect_data: "",
14
+ sort: 3,
15
+ setting_id: 1,
16
+ next_page_token: 'a:2:{i:0;d:704.99896;i:1;s:8:"60030078";}',
17
+ items: [
18
+ {
19
+ brand_id: 100003,
20
+ brand_name: "品牌jls0519",
21
+ list_title: "3",
22
+ market_price: 2000,
23
+ market_tags: ['flashsale','hot','new', 'rec'],
24
+ product_id: 60030143,
25
+ product_name: "仅快递实物商品(北京廊坊支持配送)",
26
+ product_type: "good",
27
+ promo_price: 0,
28
+ sale_num: 8,
29
+ sale_price: 3000,
30
+ status: "ok",
31
+ thumb: "/uploads/20231215/b2ce0235129aa592044f96343f25c338.jpeg",
32
+ },
33
+ {
34
+ brand_id: 30000,
35
+ brand_name: "其他",
36
+ list_title: "清代戏剧文化史论/北京大学明清研究丛书",
37
+ market_price: 2600,
38
+ market_tags: ['flashsale','hot','new', 'rec'],
39
+ product_id: 60029756,
40
+ product_name: "清代戏剧文化史论/北京大学明清研究丛书",
41
+ product_type: "good",
42
+ promo_price: 0,
43
+ sale_num: 0,
44
+ sale_price: 2195,
45
+ status: "ok",
46
+ thumb:
47
+ "https://img1.winxuancdn.com/1305/10251305_9.jpg?1530683968642"
48
+ },
49
+ {
50
+ brand_id: 30000,
51
+ brand_name: "其他",
52
+ list_title: "亚洲的崛起(傅骊元文集)/北京大学经济学院教授文库",
53
+ market_price: 5000,
54
+ market_tags: [],
55
+ product_id: 60030080,
56
+ product_name: "亚洲的崛起(傅骊元文集)/北京大学经济学院教授文库",
57
+ product_type: "good",
58
+ promo_price: 0,
59
+ sale_num: 0,
60
+ sale_price: 4219,
61
+ status: "ok",
62
+ thumb:
63
+ "https://img2.winxuancdn.com/9564/10309564_9.jpg?1530754178039"
64
+ },
65
+ {
66
+ brand_id: 30000,
67
+ brand_name: "其他",
68
+ list_title:
69
+ "保险.社会保障与经济改革(孙祁祥文集)/北京大学经济学院教授文库",
70
+ market_price: 5200,
71
+ market_tags: [],
72
+ product_id: 60030078,
73
+ product_name:
74
+ "保险.社会保障与经济改革(孙祁祥文集)/北京大学经济学院教授文库",
75
+ product_type: "good",
76
+ promo_price: 0,
77
+ sale_num: 0,
78
+ sale_price: 4388,
79
+ status: "ok",
80
+ thumb:
81
+ "https://img3.winxuancdn.com/9416/10309416_9.jpg?1530754178039"
82
+ }
83
+ ]
84
+ },
85
+ {
86
+ tab: "5@shop@N@1",
87
+ type: "shop",
88
+ name: "门店",
89
+ detail_redirect_data:
90
+ '{"dir":"market","host":"sandbox-website-05.jufubao.cn","path":"\\/main\\/cake\\/storedetail","appType":"h5","site_id":"17928cc37788be02","site_url":"https:\\/\\/sandbox-website-05.jufubao.cn\\/market\\/main\\/cake\\/storedetail","frontPath":"\\/market\\/main\\/cake\\/storedetail","fixed_business_code":""}',
91
+ detail1_redirect_data:
92
+ '{"dir":"market","host":"sandbox-website-05.jufubao.cn","path":"\\/main\\/cashier\\/index","appType":"h5","site_id":"17928cc37788be02","site_url":"https:\\/\\/sandbox-website-05.jufubao.cn\\/market\\/main\\/cashier\\/index","frontPath":"\\/market\\/main\\/cashier\\/index","fixed_business_code":""}',
93
+ more_redirect_data: "",
94
+ sort: 4,
95
+ setting_id: 5,
96
+ next_page_token: "a:2:{i:0;d:20670.991802209974;i:1;d:0;}",
97
+ items: [
98
+ {
99
+ brand_id: 20003,
100
+ brand_name: "幸福西饼",
101
+ brand_type: "MA",
102
+ business_status: "1",
103
+ consume_mode: ["STOD", "CODE", "SELL", "SELF"],
104
+ consume_mode_name: "",
105
+ distance: "21km",
106
+ is_support_jhd: true,
107
+ address: "河北廊坊市三河市燕郊镇河北廊坊燕郊润旭",
108
+ province_name: "",
109
+ city_name: "",
110
+ area_name: "",
111
+ street_name: "",
112
+ phone: "18843854566",
113
+ resource_shop_id:
114
+ "eyJyZXNvdXJjZV9zaG9wX2lkIjozMTg1NDY4LCJzaG9wX2lkIjo1MjY0OH0",
115
+ resource_shop_name: "福司令渠道门店",
116
+ shop_icon:
117
+ "https://jfbcake.oss-cn-beijing.aliyuncs.com/uploads/20220629/dda58a5983eeae3cfdea8bccc7cea714.jpg",
118
+ shop_id: 52648,
119
+ shop_tags: [],
120
+ stars: 0,
121
+ time_slot_name: "08:00-21:00",
122
+ params: {
123
+ version: 2
124
+ }
125
+ },
126
+ {
127
+ brand_id: 20004,
128
+ brand_name: "幸福西饼",
129
+ brand_type: "MA",
130
+ business_status: "1",
131
+ consume_mode: ["STOD", "CODE", "SELL", "SELF"],
132
+ consume_mode_name: "",
133
+ distance: "21km",
134
+ is_support_jhd: false,
135
+ address: "河北廊坊市三河市燕郊镇河北廊坊燕郊润旭",
136
+ province_name: "",
137
+ city_name: "",
138
+ area_name: "",
139
+ street_name: "",
140
+ phone: "18843854566",
141
+ resource_shop_id:
142
+ "eyJyZXNvdXJjZV9zaG9wX2lkIjozMTg1NDY4LCJzaG9wX2lkqewqweH0",
143
+ resource_shop_name: "福司令渠道门店",
144
+ shop_icon:
145
+ "https://jfbcake.oss-cn-beijing.aliyuncs.com/uploads/20220629/dda58a5983eeae3cfdea8bccc7cea714.jpg",
146
+ shop_id: 526428,
147
+ shop_tags: [],
148
+ stars: 0,
149
+ time_slot_name: "08:00-21:00",
150
+ params: {
151
+ version: 2
152
+ }
153
+ }
154
+ ]
155
+ },
156
+ {
157
+ tab: "10@cinema@Y@1",
158
+ type: "cinema",
159
+ name: "影院",
160
+ detail_redirect_data:
161
+ '{"dir":"apply06","host":"sandbox-website-05.jufubao.cn","path":"\\/main\\/movie\\/suhedule","appType":"h5","site_id":"17928cc37788be02","site_url":"https:\\/\\/sandbox-website-05.jufubao.cn\\/apply06\\/main\\/movie\\/suhedule","frontPath":"\\/apply06\\/main\\/movie\\/suhedule","fixed_business_code":""}',
162
+ detail1_redirect_data:
163
+ '{"dir":"apply06","host":"sandbox-website-05.jufubao.cn","path":"\\/main\\/movie\\/cdetailnew","appType":"h5","site_id":"17928cc37788be02","site_url":"https:\\/\\/sandbox-website-05.jufubao.cn\\/apply06\\/main\\/movie\\/cdetailnew","frontPath":"\\/apply06\\/main\\/movie\\/cdetailnew","fixed_business_code":""}',
164
+ more_redirect_data: "",
165
+ sort: 1,
166
+ setting_id: 10,
167
+ next_page_token: 1,
168
+ items: [
169
+ {
170
+ address: "河北省廊坊市三河市燕郊经济技术开发区汉王路34号",
171
+ brand_id: 16,
172
+ brand_name: "万达院线jls",
173
+ cinema_id: 8000121,
174
+ cinema_name: "电影门店jls-20231204(新建)北京",
175
+ cinema_type: ["SELL", "CODE"],
176
+ cinema_type_name: ["线下核销", "电子码"],
177
+ distance: "21.9km",
178
+ is_open: "Y",
179
+ shop_icon:
180
+ "https://jfbcake.oss-cn-beijing.aliyuncs.com/uploads/20221018/5c1f49a47055a452ac6c5a3efd9d5174.jpg"
181
+ },
182
+ {
183
+ address: "燕高路西侧实验小学南侧",
184
+ brand_id: 16,
185
+ brand_name: "万达院线jls",
186
+ cinema_id: 7,
187
+ cinema_name:
188
+ "聚福宝测试影院聚福宝测试影院聚福宝测试影院聚福宝测试影院",
189
+ cinema_type: ["SEAT", "SELL"],
190
+ cinema_type_name: ["在线选座", "线下核销"],
191
+ distance: "20.8km",
192
+ is_open: "Y",
193
+ shop_icon:
194
+ "https://jfbcake.oss-cn-beijing.aliyuncs.com/uploads/20221018/5c1f49a47055a452ac6c5a3efd9d5174.jpg"
195
+ }
196
+ ]
197
+ },
198
+ {
199
+ tab: "11@film@Y@1",
200
+ type: "film",
201
+ name: "影片",
202
+ detail_redirect_data:
203
+ '{"dir":"market","host":"sandbox-website-05.jufubao.cn","path":"\\/main\\/movie\\/choose","appType":"h5","site_id":"17928cc37788be02","site_url":"https:\\/\\/sandbox-website-05.jufubao.cn\\/market\\/main\\/movie\\/choose","frontPath":"\\/market\\/main\\/movie\\/choose","fixed_business_code":""}',
204
+ detail1_redirect_data:
205
+ '{"dir":"market","host":"sandbox-website-05.jufubao.cn","path":"\\/main\\/movie\\/detail","appType":"h5","site_id":"17928cc37788be02","site_url":"https:\\/\\/sandbox-website-05.jufubao.cn\\/market\\/main\\/movie\\/detail","frontPath":"\\/market\\/main\\/movie\\/detail","fixed_business_code":""}',
206
+ more_redirect_data: "",
207
+ sort: 2,
208
+ setting_id: 11,
209
+ next_page_token: 1,
210
+ items: [
211
+ {
212
+ film_id: 130,
213
+ director: "",
214
+ is_can_buy: false,
215
+ language: "汉语普通话",
216
+ leading_role:
217
+ "费翔,李雪健,黄渤,于适,陈牧驰,娜然,此沙,武亚凡,夏雨,袁泉,王洛勇,侯雯元,黄曦彦,李昀锐,杨玏,陈坤",
218
+ open_time: 1689782400,
219
+ poster:
220
+ "https://gw.alicdn.com/tfscom/i1/O1CN01w8TjZl1xzSq3CothJ_!!6000000006514-0-alipicbeacon.jpg_320x320.jpg",
221
+ remark: "9.1分",
222
+ show_name: "封神第一部",
223
+ type: "剧情,奇幻"
224
+ },
225
+ {
226
+ film_id: 131,
227
+ director: "",
228
+ is_can_buy: false,
229
+ language: "汉语普通话",
230
+ leading_role:
231
+ "费翔,李雪健,黄渤,于适,陈牧驰,娜然,此沙,武亚凡,夏雨,袁泉,王洛勇,侯雯元,黄曦彦,李昀锐,杨玏,陈坤",
232
+ open_time: 1689782400,
233
+ poster:
234
+ "https://gw.alicdn.com/tfscom/i1/O1CN01w8TjZl1xzSq3CothJ_!!6000000006514-0-alipicbeacon.jpg_320x320.jpg",
235
+ remark: "9.1分",
236
+ show_name: "封神第二部",
237
+ type: "剧情,奇幻"
238
+ }
239
+ ]
240
+ }
241
+ ],
242
+ request_id: "f6c04f1d2eb3385b"
243
+ }
244
+ };
@@ -0,0 +1,45 @@
1
+ <template>
2
+ <view class="skeleton-wrap-item">
3
+ <view class="title skeleton-item"></view>
4
+ <view class="address skeleton-item"></view>
5
+ <view class="bottom">
6
+ <view class="local skeleton-item"></view>
7
+ <view class="btn skeleton-item"></view>
8
+ </view>
9
+ </view>
10
+ </template>
11
+
12
+ <script>
13
+ export default {
14
+ name: "SkeletonCinema"
15
+ }
16
+ </script>
17
+
18
+ <style scoped lang="less">
19
+ .skeleton-wrap-item {
20
+ height: 200rpx;
21
+ display: block;
22
+
23
+ & > .title {
24
+ .skeleton-item(100%, 60rpx);
25
+ margin-bottom: 20rpx;
26
+ }
27
+ & > .address {
28
+ .skeleton-item(100%, 40rpx);
29
+ margin-bottom: 20rpx;
30
+ }
31
+ & > .bottom {
32
+ display: flex;
33
+ justify-content: space-between;
34
+ align-items: center;
35
+
36
+ & > .local {
37
+ .skeleton-item(120rpx, 30rpx);
38
+ }
39
+ & > .btn {
40
+ .skeleton-item(150rpx, 60rpx);
41
+ }
42
+ }
43
+ }
44
+ </style>
45
+