crh-jssdk 1.0.2 → 1.0.4
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.
- package/dist/business/base/crh-app-sdk-jy.js +459 -0
- package/dist/business/index.js +45 -25
- package/dist/business/profession/crh-app-sdk-jy.js +204 -0
- package/dist/business/user/crh-app-sdk-jy.js +227 -0
- package/dist/business/utils/bridge.js +231 -3
- package/dist/business/utils/index.js +4 -1
- package/package.json +1 -1
|
@@ -0,0 +1,459 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @description 金圆统一基础模块 - Bridge版本
|
|
4
|
+
* 基于WebViewJavascriptBridge实现基础功能
|
|
5
|
+
* 金圆统一券商,通过 ua 中包含 qsid/401 来判断
|
|
6
|
+
*/
|
|
7
|
+
var __assign = (this && this.__assign) || function () {
|
|
8
|
+
__assign = Object.assign || function(t) {
|
|
9
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
10
|
+
s = arguments[i];
|
|
11
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
12
|
+
t[p] = s[p];
|
|
13
|
+
}
|
|
14
|
+
return t;
|
|
15
|
+
};
|
|
16
|
+
return __assign.apply(this, arguments);
|
|
17
|
+
};
|
|
18
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
19
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
20
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
21
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
22
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
23
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
24
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
25
|
+
});
|
|
26
|
+
};
|
|
27
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
28
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
29
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
30
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
31
|
+
function step(op) {
|
|
32
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
33
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
34
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
35
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
36
|
+
switch (op[0]) {
|
|
37
|
+
case 0: case 1: t = op; break;
|
|
38
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
39
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
40
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
41
|
+
default:
|
|
42
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
43
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
44
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
45
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
46
|
+
if (t[2]) _.ops.pop();
|
|
47
|
+
_.trys.pop(); continue;
|
|
48
|
+
}
|
|
49
|
+
op = body.call(thisArg, _);
|
|
50
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
51
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
55
|
+
var utils_1 = require("../utils");
|
|
56
|
+
exports.default = {
|
|
57
|
+
/**
|
|
58
|
+
* 检查是否在App环境中
|
|
59
|
+
* 通过 ua 中是否包含 qsid/401 来判断是否是金圆统一券商
|
|
60
|
+
*/
|
|
61
|
+
isApp: function () {
|
|
62
|
+
var ua = navigator.userAgent;
|
|
63
|
+
console.log("金圆统一 UA:", ua);
|
|
64
|
+
return ua.includes("qsid/401");
|
|
65
|
+
},
|
|
66
|
+
/**
|
|
67
|
+
* 获取webview类型
|
|
68
|
+
*/
|
|
69
|
+
webviewType: function () {
|
|
70
|
+
var ua = navigator.userAgent;
|
|
71
|
+
return {
|
|
72
|
+
isJY: ua.includes("qsid/401"), // 金圆统一
|
|
73
|
+
isIOS: utils_1.ios,
|
|
74
|
+
isAndroid: /Android/i.test(ua),
|
|
75
|
+
ua: ua,
|
|
76
|
+
};
|
|
77
|
+
},
|
|
78
|
+
/**
|
|
79
|
+
* 返回到App
|
|
80
|
+
* @param params 返回参数
|
|
81
|
+
*/
|
|
82
|
+
goBack: function () {
|
|
83
|
+
return __awaiter(this, arguments, void 0, function (params) {
|
|
84
|
+
var backParams, error_1;
|
|
85
|
+
if (params === void 0) { params = {}; }
|
|
86
|
+
return __generator(this, function (_a) {
|
|
87
|
+
switch (_a.label) {
|
|
88
|
+
case 0:
|
|
89
|
+
_a.trys.push([0, 2, , 3]);
|
|
90
|
+
backParams = __assign({ type: "webpage" }, params);
|
|
91
|
+
console.log("金圆统一调用goBack,参数:", backParams);
|
|
92
|
+
return [4 /*yield*/, utils_1.jyBridge.bridgeCallHandler("Promise", "goback", backParams)];
|
|
93
|
+
case 1:
|
|
94
|
+
_a.sent();
|
|
95
|
+
console.log("金圆统一返回App成功");
|
|
96
|
+
return [3 /*break*/, 3];
|
|
97
|
+
case 2:
|
|
98
|
+
error_1 = _a.sent();
|
|
99
|
+
console.error("金圆统一返回App失败:", error_1);
|
|
100
|
+
throw error_1;
|
|
101
|
+
case 3: return [2 /*return*/];
|
|
102
|
+
}
|
|
103
|
+
});
|
|
104
|
+
});
|
|
105
|
+
},
|
|
106
|
+
/**
|
|
107
|
+
* 关闭当前页面
|
|
108
|
+
*/
|
|
109
|
+
closeSJKH: function () {
|
|
110
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
111
|
+
var error_2;
|
|
112
|
+
return __generator(this, function (_a) {
|
|
113
|
+
switch (_a.label) {
|
|
114
|
+
case 0:
|
|
115
|
+
_a.trys.push([0, 2, , 3]);
|
|
116
|
+
return [4 /*yield*/, this.goBack({ type: "component" })];
|
|
117
|
+
case 1:
|
|
118
|
+
_a.sent();
|
|
119
|
+
return [3 /*break*/, 3];
|
|
120
|
+
case 2:
|
|
121
|
+
error_2 = _a.sent();
|
|
122
|
+
console.error("金圆统一关闭页面失败:", error_2);
|
|
123
|
+
return [3 /*break*/, 3];
|
|
124
|
+
case 3: return [2 /*return*/];
|
|
125
|
+
}
|
|
126
|
+
});
|
|
127
|
+
});
|
|
128
|
+
},
|
|
129
|
+
/**
|
|
130
|
+
* 通过url打开新的webview打开外部链接
|
|
131
|
+
* iOS: client://hxsecurity.frame.router/browser?url=xxx
|
|
132
|
+
* Android: client://hxsecurity.frame.router/quote_browser?url=xxx
|
|
133
|
+
*/
|
|
134
|
+
goWebview: function (url) {
|
|
135
|
+
var timestamp = new Date().getTime();
|
|
136
|
+
var safeUrl = typeof url === "string" ? url : "".concat(url || "");
|
|
137
|
+
var pinurl = safeUrl.indexOf("?") > -1
|
|
138
|
+
? "".concat(safeUrl, "×tamp=").concat(timestamp)
|
|
139
|
+
: "".concat(safeUrl, "?timestamp=").concat(timestamp);
|
|
140
|
+
console.log("金圆统一 pinurl", pinurl);
|
|
141
|
+
// 金圆统一区分 iOS/Android
|
|
142
|
+
if (utils_1.ios) {
|
|
143
|
+
// iOS: 使用 browser
|
|
144
|
+
location.href = "client://hxsecurity.frame.router/browser?url=".concat(encodeURIComponent(pinurl), "&rp_flag_push_to_stack_directly=true&rp_flag_back_to_last_tab=true&rp_flag_finish_when_back_to_last_tab=true&hideNavBar=1&isHiddenNavigationBar=1&physicKey=1");
|
|
145
|
+
}
|
|
146
|
+
else {
|
|
147
|
+
// Android: 使用 quote_browser
|
|
148
|
+
location.href = "client://hxsecurity.frame.router/quote_browser?url=".concat(encodeURIComponent(pinurl), "&rp_flag_recreate=true&rp_flag_push_to_stack_directly=true&rp_flag_finish_when_back_to_last_tab=true&hideNavBar=1&isHiddenNavigationBar=1&physicKey=1");
|
|
149
|
+
}
|
|
150
|
+
},
|
|
151
|
+
/**
|
|
152
|
+
* 跳转到客户端页面(通过JSBridge)
|
|
153
|
+
* @param url 完整跳转链接,与中台路由格式一样
|
|
154
|
+
* @param needTitle 是否显示原生标题栏
|
|
155
|
+
*/
|
|
156
|
+
goWebview2: function (params) {
|
|
157
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
158
|
+
var url, _a, needTitle, pageId, gotoUrl, error_3;
|
|
159
|
+
return __generator(this, function (_b) {
|
|
160
|
+
switch (_b.label) {
|
|
161
|
+
case 0:
|
|
162
|
+
url = params.url, _a = params.needTitle, needTitle = _a === void 0 ? false : _a;
|
|
163
|
+
_b.label = 1;
|
|
164
|
+
case 1:
|
|
165
|
+
_b.trys.push([1, 3, , 4]);
|
|
166
|
+
pageId = needTitle ? "2804" : "5002";
|
|
167
|
+
gotoUrl = "client.html?action=ymtz^webid=".concat(pageId, "^url=").concat(encodeURIComponent(url), "^isHiddenNavigationBar=").concat(needTitle ? 0 : 1);
|
|
168
|
+
console.log("金圆统一调用gotoNextPage,参数:", gotoUrl);
|
|
169
|
+
return [4 /*yield*/, utils_1.jyBridge.bridgeCallHandler("Promise", "gotoNextPage", {
|
|
170
|
+
url: gotoUrl,
|
|
171
|
+
})];
|
|
172
|
+
case 2: return [2 /*return*/, _b.sent()];
|
|
173
|
+
case 3:
|
|
174
|
+
error_3 = _b.sent();
|
|
175
|
+
console.error("金圆统一跳转客户端页面失败:", error_3);
|
|
176
|
+
// 降级方案:使用 goWebview
|
|
177
|
+
this.goWebview(url);
|
|
178
|
+
return [2 /*return*/, { success: false }];
|
|
179
|
+
case 4: return [2 /*return*/];
|
|
180
|
+
}
|
|
181
|
+
});
|
|
182
|
+
});
|
|
183
|
+
},
|
|
184
|
+
/**
|
|
185
|
+
* 设置原生状态栏颜色
|
|
186
|
+
* 对外统一接口:color(背景色)
|
|
187
|
+
* 内部转换为金圆统一原生接口所需参数
|
|
188
|
+
* @param {object} params
|
|
189
|
+
* @param {string} params.color 状态栏背景颜色,如#ff0000
|
|
190
|
+
*/
|
|
191
|
+
setStatusBar: function (params) {
|
|
192
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
193
|
+
var bridgeParams;
|
|
194
|
+
return __generator(this, function (_a) {
|
|
195
|
+
console.log("金圆统一设置状态栏参数:", params);
|
|
196
|
+
try {
|
|
197
|
+
bridgeParams = {};
|
|
198
|
+
if (utils_1.ios) {
|
|
199
|
+
// iOS 只传背景色,会自动设置字体颜色
|
|
200
|
+
if (params.color) {
|
|
201
|
+
bridgeParams.statusColor = params.color;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
else {
|
|
205
|
+
// Android 只传文字颜色模式,固定为 "0"
|
|
206
|
+
bridgeParams.statusColorMode = "0";
|
|
207
|
+
}
|
|
208
|
+
console.log("金圆统一调用 modifyStatusColor,参数:", bridgeParams);
|
|
209
|
+
utils_1.jyBridge.bridgeCallHandler("", "modifyStatusColor", bridgeParams);
|
|
210
|
+
console.log("金圆统一设置状态栏颜色成功");
|
|
211
|
+
return [2 /*return*/, { success: true }];
|
|
212
|
+
}
|
|
213
|
+
catch (error) {
|
|
214
|
+
console.error("金圆统一设置状态栏颜色失败:", error);
|
|
215
|
+
throw error;
|
|
216
|
+
}
|
|
217
|
+
return [2 /*return*/];
|
|
218
|
+
});
|
|
219
|
+
});
|
|
220
|
+
},
|
|
221
|
+
/**
|
|
222
|
+
* 分享功能
|
|
223
|
+
* @param params 分享参数
|
|
224
|
+
*/
|
|
225
|
+
share: function (params) {
|
|
226
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
227
|
+
var shareParams, result, error_4;
|
|
228
|
+
return __generator(this, function (_a) {
|
|
229
|
+
switch (_a.label) {
|
|
230
|
+
case 0:
|
|
231
|
+
_a.trys.push([0, 2, , 3]);
|
|
232
|
+
shareParams = __assign({ type: "1", bmpRes: "3" }, params);
|
|
233
|
+
console.log("金圆统一调用分享,参数:", shareParams);
|
|
234
|
+
return [4 /*yield*/, utils_1.jyBridge.bridgeCallHandler("Promise", "hexinShare", shareParams)];
|
|
235
|
+
case 1:
|
|
236
|
+
result = _a.sent();
|
|
237
|
+
console.log("金圆统一分享调用成功:", result);
|
|
238
|
+
return [2 /*return*/, result];
|
|
239
|
+
case 2:
|
|
240
|
+
error_4 = _a.sent();
|
|
241
|
+
console.error("金圆统一分享失败:", error_4);
|
|
242
|
+
throw error_4;
|
|
243
|
+
case 3: return [2 /*return*/];
|
|
244
|
+
}
|
|
245
|
+
});
|
|
246
|
+
});
|
|
247
|
+
},
|
|
248
|
+
/**
|
|
249
|
+
* 保存图片到相册
|
|
250
|
+
* @param imageData 图片的base64格式字符串
|
|
251
|
+
*/
|
|
252
|
+
saveImageToAlbum: function (imageData) {
|
|
253
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
254
|
+
var params, result, error_5;
|
|
255
|
+
return __generator(this, function (_a) {
|
|
256
|
+
switch (_a.label) {
|
|
257
|
+
case 0:
|
|
258
|
+
_a.trys.push([0, 2, , 3]);
|
|
259
|
+
params = { imageData: imageData };
|
|
260
|
+
console.log("金圆统一保存图片到相册");
|
|
261
|
+
return [4 /*yield*/, utils_1.jyBridge.bridgeCallHandler("Promise", "saveImageToAlbum", params)];
|
|
262
|
+
case 1:
|
|
263
|
+
result = _a.sent();
|
|
264
|
+
console.log("金圆统一保存图片成功:", result);
|
|
265
|
+
return [2 /*return*/, result];
|
|
266
|
+
case 2:
|
|
267
|
+
error_5 = _a.sent();
|
|
268
|
+
console.error("金圆统一保存图片失败:", error_5);
|
|
269
|
+
throw error_5;
|
|
270
|
+
case 3: return [2 /*return*/];
|
|
271
|
+
}
|
|
272
|
+
});
|
|
273
|
+
});
|
|
274
|
+
},
|
|
275
|
+
/**
|
|
276
|
+
* 拦截Android物理返回键事件,并回调给前端 --- 仅安卓
|
|
277
|
+
*/
|
|
278
|
+
interceptBack: function (callback) {
|
|
279
|
+
try {
|
|
280
|
+
// 金圆统一实现
|
|
281
|
+
utils_1.jyBridge.registerHandler("interceptBack", function (data) {
|
|
282
|
+
callback && callback(data);
|
|
283
|
+
});
|
|
284
|
+
}
|
|
285
|
+
catch (error) {
|
|
286
|
+
console.error("金圆统一拦截返回键失败:", error);
|
|
287
|
+
}
|
|
288
|
+
},
|
|
289
|
+
/**
|
|
290
|
+
* 注册APP物理返回键拦截监听器
|
|
291
|
+
* @param callback 回调函数,当用户点击物理返回键时触发
|
|
292
|
+
*/
|
|
293
|
+
registerPhysicalReturnListener: function (callback) {
|
|
294
|
+
try {
|
|
295
|
+
console.log("金圆统一注册物理返回键拦截监听器");
|
|
296
|
+
utils_1.jyBridge.registerHandler("clientPhysicalReturn", function (data) {
|
|
297
|
+
console.log("金圆统一收到物理返回键事件:", data);
|
|
298
|
+
if (typeof callback === "function") {
|
|
299
|
+
callback();
|
|
300
|
+
}
|
|
301
|
+
});
|
|
302
|
+
console.log("金圆统一物理返回键拦截监听器注册成功");
|
|
303
|
+
}
|
|
304
|
+
catch (error) {
|
|
305
|
+
console.error("金圆统一注册物理返回键拦截监听器失败:", error);
|
|
306
|
+
}
|
|
307
|
+
},
|
|
308
|
+
/**
|
|
309
|
+
* 跳转个股详情页
|
|
310
|
+
*/
|
|
311
|
+
goStockDetail: function (params) {
|
|
312
|
+
var stockcode = params.stockcode, stockmarket = params.stockmarket;
|
|
313
|
+
try {
|
|
314
|
+
console.error("金圆统一跳转个股详情数据:", stockcode, stockmarket);
|
|
315
|
+
utils_1.jyBridge.bridgeCallHandler("Promise", "HXJumpToStockFenshi", {
|
|
316
|
+
stockcode: stockcode,
|
|
317
|
+
stockmarket: stockmarket,
|
|
318
|
+
});
|
|
319
|
+
}
|
|
320
|
+
catch (error) {
|
|
321
|
+
console.error("金圆统一跳转个股详情失败:", error);
|
|
322
|
+
}
|
|
323
|
+
},
|
|
324
|
+
/**
|
|
325
|
+
* 获取客户端版本号
|
|
326
|
+
* 通过解析ua获取版本信息
|
|
327
|
+
*/
|
|
328
|
+
getVersion: function () {
|
|
329
|
+
var ua = navigator.userAgent.toLowerCase();
|
|
330
|
+
// 金圆统一版本号格式: qsid/401/版本号 或类似的格式
|
|
331
|
+
var regex = "";
|
|
332
|
+
regex = /qsid[\/_]?401[\/_]?([\d.]+)/;
|
|
333
|
+
var match = ua.match(regex);
|
|
334
|
+
console.log(match, "===金圆统一版本match===");
|
|
335
|
+
if (match) {
|
|
336
|
+
var version = match[1];
|
|
337
|
+
return version;
|
|
338
|
+
}
|
|
339
|
+
else {
|
|
340
|
+
console.warn("金圆统一version没有找到匹配项");
|
|
341
|
+
return "0.0.0";
|
|
342
|
+
}
|
|
343
|
+
},
|
|
344
|
+
/**
|
|
345
|
+
* 关注公众号
|
|
346
|
+
* @param appid 公众号的appid,默认为wxf45c81345f5ea70e
|
|
347
|
+
*/
|
|
348
|
+
followOfficialAccount: function () {
|
|
349
|
+
return __awaiter(this, arguments, void 0, function (appid) {
|
|
350
|
+
var params, result, error_6;
|
|
351
|
+
if (appid === void 0) { appid = "wxf45c81345f5ea70e"; }
|
|
352
|
+
return __generator(this, function (_a) {
|
|
353
|
+
switch (_a.label) {
|
|
354
|
+
case 0:
|
|
355
|
+
_a.trys.push([0, 2, , 3]);
|
|
356
|
+
params = {
|
|
357
|
+
jumptype: "1",
|
|
358
|
+
downloadurl: "weixin://dl/officialaccounts?appid=".concat(appid),
|
|
359
|
+
};
|
|
360
|
+
console.log("金圆统一调用关注公众号,参数:", params);
|
|
361
|
+
return [4 /*yield*/, utils_1.jyBridge.bridgeCallHandler("", "startApplication", params)];
|
|
362
|
+
case 1:
|
|
363
|
+
result = _a.sent();
|
|
364
|
+
console.log("金圆统一关注公众号调用成功:", result);
|
|
365
|
+
return [2 /*return*/, result];
|
|
366
|
+
case 2:
|
|
367
|
+
error_6 = _a.sent();
|
|
368
|
+
console.error("金圆统一关注公众号失败:", error_6);
|
|
369
|
+
throw error_6;
|
|
370
|
+
case 3: return [2 /*return*/];
|
|
371
|
+
}
|
|
372
|
+
});
|
|
373
|
+
});
|
|
374
|
+
},
|
|
375
|
+
/**
|
|
376
|
+
* 在app内打开pdf文件
|
|
377
|
+
*/
|
|
378
|
+
openPDFFile: function (url, title) {
|
|
379
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
380
|
+
var typeList, type, params;
|
|
381
|
+
return __generator(this, function (_a) {
|
|
382
|
+
console.log("金圆统一 HXDownloadFile title", title);
|
|
383
|
+
typeList = url.split(".");
|
|
384
|
+
type = "PDF";
|
|
385
|
+
params = {
|
|
386
|
+
url: url,
|
|
387
|
+
filetype: type,
|
|
388
|
+
title: title,
|
|
389
|
+
pdfFileName: title,
|
|
390
|
+
};
|
|
391
|
+
console.log("金圆统一 HXDownloadFile", params);
|
|
392
|
+
utils_1.jyBridge
|
|
393
|
+
.bridgeCallHandler("Promise", "HXDownloadFile", params)
|
|
394
|
+
.then(function () {
|
|
395
|
+
console.log("金圆统一 HXDownloadFile success");
|
|
396
|
+
})
|
|
397
|
+
.catch(function (err) {
|
|
398
|
+
console.error("金圆统一 HXDownloadFile error", err);
|
|
399
|
+
});
|
|
400
|
+
return [2 /*return*/];
|
|
401
|
+
});
|
|
402
|
+
});
|
|
403
|
+
},
|
|
404
|
+
/**
|
|
405
|
+
* 在app内打开浏览器
|
|
406
|
+
* @param url 浏览器地址
|
|
407
|
+
*/
|
|
408
|
+
doOpenBrowser: function (url) {
|
|
409
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
410
|
+
return __generator(this, function (_a) {
|
|
411
|
+
console.log("金圆统一要调用doOpenBrowser了", url);
|
|
412
|
+
return [2 /*return*/, new Promise(function (resolve, reject) {
|
|
413
|
+
utils_1.jyBridge
|
|
414
|
+
.bridgeCallHandler("Promise", "doOpenBrowser", { url: url })
|
|
415
|
+
.then(function () {
|
|
416
|
+
console.log("金圆统一 doOpenBrowser---resolve");
|
|
417
|
+
resolve(void 0);
|
|
418
|
+
})
|
|
419
|
+
.catch(function (err) {
|
|
420
|
+
console.log(err, "金圆统一 doOpenBrowser---reject");
|
|
421
|
+
reject(err);
|
|
422
|
+
});
|
|
423
|
+
})];
|
|
424
|
+
});
|
|
425
|
+
});
|
|
426
|
+
},
|
|
427
|
+
/**
|
|
428
|
+
* 跳转财人汇SDK页面(金圆定制)
|
|
429
|
+
* @param params 跳转参数
|
|
430
|
+
*/
|
|
431
|
+
doOpenCRHSDK: function (params) {
|
|
432
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
433
|
+
var result, error_7;
|
|
434
|
+
return __generator(this, function (_a) {
|
|
435
|
+
switch (_a.label) {
|
|
436
|
+
case 0:
|
|
437
|
+
_a.trys.push([0, 2, , 3]);
|
|
438
|
+
console.log("金圆统一调用doOpenCRHSDK,参数:", params);
|
|
439
|
+
return [4 /*yield*/, utils_1.jyBridge.bridgeCallHandler("Promise", "doOpenCRHSDK", params)];
|
|
440
|
+
case 1:
|
|
441
|
+
result = _a.sent();
|
|
442
|
+
console.log("金圆统一doOpenCRHSDK调用成功:", result);
|
|
443
|
+
return [2 /*return*/, result];
|
|
444
|
+
case 2:
|
|
445
|
+
error_7 = _a.sent();
|
|
446
|
+
console.error("金圆统一doOpenCRHSDK失败:", error_7);
|
|
447
|
+
throw error_7;
|
|
448
|
+
case 3: return [2 /*return*/];
|
|
449
|
+
}
|
|
450
|
+
});
|
|
451
|
+
});
|
|
452
|
+
},
|
|
453
|
+
/**
|
|
454
|
+
* 获取Bridge实例(供其他模块使用)
|
|
455
|
+
*/
|
|
456
|
+
getBridge: function () {
|
|
457
|
+
return utils_1.jyBridge;
|
|
458
|
+
},
|
|
459
|
+
};
|
package/dist/business/index.js
CHANGED
|
@@ -84,65 +84,65 @@ var user_1 = __importDefault(require("./user")); // 用户
|
|
|
84
84
|
var BUSINESS = /** @class */ (function () {
|
|
85
85
|
function BUSINESS(sdkType) {
|
|
86
86
|
this.isApp = false; //是否是app
|
|
87
|
-
this.sdkType = sdkType; // 1 财人汇 2 财信
|
|
87
|
+
this.sdkType = sdkType; // 1 财人汇 2 财信 3 新意 4 联储 5 金圆
|
|
88
88
|
this.bridge = utils_1.globalBridge; // 初始化Bridge实例
|
|
89
89
|
}
|
|
90
90
|
BUSINESS.prototype.initSdk = function () {
|
|
91
91
|
return __awaiter(this, void 0, void 0, function () {
|
|
92
|
-
var Obj, _a, _b, _c, _d, _e, _f, error_1, _g, _h, _j, _k;
|
|
93
|
-
var
|
|
94
|
-
return __generator(this, function (
|
|
95
|
-
switch (
|
|
92
|
+
var Obj, _a, _b, _c, _d, _e, _f, error_1, _g, _h, _j, _k, _l, _m, _o, _p;
|
|
93
|
+
var _q, _r;
|
|
94
|
+
return __generator(this, function (_s) {
|
|
95
|
+
switch (_s.label) {
|
|
96
96
|
case 0:
|
|
97
97
|
console.log("start initSdk");
|
|
98
98
|
Obj = __assign(__assign(__assign({}, base_1.default), profession_1.default), user_1.default);
|
|
99
99
|
if (!(+this.sdkType === 1)) return [3 /*break*/, 1];
|
|
100
100
|
this.sdkObj = Obj;
|
|
101
|
-
return [3 /*break*/,
|
|
101
|
+
return [3 /*break*/, 19];
|
|
102
102
|
case 1:
|
|
103
103
|
if (!(+this.sdkType === 2)) return [3 /*break*/, 5];
|
|
104
104
|
_a = this;
|
|
105
105
|
_b = [__assign({}, Obj)];
|
|
106
106
|
return [4 /*yield*/, Promise.resolve().then(function () { return __importStar(require("./base/crh-app-sdk-cxzq")); })];
|
|
107
107
|
case 2:
|
|
108
|
-
_c = [__assign.apply(void 0, _b.concat([(
|
|
108
|
+
_c = [__assign.apply(void 0, _b.concat([(_s.sent()).default]))];
|
|
109
109
|
return [4 /*yield*/, Promise.resolve().then(function () { return __importStar(require("./user/crh-app-sdk-cxzq")); })];
|
|
110
110
|
case 3:
|
|
111
|
-
_d = [__assign.apply(void 0, _c.concat([(
|
|
111
|
+
_d = [__assign.apply(void 0, _c.concat([(_s.sent()).default]))];
|
|
112
112
|
return [4 /*yield*/, Promise.resolve().then(function () { return __importStar(require("./profession/crh-app-sdk-cxzq")); })];
|
|
113
113
|
case 4:
|
|
114
|
-
_a.sdkObj = __assign.apply(void 0, _d.concat([(
|
|
114
|
+
_a.sdkObj = __assign.apply(void 0, _d.concat([(_s.sent()).default]));
|
|
115
115
|
console.log(this.sdkObj, "sdkObj---jssdk");
|
|
116
116
|
this.isApp = this.sdkObj.isApp();
|
|
117
117
|
this.webviewType = this.sdkObj.webviewType();
|
|
118
|
-
return [3 /*break*/,
|
|
118
|
+
return [3 /*break*/, 19];
|
|
119
119
|
case 5:
|
|
120
120
|
if (!(+this.sdkType === 3)) return [3 /*break*/, 7];
|
|
121
121
|
_e = this;
|
|
122
122
|
_f = [{}];
|
|
123
123
|
return [4 /*yield*/, Promise.resolve().then(function () { return __importStar(require("./user/crh-app-sdk-cy")); })];
|
|
124
124
|
case 6:
|
|
125
|
-
_e.sdkObj = __assign.apply(void 0, _f.concat([(
|
|
125
|
+
_e.sdkObj = __assign.apply(void 0, _f.concat([(_s.sent()).default]));
|
|
126
126
|
console.log(this.sdkObj, "sdkObj---jssdk");
|
|
127
127
|
this.isApp = this.sdkObj.isApp();
|
|
128
128
|
this.webviewType = this.sdkObj.webviewType();
|
|
129
|
-
return [3 /*break*/,
|
|
129
|
+
return [3 /*break*/, 19];
|
|
130
130
|
case 7:
|
|
131
131
|
if (!(+this.sdkType === 4)) return [3 /*break*/, 15];
|
|
132
132
|
console.log("初始化联储证券SDK...");
|
|
133
133
|
if (!(typeof window !== "undefined" &&
|
|
134
134
|
window.ClientTHS &&
|
|
135
135
|
typeof window.ClientTHS.init === "function")) return [3 /*break*/, 11];
|
|
136
|
-
|
|
136
|
+
_s.label = 8;
|
|
137
137
|
case 8:
|
|
138
|
-
|
|
139
|
-
return [4 /*yield*/, ((
|
|
138
|
+
_s.trys.push([8, 10, , 11]);
|
|
139
|
+
return [4 /*yield*/, ((_r = (_q = window.ClientTHS).init) === null || _r === void 0 ? void 0 : _r.call(_q))];
|
|
140
140
|
case 9:
|
|
141
|
-
|
|
141
|
+
_s.sent();
|
|
142
142
|
console.log("ClientTHS初始化完成");
|
|
143
143
|
return [3 /*break*/, 11];
|
|
144
144
|
case 10:
|
|
145
|
-
error_1 =
|
|
145
|
+
error_1 = _s.sent();
|
|
146
146
|
console.error("ClientTHS初始化失败:", error_1);
|
|
147
147
|
return [3 /*break*/, 11];
|
|
148
148
|
case 11:
|
|
@@ -151,19 +151,39 @@ var BUSINESS = /** @class */ (function () {
|
|
|
151
151
|
_h = [__assign({}, Obj)];
|
|
152
152
|
return [4 /*yield*/, Promise.resolve().then(function () { return __importStar(require("./base/crh-app-sdk-lczq")); })];
|
|
153
153
|
case 12:
|
|
154
|
-
_j = [__assign.apply(void 0, _h.concat([(
|
|
154
|
+
_j = [__assign.apply(void 0, _h.concat([(_s.sent()).default]))];
|
|
155
155
|
return [4 /*yield*/, Promise.resolve().then(function () { return __importStar(require("./user/crh-app-sdk-lczq")); })];
|
|
156
156
|
case 13:
|
|
157
|
-
_k = [__assign.apply(void 0, _j.concat([(
|
|
157
|
+
_k = [__assign.apply(void 0, _j.concat([(_s.sent()).default]))];
|
|
158
158
|
return [4 /*yield*/, Promise.resolve().then(function () { return __importStar(require("./profession/crh-app-sdk-lczq")); })];
|
|
159
159
|
case 14:
|
|
160
160
|
// 联储证券使用Bridge版本
|
|
161
|
-
_g.sdkObj = __assign.apply(void 0, _k.concat([(
|
|
161
|
+
_g.sdkObj = __assign.apply(void 0, _k.concat([(_s.sent()).default]));
|
|
162
162
|
console.log("sdkObj---jssdk(Bridge版本)", this.sdkObj);
|
|
163
163
|
this.isApp = this.sdkObj.isApp();
|
|
164
164
|
this.webviewType = this.sdkObj.webviewType();
|
|
165
|
-
|
|
165
|
+
return [3 /*break*/, 19];
|
|
166
166
|
case 15:
|
|
167
|
+
if (!(+this.sdkType === 5)) return [3 /*break*/, 19];
|
|
168
|
+
console.log("初始化金圆统一SDK...");
|
|
169
|
+
// 金圆统一使用Bridge版本
|
|
170
|
+
_l = this;
|
|
171
|
+
_m = [__assign({}, Obj)];
|
|
172
|
+
return [4 /*yield*/, Promise.resolve().then(function () { return __importStar(require("./base/crh-app-sdk-jy")); })];
|
|
173
|
+
case 16:
|
|
174
|
+
_o = [__assign.apply(void 0, _m.concat([(_s.sent()).default]))];
|
|
175
|
+
return [4 /*yield*/, Promise.resolve().then(function () { return __importStar(require("./user/crh-app-sdk-jy")); })];
|
|
176
|
+
case 17:
|
|
177
|
+
_p = [__assign.apply(void 0, _o.concat([(_s.sent()).default]))];
|
|
178
|
+
return [4 /*yield*/, Promise.resolve().then(function () { return __importStar(require("./profession/crh-app-sdk-jy")); })];
|
|
179
|
+
case 18:
|
|
180
|
+
// 金圆统一使用Bridge版本
|
|
181
|
+
_l.sdkObj = __assign.apply(void 0, _p.concat([(_s.sent()).default]));
|
|
182
|
+
console.log("sdkObj---jssdk(金圆统一)", this.sdkObj);
|
|
183
|
+
this.isApp = this.sdkObj.isApp();
|
|
184
|
+
this.webviewType = this.sdkObj.webviewType();
|
|
185
|
+
_s.label = 19;
|
|
186
|
+
case 19:
|
|
167
187
|
// 设置Bridge实例到sdkObj中,供各模块使用
|
|
168
188
|
if (this.sdkObj) {
|
|
169
189
|
this.sdkObj.bridge = this.bridge;
|
|
@@ -342,11 +362,11 @@ var BUSINESS = /** @class */ (function () {
|
|
|
342
362
|
}
|
|
343
363
|
return this.sdkObj.doOpenBrowser(url);
|
|
344
364
|
};
|
|
345
|
-
//获取Bridge实例(仅限联储证券lczq使用)
|
|
365
|
+
//获取Bridge实例(仅限联储证券lczq和金圆统一jy使用)
|
|
346
366
|
BUSINESS.prototype.getBridge = function () {
|
|
347
|
-
// 只允许 sdkType === 4 (联储证券) 使用 getBridge 方法
|
|
348
|
-
if (+this.sdkType !== 4) {
|
|
349
|
-
console.warn("getBridge method is only available for lczq (sdkType: 4)");
|
|
367
|
+
// 只允许 sdkType === 4 (联储证券) 和 sdkType === 5 (金圆统一) 使用 getBridge 方法
|
|
368
|
+
if (+this.sdkType !== 4 && +this.sdkType !== 5) {
|
|
369
|
+
console.warn("getBridge method is only available for lczq (sdkType: 4) or jy (sdkType: 5)");
|
|
350
370
|
return null;
|
|
351
371
|
}
|
|
352
372
|
if (!this.sdkObj.getBridge) {
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @description 金圆统一业务模块 - Bridge版本
|
|
4
|
+
* 基于WebViewJavascriptBridge实现业务功能
|
|
5
|
+
*/
|
|
6
|
+
var __assign = (this && this.__assign) || function () {
|
|
7
|
+
__assign = Object.assign || function(t) {
|
|
8
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
9
|
+
s = arguments[i];
|
|
10
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
11
|
+
t[p] = s[p];
|
|
12
|
+
}
|
|
13
|
+
return t;
|
|
14
|
+
};
|
|
15
|
+
return __assign.apply(this, arguments);
|
|
16
|
+
};
|
|
17
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
18
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
19
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
20
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
21
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
22
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
23
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
24
|
+
});
|
|
25
|
+
};
|
|
26
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
27
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
28
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
29
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
30
|
+
function step(op) {
|
|
31
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
32
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
33
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
34
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
35
|
+
switch (op[0]) {
|
|
36
|
+
case 0: case 1: t = op; break;
|
|
37
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
38
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
39
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
40
|
+
default:
|
|
41
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
42
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
43
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
44
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
45
|
+
if (t[2]) _.ops.pop();
|
|
46
|
+
_.trys.pop(); continue;
|
|
47
|
+
}
|
|
48
|
+
op = body.call(thisArg, _);
|
|
49
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
50
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
54
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
55
|
+
};
|
|
56
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
57
|
+
var utils_1 = require("../utils");
|
|
58
|
+
var crh_app_sdk_jy_1 = __importDefault(require("../base/crh-app-sdk-jy"));
|
|
59
|
+
exports.default = {
|
|
60
|
+
/**
|
|
61
|
+
* 获取客户端用户和设备信息
|
|
62
|
+
* @param type 调用类型:'fetch'仅获取信息,'login'未登录时拉起登录
|
|
63
|
+
*/
|
|
64
|
+
getDeviceInfo: function () {
|
|
65
|
+
return __awaiter(this, arguments, void 0, function (type) {
|
|
66
|
+
var params, response, deviceInfo_1, mobileInfo, error_1;
|
|
67
|
+
if (type === void 0) { type = "fetch"; }
|
|
68
|
+
return __generator(this, function (_a) {
|
|
69
|
+
switch (_a.label) {
|
|
70
|
+
case 0:
|
|
71
|
+
console.log("金圆统一 getDeviceInfo----");
|
|
72
|
+
_a.label = 1;
|
|
73
|
+
case 1:
|
|
74
|
+
_a.trys.push([1, 3, , 4]);
|
|
75
|
+
params = {
|
|
76
|
+
info_type: "wt",
|
|
77
|
+
call_type: type,
|
|
78
|
+
info_complete_check: "0",
|
|
79
|
+
key_type: "lccommon",
|
|
80
|
+
needEncryptTraceInfo: true,
|
|
81
|
+
};
|
|
82
|
+
console.log("金圆统一调用getDeviceInfo,参数:", params);
|
|
83
|
+
return [4 /*yield*/, utils_1.jyBridge.bridgeCallHandler("Promise", "getUserInfoByRsa", params)];
|
|
84
|
+
case 2:
|
|
85
|
+
response = _a.sent();
|
|
86
|
+
console.log("金圆统一 getDeviceInfo 返回:", response);
|
|
87
|
+
deviceInfo_1 = {};
|
|
88
|
+
if (response && response.mobile_hardware) {
|
|
89
|
+
mobileInfo = response.mobile_hardware
|
|
90
|
+
.replace("HDInfo=", "")
|
|
91
|
+
.split(",");
|
|
92
|
+
mobileInfo.forEach(function (item) {
|
|
93
|
+
var index = item.indexOf(":");
|
|
94
|
+
if (index > 0) {
|
|
95
|
+
deviceInfo_1[item.substring(0, index)] = item.substring(index + 1);
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
return [2 /*return*/, __assign(__assign({}, response), { deviceInfo: deviceInfo_1, isLogin: (response === null || response === void 0 ? void 0 : response.login_status) === "1", token: (response === null || response === void 0 ? void 0 : response.param) || "", fundAccount: "", mobile: deviceInfo_1.RMRN || "" })];
|
|
100
|
+
case 3:
|
|
101
|
+
error_1 = _a.sent();
|
|
102
|
+
console.error("金圆统一获取设备信息失败:", error_1);
|
|
103
|
+
return [2 /*return*/, {
|
|
104
|
+
error: (error_1 === null || error_1 === void 0 ? void 0 : error_1.message) || "未知错误",
|
|
105
|
+
}];
|
|
106
|
+
case 4: return [2 /*return*/];
|
|
107
|
+
}
|
|
108
|
+
});
|
|
109
|
+
});
|
|
110
|
+
},
|
|
111
|
+
/**
|
|
112
|
+
* 银证转账
|
|
113
|
+
* @param version 支持半屏转账的版本号
|
|
114
|
+
* @param callbackName 回调函数
|
|
115
|
+
*/
|
|
116
|
+
goBankTransfer: function () {
|
|
117
|
+
return __awaiter(this, arguments, void 0, function (version, callbackName) {
|
|
118
|
+
if (version === void 0) { version = "7.2.0"; }
|
|
119
|
+
return __generator(this, function (_a) {
|
|
120
|
+
try {
|
|
121
|
+
// 金圆统一使用 client:// 协议跳转到银证转账页面
|
|
122
|
+
// 银证转账页面路由: jiaoyi_dyh_yzzz
|
|
123
|
+
console.log("金圆统一调用银证转账");
|
|
124
|
+
location.href = "client://hxsecurity.frame.router/jiaoyi_dyh_yzzz";
|
|
125
|
+
return [2 /*return*/, { success: true }];
|
|
126
|
+
}
|
|
127
|
+
catch (error) {
|
|
128
|
+
console.error("金圆统一银证转账失败:", error);
|
|
129
|
+
return [2 /*return*/, { success: false, error: error }];
|
|
130
|
+
}
|
|
131
|
+
return [2 /*return*/];
|
|
132
|
+
});
|
|
133
|
+
});
|
|
134
|
+
},
|
|
135
|
+
/**
|
|
136
|
+
* app各种方法:交易密码登录框、银证转账充值等
|
|
137
|
+
* @param url action路径
|
|
138
|
+
* @param callback 回调函数
|
|
139
|
+
*/
|
|
140
|
+
businessAlertView: function (url, callback) {
|
|
141
|
+
console.log("金圆统一 businessAlertView:", url, callback);
|
|
142
|
+
// 金圆统一使用 Bridge 通信,这种方式可能需要特殊处理
|
|
143
|
+
// 这里暂时不支持,如果需要可以扩展
|
|
144
|
+
return Promise.resolve({
|
|
145
|
+
error_no: "-1",
|
|
146
|
+
error_info: "金圆统一暂不支持该方法",
|
|
147
|
+
});
|
|
148
|
+
},
|
|
149
|
+
/**
|
|
150
|
+
* 产品收藏
|
|
151
|
+
* @param params 收藏参数
|
|
152
|
+
*/
|
|
153
|
+
setCollect: function (params) {
|
|
154
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
155
|
+
return __generator(this, function (_a) {
|
|
156
|
+
console.log("金圆统一 setCollect", params);
|
|
157
|
+
// 金圆统一暂不支持产品收藏功能
|
|
158
|
+
return [2 /*return*/, Promise.resolve({
|
|
159
|
+
error_no: "-1",
|
|
160
|
+
error_info: "金圆统一暂不支持产品收藏功能",
|
|
161
|
+
})];
|
|
162
|
+
});
|
|
163
|
+
});
|
|
164
|
+
},
|
|
165
|
+
/**
|
|
166
|
+
* 查询产品收藏
|
|
167
|
+
* @param params 查询参数
|
|
168
|
+
*/
|
|
169
|
+
queryCollect: function (params) {
|
|
170
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
171
|
+
return __generator(this, function (_a) {
|
|
172
|
+
console.log("金圆统一 queryCollect", params);
|
|
173
|
+
// 金圆统一暂不支持产品收藏功能
|
|
174
|
+
return [2 /*return*/, Promise.resolve({
|
|
175
|
+
error_no: "-1",
|
|
176
|
+
error_info: "金圆统一暂不支持产品收藏功能",
|
|
177
|
+
})];
|
|
178
|
+
});
|
|
179
|
+
});
|
|
180
|
+
},
|
|
181
|
+
/**
|
|
182
|
+
* 设置原生状态栏颜色
|
|
183
|
+
* @param params 状态栏参数
|
|
184
|
+
*/
|
|
185
|
+
setStatusBar: function (params) {
|
|
186
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
187
|
+
return __generator(this, function (_a) {
|
|
188
|
+
console.log("金圆统一 profession setStatusBar", params);
|
|
189
|
+
return [2 /*return*/, crh_app_sdk_jy_1.default.setStatusBar(params)];
|
|
190
|
+
});
|
|
191
|
+
});
|
|
192
|
+
},
|
|
193
|
+
/**
|
|
194
|
+
* 跳转财人汇SDK页面(金圆定制)
|
|
195
|
+
* @param params 跳转参数
|
|
196
|
+
*/
|
|
197
|
+
doOpenCRHSDK: function (params) {
|
|
198
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
199
|
+
return __generator(this, function (_a) {
|
|
200
|
+
return [2 /*return*/, crh_app_sdk_jy_1.default.doOpenCRHSDK(params)];
|
|
201
|
+
});
|
|
202
|
+
});
|
|
203
|
+
},
|
|
204
|
+
};
|
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @description 金圆统一用户模块 - Bridge版本
|
|
4
|
+
* 基于WebViewJavascriptBridge实现与金圆统一App的通信
|
|
5
|
+
* 文档参考: 金圆统一-财人汇网页js交互说明
|
|
6
|
+
*/
|
|
7
|
+
var __assign = (this && this.__assign) || function () {
|
|
8
|
+
__assign = Object.assign || function(t) {
|
|
9
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
10
|
+
s = arguments[i];
|
|
11
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
12
|
+
t[p] = s[p];
|
|
13
|
+
}
|
|
14
|
+
return t;
|
|
15
|
+
};
|
|
16
|
+
return __assign.apply(this, arguments);
|
|
17
|
+
};
|
|
18
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
19
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
20
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
21
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
22
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
23
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
24
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
25
|
+
});
|
|
26
|
+
};
|
|
27
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
28
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
29
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
30
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
31
|
+
function step(op) {
|
|
32
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
33
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
34
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
35
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
36
|
+
switch (op[0]) {
|
|
37
|
+
case 0: case 1: t = op; break;
|
|
38
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
39
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
40
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
41
|
+
default:
|
|
42
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
43
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
44
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
45
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
46
|
+
if (t[2]) _.ops.pop();
|
|
47
|
+
_.trys.pop(); continue;
|
|
48
|
+
}
|
|
49
|
+
op = body.call(thisArg, _);
|
|
50
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
51
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
55
|
+
var utils_1 = require("../utils");
|
|
56
|
+
// 金圆统一 AppId
|
|
57
|
+
var APPID = "b5bae4daa01aa0c2";
|
|
58
|
+
exports.default = {
|
|
59
|
+
/**
|
|
60
|
+
* 获取用户登录信息(静默获取,不会弹窗)
|
|
61
|
+
* @param callType 调用类型:'fetch'仅获取信息,'login'未登录时拉起登录
|
|
62
|
+
* @returns 用户信息,包含加密的param字段(需后端解密)
|
|
63
|
+
*/
|
|
64
|
+
getUser: function () {
|
|
65
|
+
return __awaiter(this, arguments, void 0, function (callType) {
|
|
66
|
+
var params, response, encryptedParam, error_1;
|
|
67
|
+
if (callType === void 0) { callType = "fetch"; }
|
|
68
|
+
return __generator(this, function (_a) {
|
|
69
|
+
switch (_a.label) {
|
|
70
|
+
case 0:
|
|
71
|
+
_a.trys.push([0, 2, , 3]);
|
|
72
|
+
params = {
|
|
73
|
+
info_type: "wt", // wt返回交易信息
|
|
74
|
+
call_type: callType,
|
|
75
|
+
info_complete_check: "0",
|
|
76
|
+
key_type: "lccommon",
|
|
77
|
+
needEncryptTraceInfo: true,
|
|
78
|
+
};
|
|
79
|
+
console.log("金圆统一调用getUserInfoByRsa,参数:", params);
|
|
80
|
+
return [4 /*yield*/, utils_1.jyBridge.bridgeCallHandler("Promise", "getUserInfoByRsa", params)];
|
|
81
|
+
case 1:
|
|
82
|
+
response = _a.sent();
|
|
83
|
+
console.log("金圆统一 getUserInfoByRsa 返回:", response);
|
|
84
|
+
// 处理各种可能的响应情况
|
|
85
|
+
if (!response) {
|
|
86
|
+
console.log("金圆统一获取用户信息失败: 无响应");
|
|
87
|
+
return [2 /*return*/, {
|
|
88
|
+
login_status: "0",
|
|
89
|
+
isLogin: false,
|
|
90
|
+
token: "",
|
|
91
|
+
fundAccount: "",
|
|
92
|
+
mobile: "",
|
|
93
|
+
error: "无响应",
|
|
94
|
+
}];
|
|
95
|
+
}
|
|
96
|
+
encryptedParam = response.param || "";
|
|
97
|
+
if (response.login_status === "0") {
|
|
98
|
+
console.log("金圆统一用户未登录:", response);
|
|
99
|
+
return [2 /*return*/, {
|
|
100
|
+
login_status: "0",
|
|
101
|
+
isLogin: false,
|
|
102
|
+
token: encryptedParam,
|
|
103
|
+
param: encryptedParam,
|
|
104
|
+
fundAccount: "",
|
|
105
|
+
mobile: "",
|
|
106
|
+
}];
|
|
107
|
+
}
|
|
108
|
+
else if (response.login_status === "1") {
|
|
109
|
+
console.log("金圆统一用户已登录:", response);
|
|
110
|
+
return [2 /*return*/, __assign(__assign({}, response), { isLogin: true, token: encryptedParam, param: encryptedParam, fundAccount: "", mobile: "" })];
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
console.log("金圆统一用户登录状态未知:", response);
|
|
114
|
+
return [2 /*return*/, __assign(__assign({}, response), { isLogin: false, token: encryptedParam, param: encryptedParam, mobile: "" })];
|
|
115
|
+
}
|
|
116
|
+
return [3 /*break*/, 3];
|
|
117
|
+
case 2:
|
|
118
|
+
error_1 = _a.sent();
|
|
119
|
+
console.error("金圆统一获取用户信息失败:", error_1);
|
|
120
|
+
return [2 /*return*/, {
|
|
121
|
+
login_status: "0",
|
|
122
|
+
isLogin: false,
|
|
123
|
+
token: "",
|
|
124
|
+
fundAccount: "",
|
|
125
|
+
mobile: "",
|
|
126
|
+
error: (error_1 === null || error_1 === void 0 ? void 0 : error_1.message) || "未知错误",
|
|
127
|
+
}];
|
|
128
|
+
case 3: return [2 /*return*/];
|
|
129
|
+
}
|
|
130
|
+
});
|
|
131
|
+
});
|
|
132
|
+
},
|
|
133
|
+
/**
|
|
134
|
+
* 获取交易登录Token(未登录时会弹出登录框)
|
|
135
|
+
* 返回加密的param字段,传入 tradeFlowLogin 接口进行登录
|
|
136
|
+
* @param appidOrOptions 应用ID字符串,或包含appId和accountType的对象
|
|
137
|
+
* @returns 加密的token字符串(param),用于传给后端解密登录
|
|
138
|
+
*/
|
|
139
|
+
getTradeLoginToken: function (appidOrOptions) {
|
|
140
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
141
|
+
var appId, params, response, error_2;
|
|
142
|
+
return __generator(this, function (_a) {
|
|
143
|
+
switch (_a.label) {
|
|
144
|
+
case 0:
|
|
145
|
+
_a.trys.push([0, 2, , 3]);
|
|
146
|
+
appId = APPID;
|
|
147
|
+
if (typeof appidOrOptions === "string") {
|
|
148
|
+
appId = appidOrOptions;
|
|
149
|
+
}
|
|
150
|
+
else if (appidOrOptions && typeof appidOrOptions === "object") {
|
|
151
|
+
appId = appidOrOptions.appId || APPID;
|
|
152
|
+
}
|
|
153
|
+
params = {
|
|
154
|
+
info_type: "wt",
|
|
155
|
+
call_type: "login", // 使用login会拉起登录
|
|
156
|
+
info_complete_check: "0",
|
|
157
|
+
key_type: "lccommon",
|
|
158
|
+
needEncryptTraceInfo: true,
|
|
159
|
+
appId: appId,
|
|
160
|
+
};
|
|
161
|
+
console.log("金圆统一获取交易登录Token,参数:", params);
|
|
162
|
+
return [4 /*yield*/, utils_1.jyBridge.bridgeCallHandler("Promise", "getUserInfoByRsa", params)];
|
|
163
|
+
case 1:
|
|
164
|
+
response = _a.sent();
|
|
165
|
+
console.log("金圆统一 getUserInfoByRsa 登录响应:", response);
|
|
166
|
+
// 返回加密的param作为token
|
|
167
|
+
if (response && response.login_status === "1" && response.param) {
|
|
168
|
+
console.log("金圆统一获取交易Token成功,返回加密param");
|
|
169
|
+
return [2 /*return*/, response.param];
|
|
170
|
+
}
|
|
171
|
+
else {
|
|
172
|
+
console.log("金圆统一获取交易Token失败,响应:", response);
|
|
173
|
+
return [2 /*return*/, ""];
|
|
174
|
+
}
|
|
175
|
+
return [3 /*break*/, 3];
|
|
176
|
+
case 2:
|
|
177
|
+
error_2 = _a.sent();
|
|
178
|
+
console.error("金圆统一获取交易登录Token失败:", error_2);
|
|
179
|
+
return [2 /*return*/, ""];
|
|
180
|
+
case 3: return [2 /*return*/];
|
|
181
|
+
}
|
|
182
|
+
});
|
|
183
|
+
});
|
|
184
|
+
},
|
|
185
|
+
/**
|
|
186
|
+
* 获取手机号Token
|
|
187
|
+
* @returns 加密的token字符串
|
|
188
|
+
*/
|
|
189
|
+
getPhoneToken: function () {
|
|
190
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
191
|
+
var params, response, error_3;
|
|
192
|
+
return __generator(this, function (_a) {
|
|
193
|
+
switch (_a.label) {
|
|
194
|
+
case 0:
|
|
195
|
+
_a.trys.push([0, 2, , 3]);
|
|
196
|
+
params = {
|
|
197
|
+
info_type: "hq", // 获取信息,只需要手机号
|
|
198
|
+
call_type: "fetch",
|
|
199
|
+
info_complete_check: "0",
|
|
200
|
+
key_type: "lccommon",
|
|
201
|
+
needEncryptTraceInfo: true,
|
|
202
|
+
appId: APPID,
|
|
203
|
+
tokenRetry: true,
|
|
204
|
+
};
|
|
205
|
+
console.log("金圆统一获取手机号Token,参数:", params);
|
|
206
|
+
return [4 /*yield*/, utils_1.jyBridge.bridgeCallHandler("Promise", "getUserInfoByRsa", params)];
|
|
207
|
+
case 1:
|
|
208
|
+
response = _a.sent();
|
|
209
|
+
if (response && response.param) {
|
|
210
|
+
console.log("金圆统一获取手机号Token成功");
|
|
211
|
+
return [2 /*return*/, "".concat(response.param, ",").concat(APPID)];
|
|
212
|
+
}
|
|
213
|
+
else {
|
|
214
|
+
console.log("金圆统一获取手机号Token失败");
|
|
215
|
+
return [2 /*return*/, ""];
|
|
216
|
+
}
|
|
217
|
+
return [3 /*break*/, 3];
|
|
218
|
+
case 2:
|
|
219
|
+
error_3 = _a.sent();
|
|
220
|
+
console.error("金圆统一获取手机号Token失败:", error_3);
|
|
221
|
+
return [2 /*return*/, ""];
|
|
222
|
+
case 3: return [2 /*return*/];
|
|
223
|
+
}
|
|
224
|
+
});
|
|
225
|
+
});
|
|
226
|
+
},
|
|
227
|
+
};
|
|
@@ -1,10 +1,233 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/**
|
|
3
3
|
* @description Bridge通信基础类
|
|
4
|
-
*
|
|
4
|
+
* 支持两种模式:
|
|
5
|
+
* 1. WebViewJavascriptBridge - 通用模式(其他券商)
|
|
6
|
+
* 2. ClientTHS - 同花顺ClientTHS SDK模式(金圆统一)
|
|
5
7
|
*/
|
|
6
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.globalBridge = exports.Bridge = void 0;
|
|
9
|
+
exports.JYClientTHS = exports.jyBridge = exports.globalBridge = exports.Bridge = exports.JYBridge = void 0;
|
|
10
|
+
/**
|
|
11
|
+
* ClientTHS全局桥接对象
|
|
12
|
+
* 实现同花顺客户端提供的ClientTHS SDK方式
|
|
13
|
+
* 文档参考: client-demo/sdk/ClientTemplate.js
|
|
14
|
+
*/
|
|
15
|
+
var JYClientTHS = {
|
|
16
|
+
/**
|
|
17
|
+
* 初始化Bridge连接
|
|
18
|
+
* 与ClientTemplate.js保持一致
|
|
19
|
+
*/
|
|
20
|
+
init: function () {
|
|
21
|
+
try {
|
|
22
|
+
this.connectWebViewJavascriptBridge(function (bridge) {
|
|
23
|
+
bridge.init(function () { });
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
catch (e) {
|
|
27
|
+
console.log('JYClientTHS init error:', e);
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
/**
|
|
31
|
+
* 连接WebViewJavascriptBridge
|
|
32
|
+
* 实现逻辑与ClientTemplate.js保持一致
|
|
33
|
+
*/
|
|
34
|
+
connectWebViewJavascriptBridge: function (callback) {
|
|
35
|
+
// 如果Bridge已存在,直接使用
|
|
36
|
+
if (window.WebViewJavascriptBridge) {
|
|
37
|
+
callback(window.WebViewJavascriptBridge);
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
// iOS设备:监听BridgeReady事件或通过iframe触发
|
|
41
|
+
// 与ClientTemplate.js保持一致的实现
|
|
42
|
+
if (!/Android/.test(navigator.userAgent)) {
|
|
43
|
+
// 监听BridgeReady事件
|
|
44
|
+
document.addEventListener('WebViewJavascriptBridgeReady', function () {
|
|
45
|
+
callback(window.WebViewJavascriptBridge);
|
|
46
|
+
}, false);
|
|
47
|
+
// 如果已存在WVJBCallbacks,加入回调队列
|
|
48
|
+
if (window.WVJBCallbacks) {
|
|
49
|
+
window.WVJBCallbacks.push(callback);
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
// 创建回调队列并通过iframe触发Bridge加载
|
|
53
|
+
window.WVJBCallbacks = [callback];
|
|
54
|
+
var iframe_1 = document.createElement('iframe');
|
|
55
|
+
iframe_1.style.display = 'none';
|
|
56
|
+
iframe_1.src = 'wvjbscheme://__BRIDGE_LOADED__';
|
|
57
|
+
document.documentElement.appendChild(iframe_1);
|
|
58
|
+
setTimeout(function () {
|
|
59
|
+
document.documentElement.removeChild(iframe_1);
|
|
60
|
+
}, 0);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
/**
|
|
65
|
+
* 调用App方法
|
|
66
|
+
* 与ClientTemplate.js保持一致
|
|
67
|
+
*/
|
|
68
|
+
bridgeCallHandler: function (name, params, callback) {
|
|
69
|
+
if (name === void 0) { name = ''; }
|
|
70
|
+
if (params === void 0) { params = {}; }
|
|
71
|
+
try {
|
|
72
|
+
this.connectWebViewJavascriptBridge(function (bridge) {
|
|
73
|
+
bridge.callHandler(name, params, function (response) {
|
|
74
|
+
console.log('bridgeCallHandler:', response);
|
|
75
|
+
if (callback && response) {
|
|
76
|
+
callback(response);
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
catch (e) {
|
|
82
|
+
console.log('bridgeCallHandler error:', e);
|
|
83
|
+
}
|
|
84
|
+
},
|
|
85
|
+
/**
|
|
86
|
+
* 注册方法给App调用
|
|
87
|
+
* 与ClientTemplate.js保持一致
|
|
88
|
+
*/
|
|
89
|
+
registerHandler: function (name, callback) {
|
|
90
|
+
if (name === void 0) { name = ''; }
|
|
91
|
+
try {
|
|
92
|
+
this.connectWebViewJavascriptBridge(function (bridge) {
|
|
93
|
+
bridge.registerHandler(name, function (data, responseCallback) {
|
|
94
|
+
console.log('registerHandler:', data);
|
|
95
|
+
if (callback) {
|
|
96
|
+
callback(data);
|
|
97
|
+
}
|
|
98
|
+
if (responseCallback) {
|
|
99
|
+
responseCallback('JavaScript Says Right back aka!');
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
catch (e) {
|
|
105
|
+
console.log('registerHandler error:', e);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
};
|
|
109
|
+
exports.JYClientTHS = JYClientTHS;
|
|
110
|
+
/**
|
|
111
|
+
* 金圆统一专用Bridge类
|
|
112
|
+
* 使用ClientTHS方式进行桥接通信
|
|
113
|
+
* sdkType: 5
|
|
114
|
+
*/
|
|
115
|
+
var JYBridge = /** @class */ (function () {
|
|
116
|
+
function JYBridge() {
|
|
117
|
+
this.bridge = null;
|
|
118
|
+
this.initPromise = null;
|
|
119
|
+
this.initPromise = this.init();
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* 初始化Bridge连接
|
|
123
|
+
* 使用ClientTHS初始化方式
|
|
124
|
+
*/
|
|
125
|
+
JYBridge.prototype.init = function () {
|
|
126
|
+
var _this = this;
|
|
127
|
+
return new Promise(function (resolve) {
|
|
128
|
+
// 使用ClientTHS初始化(与ClientTemplate.js一致)
|
|
129
|
+
JYClientTHS.init();
|
|
130
|
+
// 等待WebViewJavascriptBridgeReady事件
|
|
131
|
+
var checkBridge = function () {
|
|
132
|
+
if (window.WebViewJavascriptBridge) {
|
|
133
|
+
_this.bridge = window.WebViewJavascriptBridge;
|
|
134
|
+
console.log('JYBridge 初始化完成');
|
|
135
|
+
resolve();
|
|
136
|
+
}
|
|
137
|
+
else {
|
|
138
|
+
setTimeout(checkBridge, 100);
|
|
139
|
+
}
|
|
140
|
+
};
|
|
141
|
+
checkBridge();
|
|
142
|
+
});
|
|
143
|
+
};
|
|
144
|
+
/**
|
|
145
|
+
* 调用App方法(Promise版本)
|
|
146
|
+
* @param type 预留类型参数
|
|
147
|
+
* @param name 方法名
|
|
148
|
+
* @param params 参数
|
|
149
|
+
*/
|
|
150
|
+
JYBridge.prototype.bridgeCallHandler = function (type, name, params) {
|
|
151
|
+
if (type === void 0) { type = ''; }
|
|
152
|
+
if (name === void 0) { name = ''; }
|
|
153
|
+
if (params === void 0) { params = {}; }
|
|
154
|
+
if (type === 'Promise') {
|
|
155
|
+
return new Promise(function (resolve, reject) {
|
|
156
|
+
try {
|
|
157
|
+
JYClientTHS.bridgeCallHandler(name, params, function (response) {
|
|
158
|
+
// 只要有响应就 resolve,即使是空对象或只有 login_status
|
|
159
|
+
// getUserInfoByRsa 未登录时返回 { login_status: "0" }
|
|
160
|
+
if (response !== undefined && response !== null) {
|
|
161
|
+
resolve(response);
|
|
162
|
+
}
|
|
163
|
+
else {
|
|
164
|
+
reject(new Error("\u8C03\u7528".concat(name, "\u65B9\u6CD5\u5931\u8D25\u4E86!")));
|
|
165
|
+
}
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
catch (e) {
|
|
169
|
+
reject(e);
|
|
170
|
+
}
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
// 非Promise版本
|
|
174
|
+
try {
|
|
175
|
+
JYClientTHS.bridgeCallHandler(name, params);
|
|
176
|
+
}
|
|
177
|
+
catch (e) {
|
|
178
|
+
console.error('bridgeCallHandler error:', e);
|
|
179
|
+
}
|
|
180
|
+
return Promise.resolve();
|
|
181
|
+
};
|
|
182
|
+
/**
|
|
183
|
+
* 注册方法给App调用
|
|
184
|
+
*/
|
|
185
|
+
JYBridge.prototype.registerHandler = function (name, callback) {
|
|
186
|
+
if (name === void 0) { name = ''; }
|
|
187
|
+
if (callback === void 0) { callback = function () { }; }
|
|
188
|
+
try {
|
|
189
|
+
JYClientTHS.registerHandler(name, callback);
|
|
190
|
+
}
|
|
191
|
+
catch (e) {
|
|
192
|
+
console.error('registerHandler error:', e);
|
|
193
|
+
}
|
|
194
|
+
};
|
|
195
|
+
/**
|
|
196
|
+
* 检查Bridge是否已初始化
|
|
197
|
+
*/
|
|
198
|
+
JYBridge.prototype.isReady = function () {
|
|
199
|
+
return !!this.bridge;
|
|
200
|
+
};
|
|
201
|
+
/**
|
|
202
|
+
* 等待Bridge准备就绪
|
|
203
|
+
*/
|
|
204
|
+
JYBridge.prototype.waitForReady = function (timeout) {
|
|
205
|
+
if (timeout === void 0) { timeout = 5000; }
|
|
206
|
+
if (this.bridge) {
|
|
207
|
+
return Promise.resolve();
|
|
208
|
+
}
|
|
209
|
+
if (this.initPromise) {
|
|
210
|
+
return Promise.race([
|
|
211
|
+
this.initPromise,
|
|
212
|
+
new Promise(function (_, reject) {
|
|
213
|
+
setTimeout(function () { return reject(new Error('JYBridge初始化超时')); }, timeout);
|
|
214
|
+
})
|
|
215
|
+
]);
|
|
216
|
+
}
|
|
217
|
+
this.initPromise = this.init();
|
|
218
|
+
return Promise.race([
|
|
219
|
+
this.initPromise,
|
|
220
|
+
new Promise(function (_, reject) {
|
|
221
|
+
setTimeout(function () { return reject(new Error('JYBridge初始化超时')); }, timeout);
|
|
222
|
+
})
|
|
223
|
+
]);
|
|
224
|
+
};
|
|
225
|
+
return JYBridge;
|
|
226
|
+
}());
|
|
227
|
+
exports.JYBridge = JYBridge;
|
|
228
|
+
/**
|
|
229
|
+
* 原有的Bridge类(保持不变,用于其他券商)
|
|
230
|
+
*/
|
|
8
231
|
var Bridge = /** @class */ (function () {
|
|
9
232
|
function Bridge() {
|
|
10
233
|
this.bridge = null;
|
|
@@ -87,6 +310,7 @@ var Bridge = /** @class */ (function () {
|
|
|
87
310
|
};
|
|
88
311
|
/**
|
|
89
312
|
* 调用App方法(Promise版本)
|
|
313
|
+
* @param type 预留类型参数
|
|
90
314
|
* @param name 方法名
|
|
91
315
|
* @param params 参数
|
|
92
316
|
* @returns Promise
|
|
@@ -102,7 +326,7 @@ var Bridge = /** @class */ (function () {
|
|
|
102
326
|
// 如果Bridge已初始化,直接使用;否则等待初始化完成
|
|
103
327
|
var useBridge_1 = function (bridge) {
|
|
104
328
|
if (!bridge || typeof bridge.callHandler !== 'function') {
|
|
105
|
-
reject(new Error(
|
|
329
|
+
reject(new Error('Bridge未正确初始化或callHandler方法不存在'));
|
|
106
330
|
return;
|
|
107
331
|
}
|
|
108
332
|
bridge.callHandler(name, params, function (response) {
|
|
@@ -278,7 +502,11 @@ var Bridge = /** @class */ (function () {
|
|
|
278
502
|
exports.Bridge = Bridge;
|
|
279
503
|
// 全局Bridge实例
|
|
280
504
|
exports.globalBridge = new Bridge();
|
|
505
|
+
// 金圆统一专用Bridge实例
|
|
506
|
+
exports.jyBridge = new JYBridge();
|
|
281
507
|
// 导出给window对象,方便调试
|
|
282
508
|
if (typeof window !== 'undefined') {
|
|
283
509
|
window.JsBridge = exports.globalBridge;
|
|
510
|
+
window.JYBridge = exports.jyBridge;
|
|
511
|
+
window.ClientTHS = JYClientTHS;
|
|
284
512
|
}
|
|
@@ -36,7 +36,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
36
36
|
}
|
|
37
37
|
};
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
exports.globalBridge = exports.Bridge = exports.getContractTime = exports.parsOpStation = exports.ios = exports.empty = exports.common = void 0;
|
|
39
|
+
exports.JYClientTHS = exports.jyBridge = exports.JYBridge = exports.globalBridge = exports.Bridge = exports.getContractTime = exports.parsOpStation = exports.ios = exports.empty = exports.common = void 0;
|
|
40
40
|
exports.checkIsHarmonyOS = checkIsHarmonyOS;
|
|
41
41
|
exports.harmonyCallJsHandler = harmonyCallJsHandler;
|
|
42
42
|
//调用sdk通用方法
|
|
@@ -167,3 +167,6 @@ exports.getContractTime = getContractTime;
|
|
|
167
167
|
var bridge_1 = require("./bridge");
|
|
168
168
|
Object.defineProperty(exports, "Bridge", { enumerable: true, get: function () { return bridge_1.Bridge; } });
|
|
169
169
|
Object.defineProperty(exports, "globalBridge", { enumerable: true, get: function () { return bridge_1.globalBridge; } });
|
|
170
|
+
Object.defineProperty(exports, "JYBridge", { enumerable: true, get: function () { return bridge_1.JYBridge; } });
|
|
171
|
+
Object.defineProperty(exports, "jyBridge", { enumerable: true, get: function () { return bridge_1.jyBridge; } });
|
|
172
|
+
Object.defineProperty(exports, "JYClientTHS", { enumerable: true, get: function () { return bridge_1.JYClientTHS; } });
|