yxuse 3.0.10 → 3.0.11
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/README.md +122 -80
- package/lib/api.cjs.js +1 -1
- package/lib/api.es.js +1 -1
- package/lib/components.cjs.js +1 -1
- package/lib/components.es.js +8 -9
- package/lib/directives.cjs.js +1 -1
- package/lib/directives.es.js +1 -1
- package/lib/icons.cjs.js +1 -1
- package/lib/icons.es.js +1 -1
- package/lib/index.cjs.js +1 -1
- package/lib/index.cjs2.js +5 -5
- package/lib/index.cjs2.js.gz +0 -0
- package/lib/index.cjs4.js +1 -1
- package/lib/index.cjs6.js +3 -3
- package/lib/index.cjs6.js.gz +0 -0
- package/lib/index.es.js +12 -13
- package/lib/index.es2.js +87 -73
- package/lib/index.es2.js.gz +0 -0
- package/lib/index.es4.js +5 -5
- package/lib/index.es6.js +2957 -770
- package/lib/index.es6.js.gz +0 -0
- package/lib/style.css +1 -1
- package/lib/style.css.gz +0 -0
- package/lib/theme.cjs.js +1 -1
- package/lib/theme.es.js +9 -10
- package/lib/utils.cjs.js +1 -1
- package/lib/utils.es.js +1 -1
- package/lib/vue.runtime.esm-bundler.cjs.js +8 -0
- package/lib/vue.runtime.esm-bundler.cjs.js.gz +0 -0
- package/lib/vue.runtime.esm-bundler.es.js +4588 -0
- package/lib/vue.runtime.esm-bundler.es.js.gz +0 -0
- package/package.json +1 -2
- package/types/theme/config.d.ts +2 -0
- package/types/theme/index.d.ts +3 -3
- package/types/theme/type.d.ts +2 -2
package/README.md
CHANGED
|
@@ -1,9 +1,51 @@
|
|
|
1
1
|
# yxuse
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
## 更新日志
|
|
4
|
+
|
|
5
|
+
- 2024 3-18 (Vue2.x--> 2.0.3 Vue3.x--->3.0.10)
|
|
6
|
+
|
|
7
|
+
- theme
|
|
8
|
+
|
|
9
|
+
- 主题初始化 install 方法新增配置,主要有当前开发的环境,在开发环境下无 token 会进行弹窗提示,进行自动登录,生产环境登录失效自动跳转至 loginUrl 地址(已内置)
|
|
10
|
+
|
|
11
|
+
```js
|
|
12
|
+
export interface YxuseOptions {
|
|
13
|
+
/** 是否渲染悬浮球*/
|
|
14
|
+
isRenderToolbar?: boolean;
|
|
15
|
+
/** 是否加载工单*/
|
|
16
|
+
isRenderIssue?: boolean;
|
|
17
|
+
/** 是否加载语言切换*/
|
|
18
|
+
isRenderLang?: boolean;
|
|
19
|
+
/** 登录页地址,非运管系统项目使用*/
|
|
20
|
+
loginUrl?: string;
|
|
21
|
+
/** 自定义登录api,非运管系统项目使用*/
|
|
22
|
+
loginApiUrl?: string;
|
|
23
|
+
/** 翻译Api地址,非运管系统项目使用*/
|
|
24
|
+
translateApiUrl?: string;
|
|
25
|
+
/** 主题列表接口,非运管系统项目使用*/
|
|
26
|
+
themeApiUrl: string;
|
|
27
|
+
/** 首页地址,非运管系统项目使用*/
|
|
28
|
+
homeUrl?: string;
|
|
29
|
+
/** 系统语言*/
|
|
30
|
+
lang?: string;
|
|
31
|
+
/** 当前环境*/
|
|
32
|
+
environment: "development" | "production";
|
|
33
|
+
}
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
- 新增判断当前色值是否在当前主题中的方法 findColorByTheme(key: string, color: string)
|
|
37
|
+
|
|
38
|
+
- auth
|
|
39
|
+
|
|
40
|
+
- 新增获取系统配置的方法 getSystemConfig(key: string)
|
|
41
|
+
|
|
42
|
+
- utils
|
|
43
|
+
- 新增判断该色值是否是深色的方法 isDarkColor(color: string)
|
|
44
|
+
|
|
45
|
+
## 起步
|
|
4
46
|
|
|
5
47
|
```javascript
|
|
6
|
-
低版本适配为1.0.
|
|
48
|
+
低版本适配为1.0.100
|
|
7
49
|
//npm
|
|
8
50
|
npm install yxuse@latest
|
|
9
51
|
//pnpm
|
|
@@ -12,9 +54,9 @@ pnpm install yxuse@latest
|
|
|
12
54
|
//最新淘宝镜像地址为 https://registry.npmmirror.com
|
|
13
55
|
|
|
14
56
|
//速度慢或者版本更新不及时 请使用npm源镜像下载
|
|
15
|
-
npm set registry https://registry.npmjs.org
|
|
16
|
-
//或
|
|
17
|
-
pnpm set registry https://registry.npmjs.org
|
|
57
|
+
// npm set registry https://registry.npmjs.org
|
|
58
|
+
// //或
|
|
59
|
+
// pnpm set registry https://registry.npmjs.org
|
|
18
60
|
|
|
19
61
|
npm publish
|
|
20
62
|
```
|
|
@@ -105,85 +147,85 @@ import { auth } from "yxuse/api";
|
|
|
105
147
|
//Vue3.0+Vite+Ts+pinia
|
|
106
148
|
// router/index.ts
|
|
107
149
|
router.beforeEach(async (to, from, next) => {
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
150
|
+
const globalStore = GlobalStore();
|
|
151
|
+
NProgress.start();
|
|
152
|
+
// await getBaseConfig();
|
|
153
|
+
//权限校验
|
|
154
|
+
// 2.动态设置标题
|
|
155
|
+
const title = import.meta.env.VITE_GLOB_APP_TITLE;
|
|
156
|
+
document.title = to.meta.title ? `${to.meta.title} - ${title}` : title;
|
|
157
|
+
// 3.判断是访问登陆页,有 Token 就在当前页面,没有 Token 重置路由并放行到登陆页
|
|
158
|
+
const URL = [LOGIN_URL];
|
|
159
|
+
if (URL.includes(to.path.toLocaleLowerCase())) {
|
|
160
|
+
if (globalStore.token) return next(from.fullPath);
|
|
161
|
+
return next();
|
|
162
|
+
}
|
|
163
|
+
// 4.判断访问页面是否在路由白名单地址中,如果存在直接放行
|
|
164
|
+
if (ROUTER_WHITE_LIST.includes(to.path)) return next();
|
|
165
|
+
// 5.判断是否有 Token,没有重定向到 login
|
|
124
166
|
|
|
125
|
-
|
|
167
|
+
if (!globalStore.token) return next({ path: LOGIN_URL, replace: true });
|
|
126
168
|
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
169
|
+
// 6.如果没有菜单列表,或者系统列表,就重新请求菜单列表并添加动态路由
|
|
170
|
+
const authStore = AuthStore();
|
|
171
|
+
authStore.setRouteName(to.name as string);
|
|
130
172
|
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
173
|
+
if (!authStore.authMenuList.length) {
|
|
174
|
+
//监测是当前用户是否有权限
|
|
175
|
+
const isEmptyPower = await initDynamicRouter(to.path);
|
|
176
|
+
if (!isEmptyPower) return next({ ...to, replace: true });
|
|
177
|
+
}
|
|
178
|
+
next();
|
|
137
179
|
});
|
|
138
180
|
//router/modules/dynamicRouter.ts
|
|
139
181
|
export const initDynamicRouter = async path => {
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
182
|
+
const authStore = AuthStore();
|
|
183
|
+
const globalStore = GlobalStore();
|
|
184
|
+
const configStore = ConfigStore();
|
|
185
|
+
const baseConfig = configStore.baseConfigMapGet;
|
|
186
|
+
if (Object.keys(baseConfig).length === 0) {
|
|
187
|
+
await configStore.getBaseConfig();
|
|
188
|
+
}
|
|
189
|
+
try {
|
|
190
|
+
// 1.获取菜单列表 && 按钮权限(可合并到一个接口获取,根据后端不同可自行改造)
|
|
191
|
+
await authStore.getUserRouteListApi();
|
|
192
|
+
//2.判断当前用户有没有系统权限
|
|
193
|
+
if (!authStore.authMenuListGet.length) {
|
|
194
|
+
//用户无权限且当前路由不在系统入口页面 默认跳转至系统入口
|
|
195
|
+
if (path !== SYSTEM_ENTRY) {
|
|
196
|
+
router.replace(SYSTEM_ENTRY);
|
|
197
|
+
} else {
|
|
198
|
+
ElNotification({
|
|
199
|
+
title: "无权限访问",
|
|
200
|
+
message: "当前账号无任何系统权限,请联系系统管理员!",
|
|
201
|
+
type: "warning",
|
|
202
|
+
duration: 3000
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
return true;
|
|
206
|
+
}
|
|
207
|
+
// 3.添加动态路由
|
|
208
|
+
//页面文件
|
|
209
|
+
const modules = import.meta.glob("@/views/**/*.vue");
|
|
210
|
+
//页面配置项
|
|
211
|
+
const viewConfig = import.meta.glob("@/views/**/config.ts", {
|
|
212
|
+
import: "viewConfig",
|
|
213
|
+
eager: true
|
|
214
|
+
});
|
|
215
|
+
const userRouterList = auth.getUserRouter(authStore.authMenuList, modules, viewConfig);
|
|
216
|
+
console.log(authStore.authMenuList);
|
|
217
|
+
|
|
218
|
+
userRouterList.forEach(route => {
|
|
219
|
+
router.addRoute("layout", route);
|
|
220
|
+
});
|
|
221
|
+
authStore.setLayoutMenuList(userRouterList);
|
|
222
|
+
return false;
|
|
223
|
+
} catch (error) {
|
|
224
|
+
// 💢 当按钮 || 菜单请求出错时,重定向到登陆页
|
|
225
|
+
// globalStore.setToken("");
|
|
226
|
+
// router.replace(LOGIN_URL);
|
|
227
|
+
return Promise.reject(error);
|
|
228
|
+
}
|
|
187
229
|
};
|
|
188
230
|
|
|
189
231
|
```
|
|
@@ -302,8 +344,8 @@ import { auth } from "yxuse/api";
|
|
|
302
344
|
```javascript
|
|
303
345
|
//静态路由下添加
|
|
304
346
|
{
|
|
305
|
-
|
|
306
|
-
|
|
347
|
+
path: "/:pathMatch(.*)*",
|
|
348
|
+
component: () => import("@/components/ErrorMessage/404.vue")
|
|
307
349
|
}
|
|
308
350
|
```
|
|
309
351
|
|
package/lib/api.cjs.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("./index.cjs6.js"),e=require("./index.cjs5.js");require("
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("./index.cjs6.js"),e=require("./index.cjs5.js");require("./vue.runtime.esm-bundler.cjs.js");exports.auth=t.index;exports.getCommentUntreatedCount=e.getCommentUntreatedCount;exports.getUserSelectAnteList=e.getUserSelectAnteList;exports.getUserSelectSatelliteList=e.getUserSelectSatelliteList;exports.getUserThemeList=e.getUserThemeList;
|
package/lib/api.es.js
CHANGED
package/lib/components.cjs.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./index.cjs2.js");require("./index.cjs3.js");require("./index.cjs6.js");require("
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./index.cjs2.js");require("./index.cjs3.js");require("./index.cjs6.js");require("./vue.runtime.esm-bundler.cjs.js");require("./index.cjs4.js");require("./index.cjs5.js");require("./index.cjs7.js");exports.Toolbar=e.Toolbar;exports.Update=e.Update;exports.YxDialog=e._sfc_main;exports.YxForm=e.form;exports.YxSearchForm=e.index;exports.YxTable=e._sfc_main$1;
|
package/lib/components.es.js
CHANGED
|
@@ -1,16 +1,15 @@
|
|
|
1
|
-
import { T as
|
|
1
|
+
import { T as x, U as e, _ as Y, f as l, i as T, a as b } from "./index.es2.js";
|
|
2
2
|
import "./index.es3.js";
|
|
3
3
|
import "./index.es6.js";
|
|
4
|
-
import "
|
|
4
|
+
import "./vue.runtime.esm-bundler.es.js";
|
|
5
5
|
import "./index.es4.js";
|
|
6
|
-
import "vue";
|
|
7
6
|
import "./index.es5.js";
|
|
8
7
|
import "./index.es7.js";
|
|
9
8
|
export {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
9
|
+
x as Toolbar,
|
|
10
|
+
e as Update,
|
|
11
|
+
Y as YxDialog,
|
|
12
|
+
l as YxForm,
|
|
13
|
+
T as YxSearchForm,
|
|
14
|
+
b as YxTable
|
|
16
15
|
};
|
package/lib/directives.cjs.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./index.cjs7.js");require("./index.cjs6.js");require("
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./index.cjs7.js");require("./index.cjs6.js");require("./vue.runtime.esm-bundler.cjs.js");exports.default=e.directives$1;
|
package/lib/directives.es.js
CHANGED
package/lib/icons.cjs.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./index.cjs4.js");require("vue");exports.telemetryTitle=e.telemetryTitle;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./index.cjs4.js");require("./vue.runtime.esm-bundler.cjs.js");exports.telemetryTitle=e.telemetryTitle;
|
package/lib/icons.es.js
CHANGED
package/lib/index.cjs.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const i=require("./index.cjs3.js"),
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const i=require("./index.cjs3.js"),t=require("./index.cjs4.js"),r=require("./index.cjs5.js"),e=require("./index.cjs2.js");require("./index.cjs7.js");require("./index.cjs6.js");require("./vue.runtime.esm-bundler.cjs.js");exports.utils=i.utils2;exports.icons=t.icons2;exports.api=r.api2;exports.BC=e.BC;exports.components=e.components2;exports.default=e.index$1;exports.theme=e.theme2;
|