UNPKG

28.6 kBJavaScriptView Raw
1var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
2
3import jsonp from './../jsonp';
4import DB from './../DB';
5import Device from './../Device';
6import Toast from './../Toast/instance.js';
7import Alert from './../Alert/instance.js';
8import Loading from './../Loading/instance.js';
9import Preview from './../Preview/instance.js';
10import MediaUtil from './../MediaUtil';
11import FullScreen from './../FullScreen';
12
13if (!window._seeds_lang) window._seeds_lang = {}; // 国际化数据
14
15var Bridge = {
16 /**
17 * 基础功能:start
18 */
19 debug: false,
20 // 拨打电话
21 tel: function tel(number) {
22 if (Device.device === 'pc') {
23 this.showToast(window._seeds_lang['hint_only_mobile'] || '此功能仅可在手机中使用', { mask: false });
24 return;
25 }
26 if (isNaN(number)) return;
27 window.location.href = 'tel:' + number;
28 },
29 // 弹出toast
30 toast: null,
31 showToast: function showToast(msg) {
32 var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
33
34 if (!msg) return;
35 if (!this.toast) {
36 // 提示错误
37 this.toast = new Toast({
38 parent: document.body,
39 maskClass: 'mask toast-mask' + (params.mask === false ? ' toast-propagation' : ''),
40 toastClass: 'toast ' + (params.position ? params.position : 'middle'),
41 icon: params.icon || '',
42 html: msg,
43 delay: params.delay || 2000
44 });
45 } else {
46 this.toast.setHTML(msg);
47 this.toast.setMaskClassName('mask toast-mask' + (params.mask === false ? ' toast-propagation' : ''));
48 this.toast.setToastClassName('toast ' + (params.position ? params.position : 'middle'));
49 this.toast.setIcon(params.icon || '');
50 this.toast.setDelay(params.delay || 2000);
51 }
52 this.toast.show();
53 if (params.success) {
54 setTimeout(function () {
55 params.success();
56 }, params.delay ? Math.round(params.delay / 2) : 1000);
57 }
58 },
59 // 弹出loading
60 loading: null,
61 showLoading: function showLoading() {
62 var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
63
64 if (!this.loading) {
65 this.loading = new Loading({
66 caption: params.caption || window._seeds_lang['loading'] || '正在加载...',
67 type: params.type,
68 icon: params.icon || '',
69 maskCss: params.css || null
70 });
71 } else {
72 if (params.caption) this.loading.setCaption(params.caption);
73 if (params.type) this.loading.setType(params.type);
74 if (params.css) this.loading.setMaskCss(params.css);
75 if (params.icon) this.toast.setIcon(params.icon || '');
76 if (params.mask) this.loading.setMaskClassName('mask loading-mask ' + (params.mask === false ? ' loading-propagation' : ''));
77 }
78 this.loading.show();
79 },
80 hideLoading: function hideLoading() {
81 if (!this.loading) {
82 this.toast.showToast(window._seeds_lang['hint_hideloading_after_showloading'] || 'showLoading后才能hideLoading');
83 } else {
84 this.loading.hide();
85 }
86 },
87 // 弹出Alert
88 alert: null,
89 showAlert: function showAlert(msg) {
90 var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
91
92 if (!this.alert) {
93 this.alert = new Alert(_extends({}, params, {
94 html: msg,
95 onClickSubmit: function onClickSubmit(e) {
96 if (params.success) params.success(e);else e.hide();
97 }
98 }));
99 } else {
100 if (params) {
101 this.alert.reset();
102 for (var n in params) {
103 this.alert.params[n] = params[n];
104 }
105 this.alert.updateDOM();
106 this.alert.setHTML(msg);
107 }
108 }
109 this.alert.show();
110 },
111 // 弹出Confirm
112 confirm: null,
113 showConfirm: function showConfirm(msg) {
114 var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
115
116 if (!this.confirm) {
117 this.confirm = new Alert(_extends({}, params, {
118 html: msg,
119 onClickSubmit: function onClickSubmit(e) {
120 if (params.success) params.success(e);
121 },
122 onClickCancel: function onClickCancel(e) {
123 if (params.fail) params.fail(e);else e.hide();
124 }
125 }));
126 } else {
127 if (params) {
128 this.confirm.reset();
129 for (var n in params) {
130 this.confirm.params[n] = params[n];
131 }
132 this.confirm.updateDOM();
133 if (params.success) this.confirm.setOnClickSubmit(params.success);
134 if (params.fail) this.confirm.setOnClickCancel(params.fail);
135 }
136 this.confirm.setHTML(msg);
137 }
138 this.confirm.show();
139 },
140 /**
141 * 百度地图:获取当前位置名称,只支持gcj02
142 * @param {Object} params: {longitude: '', latitude: '', success: fn, fail: fn}
143 * @returns {Object} {address:'地址全称'}
144 */
145 getAddress: function getAddress() {
146 var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
147
148 var url = 'https://api.map.baidu.com/geocoder/v2/?callback=renderReverse&location=' + params.latitude + ',' + params.longitude + '&output=json&pois=1&ak=IlfRglMOvFxapn5eGrmAj65H&ret_coordtype=gcj02ll';
149 jsonp(url, null, function (err, data) {
150 if (err) {
151 if (params.fail) params.fail({ errMsg: 'getAddress:' + (window._seeds_lang['hint_address_failed'] || '获取地址失败, 请稍后重试') + err });
152 } else {
153 var addrs = {};
154 if (data.result && data.result.formatted_address) {
155 addrs.address = data.result.formatted_address;
156 if (params.success) params.success(addrs);
157 } else {
158 if (params.fail) params.fail({ errMsg: 'getAddress:' + (window._seeds_lang['hint_address_failed'] || '获取地址失败, 请稍后重试') });
159 }
160 }
161 });
162 },
163 /**
164 * 百度地图:获得天气
165 * @param {Object} params: {location: 'lng,lat|lng,lat|lng,lat' | '北京市|上海市', success: fn, fail: fn}
166 * @returns {Object} 天气信息results
167 */
168 getWeather: function getWeather() {
169 var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
170
171 var url = 'http://api.map.baidu.com/telematics/v3/weather?location=' + (params.location || '南京市') + '&output=json&ak=IlfRglMOvFxapn5eGrmAj65H';
172 jsonp(url, null, function (err, data) {
173 if (err) {
174 if (params.fail) params.fail({ errMsg: 'getWeather:' + (window._seeds_lang['hint_weather_failed'] || '获取天气失败, 请稍后重试') + err });
175 } else {
176 if (data.results && data.results.length) {
177 if (params.success) params.success(data.results);
178 } else {
179 if (params.fail) params.fail({ errMsg: 'getWeather:' + (window._seeds_lang['hint_weather_failed'] || '获取天气失败, 请稍后重试') });
180 }
181 }
182 });
183 },
184 // 客户端默认返回控制
185 back: function back(argHistory, argBackLvl) {
186 // 返回操作对象与返回层级
187 var _history = window.history;
188 if (argHistory && argHistory.go) _history = argHistory;
189 var _backLvl = argBackLvl || -1;
190
191 // 返回类型
192 var isFromApp = Device.getUrlParameter('isFromApp', location.search) || '';
193 if (isFromApp === '1') {
194 // 关闭当前页面
195 try {
196 Bridge.closeWindow();
197 } catch (error) {
198 console.log(error);
199 }
200 } else if (isFromApp === 'home') {
201 // 返回首页
202 try {
203 Bridge.goHome();
204 } catch (error) {
205 console.log(error);
206 }
207 } else if (isFromApp === 'confirm') {
208 // 提示后返回上一页
209 Bridge.showConfirm(Bridge.confirmCaption || window._seeds_lang['confirm_quit_page'] || '您确定要离开此页面吗?', {
210 success: function success(e) {
211 e.hide();
212 _history.go(_backLvl);
213 }
214 });
215 } else if (isFromApp === 'confirm-close') {
216 // 提示后关闭当前页面
217 Bridge.showConfirm(Bridge.confirmCaption || window._seeds_lang['confirm_quit_page'] || '您确定要离开此页面吗?', {
218 success: function success(e) {
219 e.hide();
220 Bridge.closeWindow();
221 }
222 });
223 } else if (isFromApp === 'custom') {
224 console.log('自定义');
225 } else {
226 // 返加上一页
227 _history.go(_backLvl);
228 }
229 },
230 // 判断是否是主页
231 isHomePage: function isHomePage(callback, rule) {
232 if (rule && window.location.href.indexOf(rule) >= 0) {
233 callback(true);
234 return;
235 }
236 callback(false);
237 },
238 // 获得版本信息
239 getAppVersion: function getAppVersion() {
240 return window.navigator.appVersion;
241 },
242 // 退出到登陆页面
243 logOut: function logOut() {
244 console.log('logOut方法仅在app上工作');
245 },
246 // 回到主页
247 goHome: function goHome() {
248 window.history.go(-1);
249 },
250 // 打开新的窗口
251 openWindow: function openWindow() {
252 var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
253
254 if (params.url) window.location.href = params.url;
255 },
256 // 关闭窗口
257 closeWindow: function closeWindow() {
258 window.history.go(-1);
259 },
260 // 客户端返回绑定
261 addBackPress: function addBackPress() {
262 console.log('addBackPress方法在浏览器上无法运行');
263 },
264 // 客户端移除返回绑定
265 removeBackPress: function removeBackPress() {
266 console.log('removeBackPress方法在浏览器上无法运行');
267 },
268 /**
269 * 基础功能:end
270 */
271
272 /**
273 * 定制功能
274 */
275 platform: 'browser',
276 // 初始化配置
277 config: function config() {
278 var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
279
280 if (params.debug) this.debug = params.debug;
281 if (!this.debug) {
282 console.log('config方法仅在微信上工作');
283 return;
284 }
285 DB.setSession('bridge_isready', '1');
286 if (params.success) params.success();
287 },
288 // 视频播放
289 previewVideo: function previewVideo() {
290 var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
291
292 var target = document.getElementById('seedsui_preview_video');
293 if (!target) {
294 target = MediaUtil.video(params.src);
295 target.id = 'seedsui_preview_video';
296 target.style = 'position:absolute;top:-1000px;left:-1000px;width:100;height:100px;';
297 document.body.appendChild(target);
298 }
299 if (target) {
300 FullScreen.enter(target);
301 setTimeout(function () {
302 target.play();
303 }, 500);
304 }
305 },
306 /* -----------------------------------------------------
307 图片插件
308 ----------------------------------------------------- */
309 // 拍照、本地选图
310 chooseImage: function chooseImage() {
311 var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
312
313 if (!this.debug) {
314 this.showToast(window._seeds_lang['hint_only_app_and_wx'] || '此功能仅可在微信或APP中使用', { mask: false });
315 return;
316 }
317 var res = {
318 sourceType: 'camera', // 微信返回的两种来源: 'camera', 'album'
319 errMsg: 'chooseImage:ok',
320 localIds: ['https://static.zcool.cn/git_z/z/common/images/svg/logo.svg', 'https://static.zcool.cn/v3.5.180706.5/zcool/client/image/logo.png']
321 };
322 if (params.success) params.success(res);
323 },
324 // 上传图片
325 uploadImage: function uploadImage() {
326 var _this = this;
327
328 var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
329
330 if (!this.debug) {
331 this.showToast(window._seeds_lang['hint_only_app_and_wx'] || '此功能仅可在微信或APP中使用', { mask: false });
332 return;
333 }
334 this.showLoading();
335 setTimeout(function () {
336 _this.hideLoading();
337 _this.showToast(window._seeds_lang['uploaded_completed'] || '上传完成', { mask: false });
338 var res = {
339 errMsg: 'uploadImage:ok',
340 mediaUrl: '',
341 serverId: new Date().getTime()
342 };
343 if (params.success) params.success(res);
344 // if (params.fail) params.fail(res)
345 }, 1000);
346 },
347 // 图片预览
348 // @params {urls:'需要预览的图片http链接列表',index:'图片索引',layerHTML:'图片上方的浮层'}
349 preview: null,
350 previewImage: function previewImage() {
351 var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
352
353 if (!params.urls || !params.urls.length) {
354 Bridge.showToast('urls' + (window._seeds_lang['wrong_parameter'] || '参数不正确') + ', ' + (window._seeds_lang['cannot_preview'] || '无法预览'), { mask: false });
355 return;
356 }
357 var src = params.urls[params.index || 0];
358 if (!src) {
359 Bridge.showToast('index' + (window._seeds_lang['wrong_parameter'] || '参数不正确') + ', ' + (window._seeds_lang['cannot_preview'] || '无法预览'), { mask: false });
360 return;
361 }
362 var layerHTML = params.layerHTML || '';
363 if (!this.preview) {
364 this.preview = new Preview({
365 src: src,
366 layerHTML: layerHTML,
367 onSuccess: function onSuccess(s) {
368 s.show();
369 },
370 onError: function onError() {
371 Bridge.showToast('' + (window._seeds_lang['invalid_image_src'] || '图片地址无效'), { mask: false });
372 }
373 });
374 } else {
375 this.preview.setSrc(src);
376 this.preview.setLayerHTML(layerHTML);
377 this.preview.update();
378 }
379 },
380 /* -----------------------------------------------------
381 视频插件
382 ----------------------------------------------------- */
383 // debug:录像
384 chooseVideo: function chooseVideo() {
385 var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
386
387 console.log('chooseVideo方法在浏览器上无法运行');
388 var res = {
389 sourceType: 'camera', // 微信返回的两种来源: 'camera', 'album'
390 errMsg: 'chooseVideo:ok',
391 tempFilePath: 'http://res.waiqin365.com/video/v2001.MP4',
392 duration: '',
393 size: '',
394 height: '',
395 width: ''
396 };
397 if (params.success) params.success(res);
398 },
399 /* -----------------------------------------------------
400 人员插件
401 ----------------------------------------------------- */
402 getContactMore: function getContactMore() {
403 var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
404
405 if (!this.debug) {
406 this.showToast(window._seeds_lang['hint_only_wqapp'] || '此功能仅可在外勤客户端中使用', { mask: false });
407 return;
408 }
409 if (params.success) params.success([{
410 id: '4655721687632479006',
411 name: '员工1'
412 }, {
413 id: '4655721687632479007',
414 name: '员工2'
415 }]);
416 },
417 getContact: function getContact() {
418 var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
419
420 if (!this.debug) {
421 this.showToast(window._seeds_lang['hint_only_wqapp'] || '此功能仅可在外勤客户端中使用', { mask: false });
422 return;
423 }
424 if (params.success) params.success({
425 id: '4655721687632479006',
426 name: '员工1'
427 });
428 },
429 /* -----------------------------------------------------
430 客户插件
431 ----------------------------------------------------- */
432 customerMore: [{
433 "check": true,
434 "distance": 31,
435 "labelType": 0,
436 "addr": "南京市建邺区康文路康缘智汇港附近",
437 "approval_status": "3",
438 "code": "20180403004",
439 "cooperate_status": "1",
440 "district_id": "",
441 "id": "5330457627710680963",
442 "lat": "",
443 "location": "31.983362,118.73069",
444 "lon": "",
445 "manager_name": "",
446 "name": "客户门店经销商1",
447 "name_py": "20180403004 20180403004",
448 "trade_type": "3",
449 "type_id": "",
450 "type_image": ""
451 }, {
452 "check": true,
453 "distance": 5,
454 "labelType": 0,
455 "addr": "江苏省南京市建邺区康文路康缘智汇港附近",
456 "approval_status": "3",
457 "code": "storethree",
458 "cooperate_status": "1",
459 "district_id": "",
460 "id": "8834765014408029232",
461 "lat": "",
462 "location": "31.983679,118.730766",
463 "lon": "",
464 "manager_name": "",
465 "name": "客户门店经销商2",
466 "name_py": "mendian3 md3",
467 "trade_type": "3",
468 "type_id": "",
469 "type_image": ""
470 }, {
471 "addr": "南京市建邺区康文路南京金贝网络科技有限公司附近",
472 "approval_status": "3",
473 "check": false,
474 "code": "CUS000084",
475 "cooperate_status": "1",
476 "distance": -1,
477 "district_id": "-1",
478 "id": "8045732772848971055",
479 "labelType": 2,
480 "lat": "31.983311",
481 "location": "31.983311,118.730527",
482 "lon": "118.730527",
483 "manager_name": "大表哥",
484 "name": "客户门店经销商3",
485 "name_py": "201801171557 201801171557",
486 "trade_type": "3",
487 "type_id": "-1",
488 "type_image": ""
489 }, {
490 "addr": "南京市建邺区康文路南京金贝网络科技有限公司附近",
491 "approval_status": "3",
492 "check": true,
493 "code": "CUS000085",
494 "cooperate_status": "1",
495 "distance": 46,
496 "district_id": "",
497 "id": "8353170616312361122",
498 "labelType": 0,
499 "lat": "",
500 "location": "31.983301,118.730517",
501 "lon": "",
502 "manager_name": "",
503 "name": "客户门店经销商4",
504 "name_py": "201801171624 201801171624",
505 "trade_type": "3",
506 "type_id": "",
507 "type_image": ""
508 }],
509 customerMoreLen: 1,
510 getCustomerMore: function getCustomerMore() {
511 var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
512
513 if (!this.debug) {
514 this.showToast(window._seeds_lang['hint_only_wqapp'] || '此功能仅可在外勤客户端中使用', { mask: false });
515 return;
516 }
517 var result = [];
518 for (var i = 0; i < this.customerMoreLen; i++) {
519 result.push(this.customerMore[i]);
520 }
521 this.customerMoreLen++;
522 if (this.customerMoreLen > this.customerMore.length) {
523 this.customerMoreLen = 1;
524 }
525 if (params.success) params.success(result);
526 },
527 getCustomer: function getCustomer() {
528 var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
529
530 if (!this.debug) {
531 this.showToast(window._seeds_lang['hint_only_wqapp'] || '此功能仅可在外勤客户端中使用', { mask: false });
532 return;
533 }
534 if (params.success) params.success({
535 id: '6468207804099075062',
536 name: '客户门店经销商1'
537 });
538 },
539 getCustomerType: function getCustomerType() {
540 var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
541
542 if (!this.debug) {
543 this.showToast(window._seeds_lang['hint_only_wqapp'] || '此功能仅可在外勤客户端中使用', { mask: false });
544 return;
545 }
546 if (params.success) params.success({
547 id: '5365268129453435373',
548 name: '客户类型1'
549 });
550 },
551 getCustomerAreaMore: function getCustomerAreaMore() {
552 var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
553
554 if (!this.debug) {
555 this.showToast(window._seeds_lang['hint_only_wqapp'] || '此功能仅可在外勤客户端中使用', { mask: false });
556 return;
557 }
558 if (params.success) params.success([{
559 id: '5365268129453435373',
560 name: '客户区域1'
561 }, {
562 id: '5365268129453435374',
563 name: '客户区域2'
564 }]);
565 },
566 getCustomerArea: function getCustomerArea() {
567 var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
568
569 if (!this.debug) {
570 this.showToast(window._seeds_lang['hint_only_wqapp'] || '此功能仅可在外勤客户端中使用', { mask: false });
571 return;
572 }
573 if (params.success) params.success({
574 id: '5365268129453435373',
575 name: '客户区域1'
576 });
577 },
578 // 部门插件
579 getDepartmentMore: function getDepartmentMore(params) {
580 this.showToast(window._seeds_lang['hint_only_wqapp'] || '此功能仅可在外勤客户端中使用', { mask: false });
581 },
582 getDepartment: function getDepartment() {
583 var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
584
585 if (!this.debug) {
586 this.showToast(window._seeds_lang['hint_only_wqapp'] || '此功能仅可在外勤客户端中使用', { mask: false });
587 return;
588 }
589 params.success({
590 id: '5343180131602024954',
591 name: '开发一部'
592 });
593 },
594 // 单选商品
595 getGoods: function getGoods() {
596 var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
597
598 if (!this.debug) {
599 this.showToast(window._seeds_lang['hint_only_wqapp'] || '此功能仅可在外勤客户端中使用', { mask: false });
600 return;
601 }
602 if (params.success) params.success({
603 id: '5343180131602024954',
604 name: '商品1',
605 propvalues: '', // 商品属性不带排序号
606 nameSpec: '', // 规格名称
607 productRemarks: '', // 备注
608 props: '', // 商品属性介绍
609 propDetail: '', // 商品属性详情
610 reportUnitName: '', // 报表单位名称
611 reportUnitID: '', // 报表单位ID
612 reportUnitRatio: '' // 报表单位比率
613 });
614 },
615
616 /**
617 * 获取当前地理位置
618 * @param {Object} params
619 * params: {
620 * type {String}: 'wgs84'|'gcj02'坐标类型微信默认使用国际坐标'wgs84',
621 * timeout {Number}: 超时,
622 * cache {Number}: 默认60秒缓存防重复定位
623 * }
624 * @returns {Object} {latitude: '纬度', longitude: '经度', speed:'速度', accuracy:'位置精度'}
625 */
626 getLocation: function getLocation() {
627 var _this2 = this;
628
629 var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
630
631 if (!this.debug) {
632 this.showToast(window._seeds_lang['hint_only_app_and_wx'] || '此功能仅可在微信或APP中使用', { mask: false });
633 setTimeout(function () {
634 if (params.fail) params.fail({ errMsg: 'getLocation:' + (window._seeds_lang['hint_only_app_and_wx'] || '此功能仅可在微信或APP中使用') });
635 }, 1000);
636 return;
637 }
638 // 先从cookie中读取位置信息
639 var appLocation = DB.getCookie('app_location');
640 if (appLocation === 'undefined') {
641 DB.removeCookie('app_location');
642 appLocation = '';
643 }
644 try {
645 if (appLocation) appLocation = JSON.parse(appLocation);
646 } catch (error) {
647 appLocation = '';
648 }
649 if (appLocation) {
650 if (params.success) params.success(appLocation);
651 return;
652 }
653 // 调用定位
654 if (this.locating) return;
655 this.locating = true;
656 console.log('调用定位...');
657 setTimeout(function () {
658 _this2.locating = false;
659 var res = { longitude: '118.730515', latitude: '31.982473', speed: '0.0', accuracy: '3.0.0'
660 // 将位置信息存储到cookie中60秒
661 };if (params.cache) DB.setCookie('app_location', JSON.stringify(res), params.cache || 60);
662 if (params.success) params.success(res);
663 }, 2000);
664 },
665 // 获取当前地理位置带地图
666 getLocationMap: function getLocationMap() {
667 var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
668
669 if (!this.debug) {
670 this.showToast(window._seeds_lang['hint_only_wqapp'] || '此功能仅可在微信或APP中使用', { mask: false });
671 if (params.fail) params.fail({ errMsg: 'getLocationMap:' + (window._seeds_lang['hint_only_wqapp'] || '此功能仅可在微信或APP中使用') });
672 return;
673 }
674 setTimeout(function () {
675 if (params.success) params.success({ longitude: '118.730515', latitude: '31.982473', speed: '0.0', accuracy: '3.0.0', address: '江苏省南京市新城科技园' });
676 }, 500);
677 },
678
679 /* -----------------------------------------------------
680 扫描二维码并返回结果
681 @return {resultStr:''}
682 ----------------------------------------------------- */
683 scanQRCode: function scanQRCode() {
684 var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
685
686 if (!this.debug) {
687 this.showToast(window._seeds_lang['hint_only_app_and_wx'] || '此功能仅可在微信或APP中使用', { mask: false });
688 if (params.fail) params.fail({ errMsg: 'scanQRCode:' + (window._seeds_lang['hint_scan_failed'] || '扫码失败') + ', ' + (window._seeds_lang['hint_try_again_later'] || '请稍后重试') });
689 return;
690 }
691 setTimeout(function () {
692 if (params.success) params.success({ resultStr: '504823170310092750280333' });
693 }, 500);
694 },
695 /* 封装图片控件,使用示例见ImgUploader组件
696 bridge.Image({
697 onChooseSuccess: function (imgMap) {},
698 onUploadSuccess:function(imgMap,res)
699 onUploadFail:function(index, item)
700 onUploadsSuccess:function(imgMap)
701 })
702 */
703 Image: function Image() {
704 var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
705
706 var s = this;
707 var msg = '';
708 // 选择照片
709 s.choose = function () {
710 var args = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
711
712 if (!Bridge.debug) {
713 if (params.onChooseFail) params.onChooseFail({ errMsg: 'chooseImage:' + (window._seeds_lang['hint_only_app_and_wx'] || '此功能仅可在微信或APP中使用') });else Bridge.showToast(window._seeds_lang['hint_only_app_and_wx'] || '此功能仅可在微信或APP中使用', { mask: false });
714 return;
715 }
716 var option = {
717 enableSafe: args.enableSafe || false, // 安全上传,第次只能传一张
718 max: args.max || 5,
719 currentCount: args.currentCount || 0,
720 sourceType: args.sourceType || ['album', 'camera'],
721 sizeType: args.sizeType || ['original', 'compressed'],
722 chooseOptions: args.chooseOptions || {},
723 localIds: args.localIds || [] // 去重处理
724 };
725 var count = option.max - option.currentCount;
726 if (count <= 0) {
727 msg = (window._seeds_lang['hint_max_upload'] || '最多只能传') + option.max + (window._seeds_lang['photos'] || '张照片');
728 Bridge.showToast(msg);
729 return;
730 }
731 // 如果设置了安全上传,则每次只允许上传一张
732 if (option.enableSafe) count = 1;
733 Bridge.chooseImage(Object.assign({
734 count: count, // 默认5
735 sizeType: option.sizeType, // 可以指定是原图还是压缩图,默认二者都有
736 sourceType: option.sourceType, // 可以指定来源是相册还是相机,默认二者都有camera|album
737 success: function success(res) {
738 var imgMap = {};
739 for (var i = 0, localId; localId = res.localIds[i++];) {
740 // eslint-disable-line
741 if (option.localIds.indexOf(localId) === -1) {
742 imgMap[localId] = {
743 serverId: '',
744 sourceType: res.sourceType
745 };
746 }
747 }
748 if (params.onChooseSuccess) params.onChooseSuccess(imgMap, res);
749 s.upload(imgMap);
750 },
751 fail: function fail(res) {
752 Bridge.showToast(window._seeds_lang['hint_choose_image_failed'] || '选择图片失败, 请稍后再试', { mask: false });
753 },
754 cancel: function cancel() {},
755 complete: function complete() {}
756 }, option.chooseOptions));
757 };
758 // 上传照片
759 s.upload = function (imgMap) {
760 var imgs = Object.keys(imgMap);
761 var loop = function loop(index) {
762 if (index >= imgs.length) {
763 return;
764 }
765 var img = imgs[index];
766 if (imgMap[img].serverId) {
767 loop(++index);
768 return;
769 }
770 Bridge.uploadImage({
771 localId: img, // 需要上传的图片的本地ID,由chooseImage接口获得
772 isShowProgressTips: 1, // 默认为1,显示进度提示
773 success: function success(res) {
774 var serverId = res.serverId; // 返回图片的服务器端ID
775 imgMap[img].serverId = serverId;
776 if (params.onUploadSuccess) params.onUploadSuccess(imgMap, res);
777 if (index >= imgs.length - 1 && params.onUploadsSuccess) params.onUploadsSuccess(imgMap);
778 loop(++index);
779 },
780 fail: function fail() {
781 var deleteItem = imgMap[img];
782 if (params.onUploadFail) params.onUploadFail(imgMap, { id: img, index: index, item: deleteItem, errMsg: 'uploadImage:' + msg });
783 if (index >= imgs.length - 1 && params.onUploadsSuccess) params.onUploadsSuccess(imgMap);
784 loop(++index);
785 }
786 });
787 };
788 loop(0);
789 };
790 }
791};
792export default Bridge;
\No newline at end of file