jufubao-base 1.0.220-beta4 → 1.0.221-beta1

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.
@@ -1,7 +1,11 @@
1
1
  'use strict';
2
2
 
3
+ import {mapActions} from "vuex";
4
+
3
5
  export default {
4
6
  methods:{
7
+ ...mapActions(['wxCodeForGetAppId']),
8
+
5
9
  /**
6
10
  * @description 过滤不可以用
7
11
  * 当前项目未H5时,过滤所有小程序应用
@@ -11,55 +15,133 @@ export default {
11
15
  * 预览模式全过
12
16
  */
13
17
  posterFilterNoUseData(list = []){
14
- let content = this.$xdUniHelper.cloneDeep(list).filter(item=>{
18
+ return this.filterPosterItem(list);
19
+ },
20
+
21
+ //====== h5 to wxmp(外部链接) 或者 wxmp to wxmp(外部链接) =========
22
+ filterPosterItem(list){
23
+ let content = list.filter(item=>{
15
24
  //预览模式
16
25
  if( this.$configProject.isPreview) return true;
17
26
 
18
- //非内部应用
27
+ //非内部应用(URL|EMP|WMP)
19
28
  if(item.redirect_type !== 'INN') return true
20
29
 
21
30
  //没有配置链接
22
31
  if(!item.redirect_data) return true;
23
32
 
24
33
  //内部应用
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';
34
+ return true;
35
+ });
36
+ console.warn(`PostersList:${JSON.stringify(content.map(item=>`${item.app_type}:${item.content_name}:${item.redirect_data}`), null,2)}`)
37
+ return content;
38
+ },
30
39
 
31
- //#ifdef H5
32
- return item['app_type'] !== 'wxmp';
33
- //#endif
40
+ getSchemeUrl(app_id, url, params){
41
+ let env_version = 'release';
42
+ let query = '';
43
+ if(params) query = `&query=${encodeURIComponent(params)}`;
44
+ return `weixin://dl/business/?appid=${app_id}&path=${url}${query}&env_version=${env_version}`;;
45
+ },
34
46
 
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
- }
47
+ //#ifdef H5
48
+ handleH5ToMP(app_id , url, params){
49
+ let newUrl = '/' + url.split('/').splice(-3).join('/');
50
+ let entry = '/pages/loading/loading';
51
+ let query = `callback_local=${newUrl}`;
52
+ if(params) query = `${query}&${params}`;
53
+ window.location.href = this.getSchemeUrl(app_id, entry, query);
54
+ },
55
+ //#endif
56
+
57
+ //#ifdef MP-WEIXIN
58
+ handleToMp(app_id,entry){
59
+ let envVersion = 'release';
60
+ wx.navigateToMiniProgram({
61
+ appId: app_id,
62
+ path: entry,
63
+ envVersion,
64
+ success(res) {
65
+ console.log(res);
66
+ },
67
+ fail:(err)=>{
68
+ console.error(err);
48
69
  }
49
70
  });
50
- console.warn(`PostersList:${JSON.stringify(content.map(item=>`${item.app_type}:${item.content_name}:${item.redirect_data}`), null,2)}`)
51
- return content;
71
+ },
72
+
73
+ handleMpToMP(app_id , url, params){
74
+ let newUrl = '/' + url.split('/').splice(-3).join('/');
75
+ let entry = '/pages/loading/loading';
76
+ let query = `callback_local=${newUrl}`;
77
+ if(params) query = `${query}&${params}`;
78
+ entry = `${entry}?${query}`;
79
+ this.handleToMp(app_id,entry)
80
+ },
81
+ //#endif
82
+
83
+ /**
84
+ * @description 处理站点应用内部跳转微信小程序处理
85
+ * @param code {string} 站点内部微信小程序aopen_app_code
86
+ * @param type {string} h5|wxmp
87
+ * @param url {string} 内部链接地址
88
+ * @param params {string} 自定义参数 例如:id=1&cid=1234
89
+ */
90
+ codeForGetAppId(code, type, url,params){
91
+ this.wxCodeForGetAppId({app_code: code})
92
+ .then(app_id=>{
93
+ //#ifdef H5
94
+ if(type === 'h5') this.handleH5ToMP(app_id,url, params || '');
95
+ //#endif
52
96
 
97
+ //#ifdef MP-WEIXIN
98
+ let obj = parsePath(url);
99
+ //跳转路径所在应用为微信小程序并且不属于当前应用
100
+ if(!obj.isSameApp && type === 'wxmp'){
101
+ this.handleMpToMP( app_id, url, params || '')
102
+ }
103
+ //#endif
104
+ })
105
+ .catch(err=>{
106
+ console.error(err)
107
+ })
53
108
  },
54
109
 
55
- getPosterPathDir(pathDir){
56
- if(pathDir.indexOf('@site_domain@/') === 0) {
57
- return pathDir.replace('@site_domain@/','').split('/')[0]
110
+ /**
111
+ * @description 跳转到第三方维修小程序
112
+ * @param item
113
+ */
114
+ toOtherWxMp(item){
115
+ try {
116
+ let url = JSON.parse(item.redirect_data);
117
+
118
+ //url = {data: `/pages/loading/loading?callback=${encodeURIComponent('/pages/loading/loading')}&version=1.0.0`, app_id: '11212121212'}
119
+ //url = {data: `weixin://dl/business/?appid=11212121212&path=/pages/loading/loading&query=callback%3D%252Fpages%252Floading%252Floading%26version%3D1.0.0&env_version=release`, app_id: '11212121212'}
120
+
121
+ //#ifdef H5
122
+ let businessUrl = '';
123
+ if(url.data.indexOf('weixin://dl/business/?appid=') === 0) businessUrl = url.data;
124
+ else {
125
+ let arr = url.data.split('?');
126
+ if(url.app_id) {
127
+ businessUrl = this.getSchemeUrl(url.app_id, arr[0], arr[1]||'');
128
+ }
129
+ else console.error(`未设置APP_ID: ${url.app_id}`);
130
+ }
131
+ if(businessUrl) window.location.href = businessUrl;
132
+ //#endif
133
+
134
+ //#ifdef MP-WEIXIN
135
+ this.handleToMp(url.app_id, url.data)
136
+ //#endif
137
+ }catch (e) {
138
+ console.error(`应用链接配置错误: ${item.redirect_data}`)
58
139
  }
59
- return ''
140
+
60
141
  },
61
142
 
62
- handlePosterClick(item) {
143
+ handlePosterClick(item){
144
+ //未配置链接地址
63
145
  if(!item.redirect_data) {
64
146
  console.warn(`未配置链接地址: ${item.redirect_data}`);
65
147
  console.error(`未配置链接地址: ${item.redirect_data}`);
@@ -70,15 +152,39 @@ export default {
70
152
  if (item.redirect_type === 'INN') {
71
153
  try {
72
154
  let url = JSON.parse(item.redirect_data);
155
+
73
156
  let params = '';
74
157
  if(url.page) {
158
+
159
+ //#ifdef H5
160
+ //h5 to wxmp (外部链接)
161
+ if(item.app_type === 'wxmp') {
162
+ if(url.app_code) this.codeForGetAppId(url.app_code, 'h5', url.page,item['redirect_params']);
163
+ else console.error(`应用外部链接为设置Code: ${url.app_code}`)
164
+ return;
165
+ }
166
+ //#endif
167
+
168
+ //#ifdef MP-WEIXIN
169
+ //wxmp to wxmp(外部链接)
170
+ if(item.app_type === 'wxmp') {
171
+ if(url.app_code) this.codeForGetAppId(url.app_code, 'wxmp', url.page, item['redirect_params']);
172
+ else console.error(`应用外部链接为设置Code: ${url.app_code}`)
173
+ return;
174
+ }
175
+ //#endif
176
+
177
+ //属于站点应用内部链接:h5 to h5 或者 wxmp to wxmp
178
+ //属于站点应用外部链接:h5 to h5(外部链接)
75
179
  if (item['redirect_params']) params = `?${item['redirect_params']}`;
180
+ debugger
76
181
  this.$xdUniHelper.navigateTo({url: url.page + params})
77
182
  }
78
183
  else {
79
184
  console.error(`应用链接配置错误: ${url.page}`)
80
185
  }
81
186
  } catch (e) {
187
+ console.error(e)
82
188
  console.error(`应用链接配置错误: ${item.redirect_data}`)
83
189
  }
84
190
  }
@@ -112,11 +218,17 @@ export default {
112
218
 
113
219
  }
114
220
 
221
+ //跳转到微信小程序
222
+ if(item.redirect_type === 'WMP') {
223
+ this.toOtherWxMp(item);
224
+ }
225
+
115
226
  //无跳转地址
116
227
  if(item.redirect_type === 'EMP') {
117
228
  console.warn(`无跳转地址`);
118
229
  }
119
- },
230
+ }
231
+ //====== h5 to wxmp(外部链接) 或者 wxmp to wxmp(外部链接) =========
120
232
  },
121
233
  }
122
234