jufubao-base 1.0.169-beta9 → 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 (29) hide show
  1. package/package.json +1 -1
  2. package/src/components/JfbBaseHeader/JfbBaseHeader.vue +2 -2
  3. package/src/components/JfbBaseLogin/Attr.js +10 -0
  4. package/src/components/JfbBaseLogin/JfbBaseLogin.vue +6 -1
  5. package/src/components/JfbBaseNotice/JfbBaseNotice.vue +2 -2
  6. package/src/components/JfbBaseTfkCardBind/Attr.js +80 -7
  7. package/src/components/JfbBaseTfkCardBind/JfbBaseTfkCardBind.vue +112 -13
  8. package/src/components/JfbBaseTfkCardDetail/Attr.js +49 -1
  9. package/src/components/JfbBaseTfkCardDetail/JfbBaseTfkCardDetail.vue +18 -9
  10. package/src/components/JfbBaseTfkCardLogin/Attr.js +223 -13
  11. package/src/components/JfbBaseTfkCardLogin/JfbBaseTfkCardLogin.vue +118 -73
  12. package/src/components/JfbBaseTfkCardLogin/Mock.js +5 -535
  13. package/src/components/JfbBaseTfkCardLogin/XdCouponItem.vue +10 -6
  14. package/src/components/JfbBaseTfkCardLogin/XdNotice.vue +550 -0
  15. package/src/components/JfbBaseTfkSearch/AllList.vue +241 -135
  16. package/src/components/JfbBaseTfkSearch/Api.js +1 -1
  17. package/src/components/JfbBaseTfkSearch/Attr.js +203 -1
  18. package/src/components/JfbBaseTfkSearch/ContentFilm.vue +127 -88
  19. package/src/components/JfbBaseTfkSearch/ContentProduct.vue +14 -5
  20. package/src/components/JfbBaseTfkSearch/ContentShop.vue +2 -0
  21. package/src/components/JfbBaseTfkSearch/CusAttr.js +10 -0
  22. package/src/components/JfbBaseTfkSearch/CustomList.vue +130 -78
  23. package/src/components/JfbBaseTfkSearch/JfbBaseTfkSearch.vue +164 -62
  24. package/src/components/JfbBaseTfkSearch/Mock.js +184 -32
  25. package/src/components/JfbBaseTfkSearch/listMixins.js +111 -75
  26. package/src/components/JfbBaseUserInfo/JfbBaseUserInfo.vue +2 -1
  27. package/src/mixins/componentsMixins.js +33 -3
  28. package/src/mixins/posterMixins.js +122 -0
  29. package/src/components/JfbBaseTfkSearch/search.js +0 -293
@@ -4,17 +4,7 @@ import { getContainerPropsValue } from "@/utils/xd.base";
4
4
  export default {
5
5
  data(){
6
6
  return {
7
- isShowExchange:'N',
8
-
9
- contMargin:{},
10
- contRradius:'10',
11
- contShadow:'',
12
- contBorder:'',
13
- contBgColor:'',
14
- contBorderWidth: 0,
15
-
16
- imgRradius:'10',
17
-
7
+ listItemStyle:null,
18
8
  productConfig:null,
19
9
  }
20
10
  },
@@ -24,7 +14,6 @@ export default {
24
14
  methods:{
25
15
 
26
16
  cusInit(container){
27
- this.isShowExchange = getContainerPropsValue(container, 'content.isShowExchange', 'N');
28
17
 
29
18
  //商品相关
30
19
  let is_show_brand = getContainerPropsValue(container, 'content.is_show_brand', 'N');
@@ -34,41 +23,60 @@ export default {
34
23
  let isAddCart = getContainerPropsValue(container, 'content.isAddCart', "Y");
35
24
  let differ = getContainerPropsValue(container, 'content.differ', 1);
36
25
  let showActivityPrice = getContainerPropsValue(container, 'content.showActivityPrice', 'N');
37
- this.productConfig = {is_show_brand,isPrice,isShowTag,isShowDiscount,isAddCart,differ,showActivityPrice}
26
+ let isShowExchange = getContainerPropsValue(container, 'content.isShowExchange', 'N');
27
+ this.productConfig = {is_show_brand, isPrice, isShowTag, isShowDiscount, isAddCart, differ, showActivityPrice, isShowExchange};
38
28
 
39
29
  //内容
40
- this.contMargin = getContainerPropsValue(container, 'content.contMargin', {});
41
- this.contRradius = getContainerPropsValue(container, 'content.contRradius', '10');
42
- this.contShadow = this.getXdShadow({width:20, color:'rgba(0,0,0,0)'},getContainerPropsValue(container, 'content.contShadow', {}))
43
- this.contBorder = this.getXdBorder({width:2,color:'rgba(0,0,0,0)'},getContainerPropsValue(container, 'content.contBorder', {}));
44
- this.contBgColor = getContainerPropsValue(container, 'content.contBgColor', '#fff');
45
- this.contObjBorder = getContainerPropsValue(container, 'content.contBorder', {});
46
- if(this.contObjBorder && this.contObjBorder.type === 'Y') {
47
- if(this.contObjBorder.value && this.contObjBorder.value.width) {
48
- this.contBorderWidth = Number(this.contObjBorder.value.width);
30
+ let brandColor = getContainerPropsValue(container, 'content.brandColor', '#aaa');
31
+ let imgRradius = getContainerPropsValue(container, 'content.imgRradius', '10');
32
+ let contMargin = getContainerPropsValue(container, 'content.contMargin', {});
33
+ let contRradius = getContainerPropsValue(container, 'content.contRradius', '10');
34
+ let contShadow = this.getXdShadow({width:20, color:'rgba(0,0,0,0)'},getContainerPropsValue(container, 'content.contShadow', {}))
35
+ let contBorder = this.getXdBorder({width:2,color:'rgba(0,0,0,0)'},getContainerPropsValue(container, 'content.contBorder', {}));
36
+ let contBgColor = getContainerPropsValue(container, 'content.contBgColor', '#fff');
37
+ let contObjBorder = getContainerPropsValue(container, 'content.contBorder', {});
38
+ let contBorderWidth = 0
39
+ if(contObjBorder && contObjBorder.type === 'Y') {
40
+ if(contObjBorder.value && contObjBorder.value.width) {
41
+ contBorderWidth = Number(contObjBorder.value.width);
49
42
  }
50
- else this.contBorderWidth = 2;
43
+ else contBorderWidth = 2;
51
44
  }
45
+ this.listItemStyle = {
46
+ outSpacing: this.outSpacing,
47
+ mainColor: this.mainColor,
48
+ subMainColor: this.subMainColor,
49
+ successColor: this.successColor,
50
+ brandColor,imgRradius,contMargin,contRradius,contShadow,contBorder,contBgColor,contObjBorder,contBorderWidth}
51
+ },
52
52
 
53
- //图片
54
- this.imgRradius = getContainerPropsValue(container, 'content.imgRradius', '10');
55
-
53
+ filtersResData(res){
54
+ let list = res.list.filter(item=>{
55
+ return item.items.length > 0
56
+ });
57
+ if(res.list.length === list.length) return res;
58
+ let tabs = list.map(item=>{
59
+ return {
60
+ label: item.name,
61
+ value: item.tab
62
+ }
63
+ });
64
+ return {...res, list, tabs}
56
65
  },
57
66
 
58
67
 
59
68
  //通信相关================
60
69
  handleParentVm(cb){
61
- cb(this)
70
+ cb(this.emitParent.options.getParent)
62
71
  },
63
72
 
64
73
  onJfbReachBottom(options) {
65
- console.log('event.onJfbReachBottom', options)
66
- this.$refs['customList']['onCusReachBottom'](options)
67
-
74
+ if(this.tabId !== "all") {
75
+ this.$refs['customList']['onCusReachBottom'](options)
76
+ }
68
77
  },
69
78
 
70
79
  onCusReload() {
71
- console.log('event.onCusReload', this.options)
72
80
  this.$refs['customList']['onCusReloadList'](this.options)
73
81
  },
74
82
  //通信相关================
@@ -76,52 +84,40 @@ export default {
76
84
  //cinema/film/shop/product
77
85
 
78
86
  //影片列表事件
79
- handleFilmDetail(film_id,film){
80
- // console.warn(`toFilmInfo(影片详情).${film_id}`)
81
- // if(!this.fimeDetailPath) {
82
- // console.error('未配置链接');
83
- // return;
84
- // }
85
- // if( this.isPreview) return;
86
- // this.$xdUniHelper.navigateTo({
87
- // url: this.fimeDetailPath + `?film_id=${film_id}`
88
- // })
87
+ handleFilmDetail(item,film){
88
+ console.warn(`handleFilmDetail(影片详情).${item.film_id}`)
89
+ this.checkUrlError(item, film,(url)=>{
90
+ url = url + `?film_id=${item.film_id}`;
91
+ console.warn(`handleFilmDetail.url:${url}`)
92
+ this.toLink(url)
93
+ },'detail1_redirect_data');
89
94
  },
90
- handleBuy(film_id,film){
91
- // console.warn(`toBuyChooseCinema(选择影院).${film_id}`)
92
- // if(!this.buyPath) {
93
- // console.error('未配置链接');
94
- // return;
95
- // }
96
- // if( this.isPreview) return;
97
- // this.$xdUniHelper.navigateTo({
98
- // url: this.buyPath + `?film_id=${film_id}`
99
- // })
95
+ handleBuy(item,film){
96
+ console.warn(`handleBuy(购买详情).${item.film_id}`)
97
+ this.checkUrlError(item, film,(url)=>{
98
+ url = url + `?film_id=${item.film_id}`;
99
+ console.warn(`handleBuy.url:${url}`)
100
+ this.toLink(url)
101
+ });
100
102
  },
101
103
  //影片列表事件
102
104
 
103
105
  //影院列表事件
104
106
  handleSchedule(item, cinema){
105
- // console.warn(`handleSchedule(选择排期).${item.cinema_id}`)
106
- // if(!this.onlinePath) {
107
- // console.error('未配置链接');
108
- // return;
109
- // }
110
- // if( this.isPreview) return;
111
- // this.$xdUniHelper.navigateTo({
112
- // url: this.onlinePath + `?cinema_id=${item.cinema_id}`,
113
- // });
107
+ console.warn(`handleSchedule(去排期页面).${item.cinema_id}`);
108
+ this.checkUrlError(item, cinema,(url)=>{
109
+ url = url + `?cinema_id=${item.cinema_id}`;
110
+ console.warn(`handleSchedule.url:${url}`)
111
+ this.toLink(url)
112
+ });
114
113
  },
115
114
  handleCodeDetail(item, cinema){
116
- // console.warn(`handleCodeDetail(选择电子码列表).${item.cinema_id}`)
117
- // if(!this.codePath) {
118
- // console.error('未配置链接');
119
- // return;
120
- // }
121
- // if( this.isPreview) return;
122
- // this.$xdUniHelper.navigateTo({
123
- // url: this.codePath + `?cinema_id=${item.cinema_id}`,
124
- // });
115
+ console.warn(`handleCodeDetail(电子列表).${item.cinema_id}`);
116
+ this.checkUrlError(item, cinema,(url)=>{
117
+ url = url + `?cinema_id=${item.cinema_id}`;
118
+ console.warn(`handleSchedule.url:${url}`)
119
+ this.toLink(url)
120
+ },'detail1_redirect_data');
125
121
  },
126
122
  handleCashierDetail(item, cinema){
127
123
  //todo
@@ -130,22 +126,62 @@ export default {
130
126
 
131
127
  //门店列表事件
132
128
  handleShopJhd(item, shop){
133
- debugger
129
+ console.warn(`handleShopJhd(去核销).${item.resource_shop_name}`)
130
+ this.checkUrlError(item, shop,(url)=>{
131
+ let params = {
132
+ 'x-params':Base64.encodeURI(`shop_id:${item.shop_id}`),
133
+ 'x-jfb-os':'jhd',
134
+ }
135
+ params = this.$xdUniHelper.jsonToParams(params);
136
+ url = url + `?${params}`;
137
+ console.warn(`handleShopJhd.url:${url}`)
138
+ this.toLink(url)
139
+ },'detail1_redirect_data');
134
140
  },
135
141
  handleShopDetail(item, shop){
136
- debugger
142
+ console.warn(`handleShopDetail(店铺详情).${item.resource_shop_name}`)
143
+ this.checkUrlError(item, shop,(url)=>{
144
+ url = url + `?resource_shop_id=${item.resource_shop_id}`;
145
+ if(item['exts_params']) {
146
+ url = url + `&exts_params=${item['exts_params']}`
147
+ }
148
+ console.warn(`handleShopDetail.url:${url}`)
149
+ this.toLink(url)
150
+ });
137
151
  },
138
152
  //门店列表事件
139
153
 
140
154
  //商品链接事件
141
155
  handleProductDetail(item, product){
142
- let url = this.checkUrlIsValid(product.detail_redirect_data)
143
- if(product.detail_redirect_data) {
156
+ console.warn(`handleProductDetail(商品详情).${item.product_id}`)
157
+ this.checkUrlError(item, product,(url)=>{
158
+ url = url + `?product_id=${item.product_id}`;
159
+ console.warn(`handleProductDetail.url:${url}`)
160
+ this.toLink(url)
161
+ });
162
+ },
163
+ //商品链接事件
144
164
 
165
+ //检查错误跳转
166
+ checkUrlError(item, config, cb , key='detail_redirect_data'){
167
+ if(!config[key]) {
168
+ console.error('未配置链接');
169
+ return false;
145
170
  }
146
- debugger
171
+ if( this.isPreview) return false;
172
+ let url = this.checkUrlIsValid(config[key]);
173
+ if(url === null) {
174
+ console.error('配置链接格式错误');
175
+ console.warn(`配置链接:${config[key]}`);
176
+ return false;
177
+ }
178
+ cb(url)
179
+ },
180
+
181
+ //跳转页面
182
+ toLink(url) {
183
+ this.$xdUniHelper.navigateTo({url});
147
184
  }
148
- //商品链接事件
149
185
  },
150
186
  }
151
187
 
@@ -170,10 +170,11 @@
170
170
  if (this.jfbAuthorize !== null) {
171
171
  this.$xdShowLoading({});
172
172
  store.dispatch('logout').then(res=>{
173
+ let url = this.$configProject.entry || `/${this.projectAttr.deploy_dir}/`;
173
174
  this.$xdHideLoading();
174
175
  this.jfbAuthorize.removeAllCardToken();
175
176
  this.jfbAuthorize.removeAllToken()
176
- this.jfbAuthorize.jumpToUserLogin(this, false);
177
+ this.jfbAuthorize.jumpToUserLogin(this, false, url);
177
178
  }).catch(err=>{
178
179
  console.error(err);
179
180
  })
@@ -560,7 +560,7 @@ export default {
560
560
  //#endif
561
561
  },
562
562
 
563
- getUrlHasSpStr(pathDir){
563
+ getUrlHasSpStrDIR(pathDir){
564
564
  if(pathDir.indexOf('@site_domain@/') === 0) {
565
565
  return pathDir.replace('@site_domain@/','').split('/')[0]
566
566
  }
@@ -569,18 +569,48 @@ export default {
569
569
 
570
570
  /**
571
571
  * @description 过滤不可以用
572
- * 当前项目未H5时,过滤所有小程序应用
573
- * 当前项目未小程序时,过滤所有非当前小程序应用
572
+ * 当前项目为H5时,过滤所有小程序应用
573
+ * 当前项目为小程序时,过滤所有非当前小程序应用
574
574
  * 站外地址直接返回
575
575
  * 站内地址未选值直接返回
576
576
  * 预览模式全过
577
577
  * @param url {object}
578
578
  */
579
579
  checkUrlIsValid(url){
580
+ let projectAttr = this.$root.projectAttr;
581
+ //url = '{"dir":"wtxsaas","host":"sandbox-website-05.jufubao.cn","path":"\/main\/order\/detail","appType":"h5","site_id":"17928cc37788be02","site_url":"https:\/\/sandbox-website-05.jufubao.cn\/wtxsaas\/main\/order\/detail","frontPath":"\/wtxsaas\/main\/order\/detail","fixed_business_code":""}'
580
582
  if(!url) return null;
581
583
  try {
584
+ let redirect_data = JSON.parse(url);
585
+ if(!redirect_data['appType']) redirect_data['appType']= 'h5';
586
+
587
+ //#ifdef H5
588
+ if(redirect_data['appType'] === 'wxmp') return null;
589
+ else {
590
+ if(redirect_data.dir === projectAttr.deploy_dir) {
591
+ return redirect_data.path
592
+ }
593
+ else {
594
+ return `//${projectAttr.host}/${redirect_data.frontPath}`
595
+ }
596
+
597
+ }
598
+ //#endif
582
599
 
600
+ //#ifdef MP-WEIXIN
601
+
602
+ let dir = this.getUrlHasSpStrDIR(redirect_data.path);
603
+ if(redirect_data['appType'] === 'wxmp'){
604
+ if(projectAttr.deploy_dir === dir) return redirect_data.path;
605
+ else return null;
606
+ }
607
+ else if(redirect_data['appType'] === 'h5'){
608
+
609
+ }
610
+ else return null;
611
+ //#endif
583
612
  }catch (e){
613
+ console.error(e);
584
614
  return null;
585
615
  }
586
616
  // let content = list.filter(item=>{
@@ -0,0 +1,122 @@
1
+ 'use strict';
2
+
3
+ export default {
4
+ methods:{
5
+ /**
6
+ * @description 过滤不可以用
7
+ * 当前项目未H5时,过滤所有小程序应用
8
+ * 当前项目未小程序时,过滤所有非当前小程序应用
9
+ * 站外地址直接返回
10
+ * 站内地址未选值直接返回
11
+ * 预览模式全过
12
+ */
13
+ posterFilterNoUseData(list = []){
14
+ let content = this.$xdUniHelper.cloneDeep(list).filter(item=>{
15
+ //预览模式
16
+ if( this.$configProject.isPreview) return true;
17
+
18
+ //非内部应用
19
+ if(item.redirect_type !== 'INN') return true
20
+
21
+ //没有配置链接
22
+ if(!item.redirect_data) return true;
23
+
24
+ //内部应用
25
+ else {
26
+ let redirect_data;
27
+ try {
28
+ redirect_data = JSON.parse(item.redirect_data);
29
+ if(!item['app_type']) item['app_type']= 'h5';
30
+
31
+ //#ifdef H5
32
+ return item['app_type'] !== 'wxmp';
33
+ //#endif
34
+
35
+ //#ifdef MP-WEIXIN
36
+ let actDir = this.$parent['projectAttr']['deploy_dir'];
37
+ let dir = this.getPosterPathDir(redirect_data.page);
38
+ if(item['app_type'] === 'wxmp'){
39
+ return actDir === dir;
40
+ }
41
+ else if(item['app_type'] === 'h5') return true;
42
+ else return true
43
+ //#endif
44
+ }
45
+ catch (e) {
46
+ return true
47
+ }
48
+ }
49
+ });
50
+ console.warn(`PostersList:${JSON.stringify(content.map(item=>`${item.app_type}:${item.content_name}:${item.redirect_data}`), null,2)}`)
51
+ return content;
52
+
53
+ },
54
+
55
+ getPosterPathDir(pathDir){
56
+ if(pathDir.indexOf('@site_domain@/') === 0) {
57
+ return pathDir.replace('@site_domain@/','').split('/')[0]
58
+ }
59
+ return ''
60
+ },
61
+
62
+ handlePosterClick(item) {
63
+ if(!item.redirect_data) {
64
+ console.warn(`未配置链接地址: ${item.redirect_data}`);
65
+ console.error(`未配置链接地址: ${item.redirect_data}`);
66
+ return
67
+ }
68
+
69
+ //内部链接跳转地址
70
+ if (item.redirect_type === 'INN') {
71
+ try {
72
+ let url = JSON.parse(item.redirect_data);
73
+ let params = '';
74
+ if(url.page) {
75
+ if (item['redirect_params']) params = `?${item['redirect_params']}`;
76
+ this.$xdUniHelper.navigateTo({url: url.page + params})
77
+ }
78
+ else {
79
+ console.error(`应用链接配置错误: ${url.page}`)
80
+ }
81
+ } catch (e) {
82
+ console.error(`应用链接配置错误: ${item.redirect_data}`)
83
+ }
84
+ }
85
+
86
+ //外部链接
87
+ if (item.redirect_type === 'URL') {
88
+ let reg = /^(http:\/\/|https:\/\/|\/\/)+.+$/;
89
+ let spReg = /(-apiuri\/v)/;
90
+ //#ifdef MP-WEIXIN
91
+ try {
92
+ let url = JSON.parse(item.redirect_data);
93
+ if (reg.test(url.url) || spReg.test(url.url)) {
94
+ console.warn(`广告跳转外站: ${url.url}`)
95
+ this.$xdUniHelper.navigateTo(url);
96
+ } else {
97
+ console.error(`广告跳转外站配置错误: ${url.url}`)
98
+ }
99
+ } catch (e) {
100
+ console.error(`广告跳转外站配置错误: ${item.redirect_data}`)
101
+ }
102
+ //#endif
103
+ //#ifdef H5
104
+ try {
105
+ let url = JSON.parse(item.redirect_data);
106
+ console.warn(`广告跳转外站: ${url.url}`);
107
+ this.$xdUniHelper.redirectTo(url, false)
108
+ } catch (e) {
109
+ console.error(`广告跳转外站配置错误: ${item.redirect_data}`)
110
+ }
111
+ //#endif
112
+
113
+ }
114
+
115
+ //无跳转地址
116
+ if(item.redirect_type === 'EMP') {
117
+ console.warn(`无跳转地址`);
118
+ }
119
+ },
120
+ },
121
+ }
122
+