123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175 |
- import store from '../store/index.js';
- import user from '../core/user.js';
- import { clearStorage } from '../core/cache.js';
- const jump = function(data) {
- if (!data.open_type && !data.params && !data.page_url) return;
- let open_type = data.open_type;
- let params = data.params;
- let page_url = data.page_url;
- if (!Array.isArray(params) && Object.prototype.toString.call(params) ==="[object String]" && params) {
- params = JSON.parse(params);
- }
- switch (open_type) {
- case 'reLaunch':
- uni.reLaunch({
- url: params[0].value,
- });
- break;
- case 'redirect':
- uni.redirectTo({
- url: params[0].value,
- });
- break;
- case 'navigate':
- let new_page_url = page_url.split('?')[0];
- let options = `?`;
- for (let i = 0; i < params.length; i++) {
- options += `${params[i].key}=${params[i].value}&`;
- }
- new_page_url += options.slice(0, options.length - 1);
- if (options === '?') {
- new_page_url = page_url;
- }
- /* #ifdef MP-BAIDU || MP-TOUTIAO */
- if (page_url.split('?')[0] !== '/plugins/step/index/index') {
- uni.navigateTo({
- url: new_page_url
- });
- }
- /* #endif */
- /* #ifdef MP-WEIXIN || MP-ALIPAY */
- uni.navigateTo({
- url: new_page_url
- });
- /* #endif */
- break;
- case 'app_admin':
- if (store.state.user.info.identity.is_admin == 1) {
- uni.navigateTo({
- url: data.url,
- });
- }
- break;
- case 'back':
- uni.navigateBack({});
- break;
- case 'tel':
- uni.makePhoneCall({
- phoneNumber: params[0].value,
- });
- break;
- case 'web':
- uni.navigateTo({
- url: `${page_url.split('?')[0]}?url=${encodeURIComponent(params[0].value)}`
- });
- break;
- case 'app':
- let originalPath = '';
- for (let i = 0; i < params.length; i++) {
- originalPath += `${params[i].key}=${params[i].value}&`;
- }
- if (typeof originalPath !== 'string') return;
- let groups = originalPath.split('&');
- let obj = {};
- for (let i in groups) {
- if (typeof groups[i] !== 'string') continue;
- if (!groups[i].length) continue;
- let kvs = groups[i].split('=');
- if (kvs.length !== 2) {
- let s = '';
- for (let i = 1; i < kvs.length; i++) {
- if (i+1 === kvs.length) {
- continue;
- } else {
- s += `${kvs[i]}=${kvs[i+1]}`
- }
- }
- obj[kvs[0]] = s;
- } else {
- obj[kvs[0]] = kvs[1];
- }
- }
- let new_params = obj;
- let appId = '';
- let path = '';
- // #ifdef MP-WEIXIN
- appId = new_params.app_id || '';
- path = new_params.path || '';
- // #endif
- // #ifdef MP-ALIPAY
- appId = new_params.ali_app_id || '';
- path = new_params.ali_path || '';
- // #endif
- // #ifdef MP-TOUTIAO
- appId = new_params.tt_app_id || '';
- path = new_params.tt_path || '';
- // #endif
- // #ifdef MP-BAIDU
- appId = new_params.bd_app_key || '';
- path = new_params.bd_path || '';
- // #endif
- uni.navigateToMiniProgram({
- appId: appId,
- path: path
- });
- break;
- case 'clear_cache':
- uni.showModal({
- title: '提示',
- content: '确认清理缓存?',
- cancelText: '取消',
- confirmText: '确认',
- success: (e) => {
- if (e.confirm) {
- uni.showLoading({
- title: '清理缓存...',
- });
- clearStorage();
- if (user && store && store.state.user.accessToken) {
- user.loginByToken(store.state.user.accessToken);
- }
- store.dispatch('mallConfig/actionResetConfig');
- uni.hideLoading();
- uni.showToast({
- title: '清理完成',
- duration: 1000,
- });
- }
- },
- });
- break;
- case 'map':
- // uni.openLocation({
- // latitude: Number(this.latitude),
- // longitude: Number(this.longitude),
- // name: this.address,
- // address: this.address,
- // success: function () {
- // },
- // fail: function () {
- // }
- // });
- break;
- // case 'share':
- }
- };
- export default jump;
|