@fairys/taro-tools-react 1.0.31 → 1.0.33
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/esm/context/global.message.data.instance.js +2 -0
- package/esm/context/page.data.instance.d.ts +2 -0
- package/esm/context/page.data.instance.js +4 -1
- package/esm/context/page.info.data.instance.d.ts +2 -0
- package/esm/context/page.info.data.instance.js +4 -1
- package/esm/utils/navigate.d.ts +2 -0
- package/esm/utils/navigate.js +7 -5
- package/lib/context/global.message.data.instance.js +2 -0
- package/lib/context/page.data.instance.d.ts +2 -0
- package/lib/context/page.data.instance.js +4 -1
- package/lib/context/page.info.data.instance.d.ts +2 -0
- package/lib/context/page.info.data.instance.js +4 -1
- package/lib/utils/navigate.d.ts +2 -0
- package/lib/utils/navigate.js +7 -5
- package/package.json +1 -1
- package/src/context/global.message.data.instance.ts +4 -0
- package/src/context/page.data.instance.tsx +9 -0
- package/src/context/page.info.data.instance.tsx +8 -0
- package/src/utils/navigate.ts +13 -7
|
@@ -4,6 +4,7 @@ import { createUseId } from "../utils/useId.js";
|
|
|
4
4
|
import { ProxyInstanceObjectBase } from "../utils/valtio/instance.js";
|
|
5
5
|
import { globalSettingDataInstance } from "./global.setting.data.instance.js";
|
|
6
6
|
import taro from "@tarojs/taro";
|
|
7
|
+
import { authDataInstance } from "./auth.data.instance.js";
|
|
7
8
|
class GlobalMessageDataInstance extends ProxyInstanceObjectBase {
|
|
8
9
|
store = proxy({
|
|
9
10
|
messageData: ref([]),
|
|
@@ -54,6 +55,7 @@ class GlobalMessageDataInstance extends ProxyInstanceObjectBase {
|
|
|
54
55
|
});
|
|
55
56
|
};
|
|
56
57
|
toLoginPage = ()=>{
|
|
58
|
+
authDataInstance.clear();
|
|
57
59
|
if (this.onBeforetToLoginPage) {
|
|
58
60
|
const f = this.onBeforetToLoginPage();
|
|
59
61
|
if (false === f) return;
|
|
@@ -160,6 +160,8 @@ export interface PageDataInstanceContextProviderProps<T extends PageDataInstance
|
|
|
160
160
|
valueFields?: M['valueFields'];
|
|
161
161
|
/**是否是第一次加载*/
|
|
162
162
|
isMountLoad?: boolean;
|
|
163
|
+
/**是否使用 useDidShow*/
|
|
164
|
+
isDidShowLoad?: boolean;
|
|
163
165
|
/**页面标题*/
|
|
164
166
|
title?: string;
|
|
165
167
|
/**成功状态码
|
|
@@ -307,7 +307,7 @@ const usePageDataInstanceContext = ()=>{
|
|
|
307
307
|
return PageDataInstance;
|
|
308
308
|
};
|
|
309
309
|
function PageDataInstanceContextProvider(props) {
|
|
310
|
-
const { instance, children, initialValues, is_scroll_page, defaultTabKey, tabItems, defaultPageSize, onBefore, getList, onAfter, onExtraData, onError, getResetValues, defaultQuery, codeFields, valueFields, isMountLoad, title, responseSuccessCode, responseListField, responseTotalField } = props;
|
|
310
|
+
const { instance, children, initialValues, is_scroll_page, defaultTabKey, tabItems, defaultPageSize, onBefore, getList, onAfter, onExtraData, onError, getResetValues, defaultQuery, codeFields, valueFields, isMountLoad, title, responseSuccessCode, responseListField, responseTotalField, isDidShowLoad } = props;
|
|
311
311
|
const pageInstance = usePageDataInstance(instance);
|
|
312
312
|
instance.onBefore = onBefore;
|
|
313
313
|
instance.getList = getList;
|
|
@@ -333,6 +333,9 @@ function PageDataInstanceContextProvider(props) {
|
|
|
333
333
|
useEffect(()=>{
|
|
334
334
|
if (isMountLoad) pageInstance.main_onSearch();
|
|
335
335
|
}, []);
|
|
336
|
+
useDidShow(()=>{
|
|
337
|
+
if (isDidShowLoad) pageInstance.main_onSearch();
|
|
338
|
+
});
|
|
336
339
|
useDidShow(()=>{
|
|
337
340
|
if (title) taro.setNavigationBarTitle({
|
|
338
341
|
title
|
|
@@ -83,6 +83,8 @@ export interface PageInfoDataInstanceContextProviderProps<T extends PageInfoData
|
|
|
83
83
|
title?: string;
|
|
84
84
|
/**页面一加载是否请求详情接口*/
|
|
85
85
|
isMountRequestInfo?: boolean;
|
|
86
|
+
/**是否使用 useDidShow*/
|
|
87
|
+
isDidShowRequestInfo?: boolean;
|
|
86
88
|
/**自定义hooks,挂载参数和设置完初始值后执行*/
|
|
87
89
|
useHooks?: (instance: M) => void;
|
|
88
90
|
}
|
|
@@ -133,7 +133,7 @@ const usePageInfoDataInstanceContext = ()=>{
|
|
|
133
133
|
return PageInfoDataInstance;
|
|
134
134
|
};
|
|
135
135
|
function PageInfoDataInstanceContextProvider(props) {
|
|
136
|
-
const { instance, children, initialValues, requestInfoConfig, requestSaveInfoConfig, isProxy, title, isMountRequestInfo, useHooks } = props;
|
|
136
|
+
const { instance, children, initialValues, requestInfoConfig, requestSaveInfoConfig, isProxy, title, isMountRequestInfo, useHooks, isDidShowRequestInfo } = props;
|
|
137
137
|
const pageInfoInstance = usePageInfoDataInstance(instance);
|
|
138
138
|
pageInfoInstance.requestInfoConfig = requestInfoConfig;
|
|
139
139
|
pageInfoInstance.requestSaveInfoConfig = requestSaveInfoConfig;
|
|
@@ -152,6 +152,9 @@ function PageInfoDataInstanceContextProvider(props) {
|
|
|
152
152
|
useEffect(()=>{
|
|
153
153
|
if (isMountRequestInfo) pageInfoInstance.main_getInfo();
|
|
154
154
|
}, []);
|
|
155
|
+
useDidShow(()=>{
|
|
156
|
+
if (isDidShowRequestInfo) pageInfoInstance.main_getInfo();
|
|
157
|
+
});
|
|
155
158
|
return /*#__PURE__*/ jsx(PageInfoDataInstanceContext.Provider, {
|
|
156
159
|
value: pageInfoInstance,
|
|
157
160
|
children: children
|
package/esm/utils/navigate.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import Taro from '@tarojs/taro';
|
|
2
2
|
declare class NavigateInstance {
|
|
3
|
+
/**格式化路由,去掉查询参数*/
|
|
4
|
+
formateUrl: (url?: string) => string;
|
|
3
5
|
/**判断是否已登录(方法需要在项目入口文件中进行挂载,如果不挂载,默认使用 authDataInstance.hasMenuPermission 判断是否有菜单权限)*/
|
|
4
6
|
isAuth: (url: string) => Promise<boolean> | boolean;
|
|
5
7
|
private _isAuth;
|
package/esm/utils/navigate.js
CHANGED
|
@@ -2,18 +2,20 @@ import taro from "@tarojs/taro";
|
|
|
2
2
|
import { globalSettingDataInstance } from "../context/global.setting.data.instance.js";
|
|
3
3
|
import { authDataInstance } from "../context/auth.data.instance.js";
|
|
4
4
|
class NavigateInstance {
|
|
5
|
+
formateUrl = (url)=>`${url}`.split('?')?.[0] || '';
|
|
5
6
|
isAuth;
|
|
6
7
|
_isAuth = async (url)=>{
|
|
8
|
+
const _url = this.formateUrl(url);
|
|
7
9
|
let isAuthTo = true;
|
|
8
|
-
const isIgnoreAuthRoutes = globalSettingDataInstance.isIgnoreAuthRoutes(
|
|
10
|
+
const isIgnoreAuthRoutes = globalSettingDataInstance.isIgnoreAuthRoutes(_url);
|
|
9
11
|
const useAuthHasMenuPermission = globalSettingDataInstance.store.useAuthHasMenuPermission;
|
|
10
12
|
const isEnableAuth = globalSettingDataInstance.store.isEnableAuth;
|
|
11
13
|
let isAuthFunction = this.isAuth;
|
|
12
14
|
if (useAuthHasMenuPermission && 'function' != typeof isAuthFunction && isEnableAuth) isAuthFunction = authDataInstance.hasMenuPermission;
|
|
13
|
-
if (
|
|
15
|
+
if (_url && 'function' == typeof isAuthFunction && !isIgnoreAuthRoutes && isEnableAuth) isAuthTo = await isAuthFunction(_url);
|
|
14
16
|
if (false === isAuthTo) {
|
|
15
17
|
taro.showToast({
|
|
16
|
-
title: `${
|
|
18
|
+
title: `${_url} \u{65E0}\u{6743}\u{8BBF}\u{95EE}`,
|
|
17
19
|
icon: 'none'
|
|
18
20
|
});
|
|
19
21
|
return false;
|
|
@@ -21,8 +23,8 @@ class NavigateInstance {
|
|
|
21
23
|
return true;
|
|
22
24
|
};
|
|
23
25
|
isCurrentPage = (route)=>{
|
|
24
|
-
const _route = route.replace(/^\//, '');
|
|
25
|
-
const currentPath = (taro.getCurrentInstance().router?.path || '').replace(/^\//, '');
|
|
26
|
+
const _route = this.formateUrl(route.replace(/^\//, ''));
|
|
27
|
+
const currentPath = this.formateUrl((taro.getCurrentInstance().router?.path || '').replace(/^\//, ''));
|
|
26
28
|
return currentPath === _route;
|
|
27
29
|
};
|
|
28
30
|
switchTab = async (options)=>{
|
|
@@ -45,6 +45,7 @@ const instance_js_namespaceObject = require("../utils/valtio/instance.js");
|
|
|
45
45
|
const external_global_setting_data_instance_js_namespaceObject = require("./global.setting.data.instance.js");
|
|
46
46
|
const taro_namespaceObject = require("@tarojs/taro");
|
|
47
47
|
var taro_default = /*#__PURE__*/ __webpack_require__.n(taro_namespaceObject);
|
|
48
|
+
const external_auth_data_instance_js_namespaceObject = require("./auth.data.instance.js");
|
|
48
49
|
class GlobalMessageDataInstance extends instance_js_namespaceObject.ProxyInstanceObjectBase {
|
|
49
50
|
store = (0, external_valtio_namespaceObject.proxy)({
|
|
50
51
|
messageData: (0, external_valtio_namespaceObject.ref)([]),
|
|
@@ -95,6 +96,7 @@ class GlobalMessageDataInstance extends instance_js_namespaceObject.ProxyInstanc
|
|
|
95
96
|
});
|
|
96
97
|
};
|
|
97
98
|
toLoginPage = ()=>{
|
|
99
|
+
external_auth_data_instance_js_namespaceObject.authDataInstance.clear();
|
|
98
100
|
if (this.onBeforetToLoginPage) {
|
|
99
101
|
const f = this.onBeforetToLoginPage();
|
|
100
102
|
if (false === f) return;
|
|
@@ -160,6 +160,8 @@ export interface PageDataInstanceContextProviderProps<T extends PageDataInstance
|
|
|
160
160
|
valueFields?: M['valueFields'];
|
|
161
161
|
/**是否是第一次加载*/
|
|
162
162
|
isMountLoad?: boolean;
|
|
163
|
+
/**是否使用 useDidShow*/
|
|
164
|
+
isDidShowLoad?: boolean;
|
|
163
165
|
/**页面标题*/
|
|
164
166
|
title?: string;
|
|
165
167
|
/**成功状态码
|
|
@@ -350,7 +350,7 @@ const usePageDataInstanceContext = ()=>{
|
|
|
350
350
|
return PageDataInstance;
|
|
351
351
|
};
|
|
352
352
|
function PageDataInstanceContextProvider(props) {
|
|
353
|
-
const { instance, children, initialValues, is_scroll_page, defaultTabKey, tabItems, defaultPageSize, onBefore, getList, onAfter, onExtraData, onError, getResetValues, defaultQuery, codeFields, valueFields, isMountLoad, title, responseSuccessCode, responseListField, responseTotalField } = props;
|
|
353
|
+
const { instance, children, initialValues, is_scroll_page, defaultTabKey, tabItems, defaultPageSize, onBefore, getList, onAfter, onExtraData, onError, getResetValues, defaultQuery, codeFields, valueFields, isMountLoad, title, responseSuccessCode, responseListField, responseTotalField, isDidShowLoad } = props;
|
|
354
354
|
const pageInstance = usePageDataInstance(instance);
|
|
355
355
|
instance.onBefore = onBefore;
|
|
356
356
|
instance.getList = getList;
|
|
@@ -376,6 +376,9 @@ function PageDataInstanceContextProvider(props) {
|
|
|
376
376
|
(0, external_react_namespaceObject.useEffect)(()=>{
|
|
377
377
|
if (isMountLoad) pageInstance.main_onSearch();
|
|
378
378
|
}, []);
|
|
379
|
+
(0, taro_namespaceObject.useDidShow)(()=>{
|
|
380
|
+
if (isDidShowLoad) pageInstance.main_onSearch();
|
|
381
|
+
});
|
|
379
382
|
(0, taro_namespaceObject.useDidShow)(()=>{
|
|
380
383
|
if (title) taro_default().setNavigationBarTitle({
|
|
381
384
|
title
|
|
@@ -83,6 +83,8 @@ export interface PageInfoDataInstanceContextProviderProps<T extends PageInfoData
|
|
|
83
83
|
title?: string;
|
|
84
84
|
/**页面一加载是否请求详情接口*/
|
|
85
85
|
isMountRequestInfo?: boolean;
|
|
86
|
+
/**是否使用 useDidShow*/
|
|
87
|
+
isDidShowRequestInfo?: boolean;
|
|
86
88
|
/**自定义hooks,挂载参数和设置完初始值后执行*/
|
|
87
89
|
useHooks?: (instance: M) => void;
|
|
88
90
|
}
|
|
@@ -177,7 +177,7 @@ const usePageInfoDataInstanceContext = ()=>{
|
|
|
177
177
|
return PageInfoDataInstance;
|
|
178
178
|
};
|
|
179
179
|
function PageInfoDataInstanceContextProvider(props) {
|
|
180
|
-
const { instance, children, initialValues, requestInfoConfig, requestSaveInfoConfig, isProxy, title, isMountRequestInfo, useHooks } = props;
|
|
180
|
+
const { instance, children, initialValues, requestInfoConfig, requestSaveInfoConfig, isProxy, title, isMountRequestInfo, useHooks, isDidShowRequestInfo } = props;
|
|
181
181
|
const pageInfoInstance = usePageInfoDataInstance(instance);
|
|
182
182
|
pageInfoInstance.requestInfoConfig = requestInfoConfig;
|
|
183
183
|
pageInfoInstance.requestSaveInfoConfig = requestSaveInfoConfig;
|
|
@@ -196,6 +196,9 @@ function PageInfoDataInstanceContextProvider(props) {
|
|
|
196
196
|
(0, external_react_namespaceObject.useEffect)(()=>{
|
|
197
197
|
if (isMountRequestInfo) pageInfoInstance.main_getInfo();
|
|
198
198
|
}, []);
|
|
199
|
+
(0, taro_namespaceObject.useDidShow)(()=>{
|
|
200
|
+
if (isDidShowRequestInfo) pageInfoInstance.main_getInfo();
|
|
201
|
+
});
|
|
199
202
|
return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(PageInfoDataInstanceContext.Provider, {
|
|
200
203
|
value: pageInfoInstance,
|
|
201
204
|
children: children
|
package/lib/utils/navigate.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import Taro from '@tarojs/taro';
|
|
2
2
|
declare class NavigateInstance {
|
|
3
|
+
/**格式化路由,去掉查询参数*/
|
|
4
|
+
formateUrl: (url?: string) => string;
|
|
3
5
|
/**判断是否已登录(方法需要在项目入口文件中进行挂载,如果不挂载,默认使用 authDataInstance.hasMenuPermission 判断是否有菜单权限)*/
|
|
4
6
|
isAuth: (url: string) => Promise<boolean> | boolean;
|
|
5
7
|
private _isAuth;
|
package/lib/utils/navigate.js
CHANGED
|
@@ -41,18 +41,20 @@ var taro_default = /*#__PURE__*/ __webpack_require__.n(taro_namespaceObject);
|
|
|
41
41
|
const global_setting_data_instance_js_namespaceObject = require("../context/global.setting.data.instance.js");
|
|
42
42
|
const auth_data_instance_js_namespaceObject = require("../context/auth.data.instance.js");
|
|
43
43
|
class NavigateInstance {
|
|
44
|
+
formateUrl = (url)=>`${url}`.split('?')?.[0] || '';
|
|
44
45
|
isAuth;
|
|
45
46
|
_isAuth = async (url)=>{
|
|
47
|
+
const _url = this.formateUrl(url);
|
|
46
48
|
let isAuthTo = true;
|
|
47
|
-
const isIgnoreAuthRoutes = global_setting_data_instance_js_namespaceObject.globalSettingDataInstance.isIgnoreAuthRoutes(
|
|
49
|
+
const isIgnoreAuthRoutes = global_setting_data_instance_js_namespaceObject.globalSettingDataInstance.isIgnoreAuthRoutes(_url);
|
|
48
50
|
const useAuthHasMenuPermission = global_setting_data_instance_js_namespaceObject.globalSettingDataInstance.store.useAuthHasMenuPermission;
|
|
49
51
|
const isEnableAuth = global_setting_data_instance_js_namespaceObject.globalSettingDataInstance.store.isEnableAuth;
|
|
50
52
|
let isAuthFunction = this.isAuth;
|
|
51
53
|
if (useAuthHasMenuPermission && 'function' != typeof isAuthFunction && isEnableAuth) isAuthFunction = auth_data_instance_js_namespaceObject.authDataInstance.hasMenuPermission;
|
|
52
|
-
if (
|
|
54
|
+
if (_url && 'function' == typeof isAuthFunction && !isIgnoreAuthRoutes && isEnableAuth) isAuthTo = await isAuthFunction(_url);
|
|
53
55
|
if (false === isAuthTo) {
|
|
54
56
|
taro_default().showToast({
|
|
55
|
-
title: `${
|
|
57
|
+
title: `${_url} \u{65E0}\u{6743}\u{8BBF}\u{95EE}`,
|
|
56
58
|
icon: 'none'
|
|
57
59
|
});
|
|
58
60
|
return false;
|
|
@@ -60,8 +62,8 @@ class NavigateInstance {
|
|
|
60
62
|
return true;
|
|
61
63
|
};
|
|
62
64
|
isCurrentPage = (route)=>{
|
|
63
|
-
const _route = route.replace(/^\//, '');
|
|
64
|
-
const currentPath = (taro_default().getCurrentInstance().router?.path || '').replace(/^\//, '');
|
|
65
|
+
const _route = this.formateUrl(route.replace(/^\//, ''));
|
|
66
|
+
const currentPath = this.formateUrl((taro_default().getCurrentInstance().router?.path || '').replace(/^\//, ''));
|
|
65
67
|
return currentPath === _route;
|
|
66
68
|
};
|
|
67
69
|
switchTab = async (options)=>{
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"author": "SunLxy <1011771396@qq.com>",
|
|
4
4
|
"description": "框架组件库",
|
|
5
5
|
"homepage": "https://github.com/autumn-fairy-tales/fairys-taro-react",
|
|
6
|
-
"version": "1.0.
|
|
6
|
+
"version": "1.0.33",
|
|
7
7
|
"main": "esm/index.js",
|
|
8
8
|
"types": "esm/index.d.ts",
|
|
9
9
|
"module": "esm/index.js",
|
|
@@ -7,6 +7,7 @@ import type { FairysTaroMessageItemProps } from 'components/Mesage';
|
|
|
7
7
|
import { ProxyInstanceObjectBase } from 'utils/valtio/instance';
|
|
8
8
|
import { globalSettingDataInstance } from './global.setting.data.instance';
|
|
9
9
|
import Taro from '@tarojs/taro';
|
|
10
|
+
import { authDataInstance } from './auth.data.instance';
|
|
10
11
|
|
|
11
12
|
export interface MessageDataType extends FairysTaroMessageItemProps {
|
|
12
13
|
/**用于唯一标识提示框(默认自动生成)*/
|
|
@@ -94,6 +95,9 @@ export class GlobalMessageDataInstance extends ProxyInstanceObjectBase<GlobalMes
|
|
|
94
95
|
|
|
95
96
|
/**跳转登录页面*/
|
|
96
97
|
toLoginPage = () => {
|
|
98
|
+
// 清除登录凭证(token)、权限列表、菜单权限列表、用户信息
|
|
99
|
+
authDataInstance.clear();
|
|
100
|
+
|
|
97
101
|
if (this.onBeforetToLoginPage) {
|
|
98
102
|
const f = this.onBeforetToLoginPage();
|
|
99
103
|
if (f === false) {
|
|
@@ -494,6 +494,8 @@ export interface PageDataInstanceContextProviderProps<
|
|
|
494
494
|
valueFields?: M['valueFields'];
|
|
495
495
|
/**是否是第一次加载*/
|
|
496
496
|
isMountLoad?: boolean;
|
|
497
|
+
/**是否使用 useDidShow*/
|
|
498
|
+
isDidShowLoad?: boolean;
|
|
497
499
|
/**页面标题*/
|
|
498
500
|
title?: string;
|
|
499
501
|
/**成功状态码
|
|
@@ -535,6 +537,7 @@ export function PageDataInstanceContextProvider<
|
|
|
535
537
|
responseSuccessCode,
|
|
536
538
|
responseListField,
|
|
537
539
|
responseTotalField,
|
|
540
|
+
isDidShowLoad,
|
|
538
541
|
} = props;
|
|
539
542
|
|
|
540
543
|
const pageInstance = usePageDataInstance(instance);
|
|
@@ -563,6 +566,12 @@ export function PageDataInstanceContextProvider<
|
|
|
563
566
|
}
|
|
564
567
|
}, []);
|
|
565
568
|
|
|
569
|
+
useDidShow(() => {
|
|
570
|
+
if (isDidShowLoad) {
|
|
571
|
+
pageInstance.main_onSearch();
|
|
572
|
+
}
|
|
573
|
+
});
|
|
574
|
+
|
|
566
575
|
useDidShow(() => {
|
|
567
576
|
if (title) {
|
|
568
577
|
// 列表查询才调用
|
|
@@ -235,6 +235,8 @@ export interface PageInfoDataInstanceContextProviderProps<
|
|
|
235
235
|
title?: string;
|
|
236
236
|
/**页面一加载是否请求详情接口*/
|
|
237
237
|
isMountRequestInfo?: boolean;
|
|
238
|
+
/**是否使用 useDidShow*/
|
|
239
|
+
isDidShowRequestInfo?: boolean;
|
|
238
240
|
/**自定义hooks,挂载参数和设置完初始值后执行*/
|
|
239
241
|
useHooks?: (instance: M) => void;
|
|
240
242
|
}
|
|
@@ -254,6 +256,7 @@ export function PageInfoDataInstanceContextProvider<
|
|
|
254
256
|
title,
|
|
255
257
|
isMountRequestInfo,
|
|
256
258
|
useHooks,
|
|
259
|
+
isDidShowRequestInfo,
|
|
257
260
|
} = props;
|
|
258
261
|
const pageInfoInstance = usePageInfoDataInstance(instance);
|
|
259
262
|
pageInfoInstance.requestInfoConfig = requestInfoConfig;
|
|
@@ -276,6 +279,11 @@ export function PageInfoDataInstanceContextProvider<
|
|
|
276
279
|
}
|
|
277
280
|
}, []);
|
|
278
281
|
|
|
282
|
+
useDidShow(() => {
|
|
283
|
+
if (isDidShowRequestInfo) {
|
|
284
|
+
pageInfoInstance.main_getInfo();
|
|
285
|
+
}
|
|
286
|
+
});
|
|
279
287
|
return (
|
|
280
288
|
<PageInfoDataInstanceContext.Provider value={pageInfoInstance}>{children}</PageInfoDataInstanceContext.Provider>
|
|
281
289
|
);
|
package/src/utils/navigate.ts
CHANGED
|
@@ -3,12 +3,19 @@ import { globalSettingDataInstance } from 'context/global.setting.data.instance'
|
|
|
3
3
|
import { authDataInstance } from 'context/auth.data.instance';
|
|
4
4
|
|
|
5
5
|
class NavigateInstance {
|
|
6
|
+
/**格式化路由,去掉查询参数*/
|
|
7
|
+
formateUrl = (url?: string) => {
|
|
8
|
+
return `${url}`.split('?')?.[0] || '';
|
|
9
|
+
};
|
|
10
|
+
|
|
6
11
|
/**判断是否已登录(方法需要在项目入口文件中进行挂载,如果不挂载,默认使用 authDataInstance.hasMenuPermission 判断是否有菜单权限)*/
|
|
7
12
|
public isAuth: (url: string) => Promise<boolean> | boolean;
|
|
13
|
+
|
|
8
14
|
private _isAuth = async (url?: string) => {
|
|
15
|
+
const _url = this.formateUrl(url);
|
|
9
16
|
let isAuthTo = true;
|
|
10
17
|
// 判断是否跳转忽略权限校验的路由
|
|
11
|
-
const isIgnoreAuthRoutes = globalSettingDataInstance.isIgnoreAuthRoutes(
|
|
18
|
+
const isIgnoreAuthRoutes = globalSettingDataInstance.isIgnoreAuthRoutes(_url);
|
|
12
19
|
// 判断是否使用 authDataInstance中的hasMenuPermission 判断是否有菜单权限
|
|
13
20
|
const useAuthHasMenuPermission = globalSettingDataInstance.store.useAuthHasMenuPermission;
|
|
14
21
|
// 判断是否开启权限校验
|
|
@@ -17,13 +24,12 @@ class NavigateInstance {
|
|
|
17
24
|
if (useAuthHasMenuPermission && typeof isAuthFunction !== 'function' && isEnableAuth) {
|
|
18
25
|
isAuthFunction = authDataInstance.hasMenuPermission;
|
|
19
26
|
}
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
isAuthTo = await isAuthFunction(url);
|
|
27
|
+
if (_url && typeof isAuthFunction === 'function' && !isIgnoreAuthRoutes && isEnableAuth) {
|
|
28
|
+
isAuthTo = await isAuthFunction(_url);
|
|
23
29
|
}
|
|
24
30
|
if (isAuthTo === false) {
|
|
25
31
|
// 无权访问页面
|
|
26
|
-
Taro.showToast({ title: `${
|
|
32
|
+
Taro.showToast({ title: `${_url} 无权访问`, icon: 'none' });
|
|
27
33
|
return false;
|
|
28
34
|
}
|
|
29
35
|
return true;
|
|
@@ -34,8 +40,8 @@ class NavigateInstance {
|
|
|
34
40
|
*/
|
|
35
41
|
isCurrentPage = (route: string) => {
|
|
36
42
|
/**处理路由前缀*/
|
|
37
|
-
const _route = route.replace(/^\//, '');
|
|
38
|
-
const currentPath = (Taro.getCurrentInstance().router?.path || '').replace(/^\//, '');
|
|
43
|
+
const _route = this.formateUrl(route.replace(/^\//, ''));
|
|
44
|
+
const currentPath = this.formateUrl((Taro.getCurrentInstance().router?.path || '').replace(/^\//, ''));
|
|
39
45
|
return currentPath === _route;
|
|
40
46
|
};
|
|
41
47
|
|