@jx3box/jx3box-common-ui 5.2.7 → 5.3.1
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/assets/data/box.json +408 -0
- package/assets/data/nav.json +290 -0
- package/assets/data/panel.json +32 -0
- package/package.json +3 -3
- package/service/header.js +6 -2
- package/src/Box.vue +12 -13
- package/src/header/nav.vue +53 -26
- package/src/header/user.vue +6 -12
|
@@ -0,0 +1,408 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"lf": false,
|
|
4
|
+
"img": "macro.svg",
|
|
5
|
+
"abbr": "宏库",
|
|
6
|
+
"href": "/macro",
|
|
7
|
+
"mark": "HOT",
|
|
8
|
+
"name": "云端宏",
|
|
9
|
+
"uuid": "macro",
|
|
10
|
+
"hover": "macro.svg",
|
|
11
|
+
"client": "all",
|
|
12
|
+
"status": true,
|
|
13
|
+
"hasMark": true,
|
|
14
|
+
"markcls": "ishot"
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"lf": false,
|
|
18
|
+
"img": "jx3dat.svg",
|
|
19
|
+
"abbr": "插件",
|
|
20
|
+
"href": "/jx3dat",
|
|
21
|
+
"mark": "HOT",
|
|
22
|
+
"name": "插件数据",
|
|
23
|
+
"uuid": "jx3dat",
|
|
24
|
+
"hover": "jx3dat.svg",
|
|
25
|
+
"client": "all",
|
|
26
|
+
"status": true,
|
|
27
|
+
"hasMark": true,
|
|
28
|
+
"markcls": "ishot"
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"lf": false,
|
|
32
|
+
"img": "fb.svg",
|
|
33
|
+
"abbr": "副本",
|
|
34
|
+
"href": "/fb",
|
|
35
|
+
"mark": "HOT",
|
|
36
|
+
"name": "副本专栏",
|
|
37
|
+
"uuid": "fb",
|
|
38
|
+
"hover": "fb.svg",
|
|
39
|
+
"client": "all",
|
|
40
|
+
"status": true,
|
|
41
|
+
"hasMark": true,
|
|
42
|
+
"markcls": "ishot"
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"lf": false,
|
|
46
|
+
"img": "bps.svg",
|
|
47
|
+
"abbr": "职业",
|
|
48
|
+
"href": "/bps",
|
|
49
|
+
"mark": "HOT",
|
|
50
|
+
"name": "职业专栏",
|
|
51
|
+
"uuid": "bps",
|
|
52
|
+
"hover": "bps.svg",
|
|
53
|
+
"client": "all",
|
|
54
|
+
"status": true,
|
|
55
|
+
"hasMark": true,
|
|
56
|
+
"markcls": "ishot"
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"lf": false,
|
|
60
|
+
"img": "cj.svg",
|
|
61
|
+
"abbr": "成就",
|
|
62
|
+
"href": "/cj",
|
|
63
|
+
"mark": "HOT",
|
|
64
|
+
"name": "成就百科",
|
|
65
|
+
"uuid": "cj",
|
|
66
|
+
"hover": "cj.svg",
|
|
67
|
+
"client": "all",
|
|
68
|
+
"status": true,
|
|
69
|
+
"hasMark": true,
|
|
70
|
+
"markcls": "ishot"
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
"lf": false,
|
|
74
|
+
"img": "item.svg",
|
|
75
|
+
"abbr": "物品",
|
|
76
|
+
"href": "/item",
|
|
77
|
+
"mark": "HOT",
|
|
78
|
+
"name": "物品百科",
|
|
79
|
+
"uuid": "item",
|
|
80
|
+
"hover": "item.svg",
|
|
81
|
+
"client": "all",
|
|
82
|
+
"status": true,
|
|
83
|
+
"hasMark": true,
|
|
84
|
+
"markcls": "ishot"
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
"lf": false,
|
|
88
|
+
"img": "quest.svg",
|
|
89
|
+
"abbr": "任务",
|
|
90
|
+
"href": "/quest",
|
|
91
|
+
"mark": "HOT",
|
|
92
|
+
"name": "任务百科",
|
|
93
|
+
"uuid": "quest",
|
|
94
|
+
"hover": "quest.svg",
|
|
95
|
+
"client": "all",
|
|
96
|
+
"status": true,
|
|
97
|
+
"hasMark": false,
|
|
98
|
+
"markcls": "ishot"
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
"lf": false,
|
|
102
|
+
"img": "knowledge.svg",
|
|
103
|
+
"abbr": "通识",
|
|
104
|
+
"href": "/knowledge",
|
|
105
|
+
"mark": "HOT",
|
|
106
|
+
"name": "通识百科",
|
|
107
|
+
"uuid": "knowledge",
|
|
108
|
+
"hover": "knowledge.svg",
|
|
109
|
+
"client": "all",
|
|
110
|
+
"status": true,
|
|
111
|
+
"hasMark": false,
|
|
112
|
+
"markcls": "ishot"
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
"lf": false,
|
|
116
|
+
"img": "pet.svg",
|
|
117
|
+
"abbr": "宠物",
|
|
118
|
+
"href": "/pet",
|
|
119
|
+
"mark": "HOT",
|
|
120
|
+
"name": "宠物百科",
|
|
121
|
+
"uuid": "pet",
|
|
122
|
+
"hover": "pet.svg",
|
|
123
|
+
"client": "all",
|
|
124
|
+
"status": true,
|
|
125
|
+
"hasMark": false,
|
|
126
|
+
"markcls": "ishot"
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
"lf": false,
|
|
130
|
+
"img": "tool.svg",
|
|
131
|
+
"abbr": "工具",
|
|
132
|
+
"href": "/tool",
|
|
133
|
+
"mark": "HOT",
|
|
134
|
+
"name": "教程工具",
|
|
135
|
+
"uuid": "tool",
|
|
136
|
+
"hover": "tool.svg",
|
|
137
|
+
"client": "all",
|
|
138
|
+
"status": true,
|
|
139
|
+
"hasMark": false,
|
|
140
|
+
"markcls": "ishot"
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
"lf": false,
|
|
144
|
+
"img": "share.svg",
|
|
145
|
+
"abbr": "捏脸",
|
|
146
|
+
"href": "/share",
|
|
147
|
+
"mark": "HOT",
|
|
148
|
+
"name": "捏脸分享",
|
|
149
|
+
"uuid": "share",
|
|
150
|
+
"hover": "share.svg",
|
|
151
|
+
"client": "all",
|
|
152
|
+
"status": true,
|
|
153
|
+
"hasMark": false,
|
|
154
|
+
"markcls": "ishot"
|
|
155
|
+
},
|
|
156
|
+
{
|
|
157
|
+
"lf": false,
|
|
158
|
+
"img": "house.svg",
|
|
159
|
+
"abbr": "蓝图",
|
|
160
|
+
"href": "https://jx3.xoyo.com/zt/2020/09/24/blueprint/#/",
|
|
161
|
+
"mark": "HOT",
|
|
162
|
+
"name": "家园蓝图",
|
|
163
|
+
"uuid": "house",
|
|
164
|
+
"hover": "house.svg",
|
|
165
|
+
"client": "std",
|
|
166
|
+
"status": true,
|
|
167
|
+
"hasMark": false,
|
|
168
|
+
"markcls": "ishot"
|
|
169
|
+
},
|
|
170
|
+
{
|
|
171
|
+
"lf": false,
|
|
172
|
+
"img": "bbs.svg",
|
|
173
|
+
"abbr": "茶馆",
|
|
174
|
+
"href": "/bbs",
|
|
175
|
+
"mark": "HOT",
|
|
176
|
+
"name": "茶馆交流",
|
|
177
|
+
"uuid": "bbs",
|
|
178
|
+
"hover": "bbs.svg",
|
|
179
|
+
"client": "all",
|
|
180
|
+
"status": true,
|
|
181
|
+
"hasMark": false,
|
|
182
|
+
"markcls": "ishot"
|
|
183
|
+
},
|
|
184
|
+
{
|
|
185
|
+
"lf": true,
|
|
186
|
+
"img": "database.svg",
|
|
187
|
+
"abbr": "数据",
|
|
188
|
+
"href": "/app/database",
|
|
189
|
+
"mark": "HOT",
|
|
190
|
+
"name": "数据库",
|
|
191
|
+
"uuid": "database",
|
|
192
|
+
"hover": "database.svg",
|
|
193
|
+
"client": "all",
|
|
194
|
+
"status": true,
|
|
195
|
+
"hasMark": true,
|
|
196
|
+
"markcls": "ishot"
|
|
197
|
+
},
|
|
198
|
+
{
|
|
199
|
+
"lf": false,
|
|
200
|
+
"img": "team.svg",
|
|
201
|
+
"abbr": "团队",
|
|
202
|
+
"href": "/team",
|
|
203
|
+
"mark": "HOT",
|
|
204
|
+
"name": "团队管理",
|
|
205
|
+
"uuid": "team",
|
|
206
|
+
"hover": "team.svg",
|
|
207
|
+
"client": "all",
|
|
208
|
+
"status": true,
|
|
209
|
+
"hasMark": true,
|
|
210
|
+
"markcls": "ishot"
|
|
211
|
+
},
|
|
212
|
+
{
|
|
213
|
+
"lf": false,
|
|
214
|
+
"img": "pz.svg",
|
|
215
|
+
"abbr": "配装",
|
|
216
|
+
"href": "/pz",
|
|
217
|
+
"mark": "BETA",
|
|
218
|
+
"name": "在线配装",
|
|
219
|
+
"uuid": "pz",
|
|
220
|
+
"hover": "pz.svg",
|
|
221
|
+
"client": "all",
|
|
222
|
+
"status": true,
|
|
223
|
+
"hasMark": true,
|
|
224
|
+
"markcls": "isbeta"
|
|
225
|
+
},
|
|
226
|
+
{
|
|
227
|
+
"lf": false,
|
|
228
|
+
"img": "battle.svg",
|
|
229
|
+
"abbr": "战斗",
|
|
230
|
+
"href": "/battle",
|
|
231
|
+
"mark": "ING",
|
|
232
|
+
"name": "战斗分析",
|
|
233
|
+
"uuid": "battle",
|
|
234
|
+
"hover": "battle.svg",
|
|
235
|
+
"client": "all",
|
|
236
|
+
"status": true,
|
|
237
|
+
"hasMark": true,
|
|
238
|
+
"markcls": "isdoing"
|
|
239
|
+
},
|
|
240
|
+
{
|
|
241
|
+
"lf": false,
|
|
242
|
+
"img": "dbm.svg",
|
|
243
|
+
"abbr": "构建",
|
|
244
|
+
"href": "/dbm",
|
|
245
|
+
"mark": "ING",
|
|
246
|
+
"name": "数据构建",
|
|
247
|
+
"uuid": "dbm",
|
|
248
|
+
"hover": "dbm.svg",
|
|
249
|
+
"client": "all",
|
|
250
|
+
"status": false,
|
|
251
|
+
"hasMark": true,
|
|
252
|
+
"markcls": "isdoing"
|
|
253
|
+
},
|
|
254
|
+
{
|
|
255
|
+
"lf": false,
|
|
256
|
+
"img": "haste.svg",
|
|
257
|
+
"abbr": "急速",
|
|
258
|
+
"href": "/app/haste",
|
|
259
|
+
"mark": "HOT",
|
|
260
|
+
"name": "急速阈值",
|
|
261
|
+
"uuid": "haste",
|
|
262
|
+
"hover": "haste.svg",
|
|
263
|
+
"client": "std",
|
|
264
|
+
"status": true,
|
|
265
|
+
"hasMark": false,
|
|
266
|
+
"markcls": "ishot"
|
|
267
|
+
},
|
|
268
|
+
{
|
|
269
|
+
"lf": false,
|
|
270
|
+
"img": "talent.svg",
|
|
271
|
+
"abbr": "奇穴",
|
|
272
|
+
"href": "/app/talent",
|
|
273
|
+
"mark": "HOT",
|
|
274
|
+
"name": "奇穴模拟",
|
|
275
|
+
"uuid": "talent",
|
|
276
|
+
"hover": "talent.svg",
|
|
277
|
+
"client": "std",
|
|
278
|
+
"status": true,
|
|
279
|
+
"hasMark": false,
|
|
280
|
+
"markcls": "ishot"
|
|
281
|
+
},
|
|
282
|
+
{
|
|
283
|
+
"lf": false,
|
|
284
|
+
"img": "talent2.svg",
|
|
285
|
+
"abbr": "镇派",
|
|
286
|
+
"href": "/app/talent2",
|
|
287
|
+
"mark": "HOT",
|
|
288
|
+
"name": "镇派模拟",
|
|
289
|
+
"uuid": "talent2",
|
|
290
|
+
"hover": "talent2.svg",
|
|
291
|
+
"client": "origin",
|
|
292
|
+
"status": true,
|
|
293
|
+
"hasMark": false,
|
|
294
|
+
"markcls": "ishot"
|
|
295
|
+
},
|
|
296
|
+
{
|
|
297
|
+
"lf": false,
|
|
298
|
+
"img": "icons.svg",
|
|
299
|
+
"abbr": "图标",
|
|
300
|
+
"href": "/app/icons",
|
|
301
|
+
"mark": "HOT",
|
|
302
|
+
"name": "图标大全",
|
|
303
|
+
"uuid": "icons",
|
|
304
|
+
"hover": "icons.svg",
|
|
305
|
+
"client": "all",
|
|
306
|
+
"status": true,
|
|
307
|
+
"hasMark": false,
|
|
308
|
+
"markcls": "ishot"
|
|
309
|
+
},
|
|
310
|
+
{
|
|
311
|
+
"lf": false,
|
|
312
|
+
"img": "qiyu.svg",
|
|
313
|
+
"abbr": "奇遇",
|
|
314
|
+
"href": "https://j3cx.com/serendipity",
|
|
315
|
+
"mark": "HOT",
|
|
316
|
+
"name": "奇遇查询",
|
|
317
|
+
"uuid": "qiyu",
|
|
318
|
+
"hover": "qiyu.svg",
|
|
319
|
+
"client": "std",
|
|
320
|
+
"status": true,
|
|
321
|
+
"hasMark": false,
|
|
322
|
+
"markcls": "ishot"
|
|
323
|
+
},
|
|
324
|
+
{
|
|
325
|
+
"lf": false,
|
|
326
|
+
"img": "keju.svg",
|
|
327
|
+
"abbr": "科举",
|
|
328
|
+
"href": "https://j3cx.com/exam/",
|
|
329
|
+
"mark": "HOT",
|
|
330
|
+
"name": "科举题库",
|
|
331
|
+
"uuid": "keju",
|
|
332
|
+
"hover": "keju.svg",
|
|
333
|
+
"client": "all",
|
|
334
|
+
"status": true,
|
|
335
|
+
"hasMark": false,
|
|
336
|
+
"markcls": "ishot"
|
|
337
|
+
},
|
|
338
|
+
{
|
|
339
|
+
"lf": false,
|
|
340
|
+
"img": "facedata.svg",
|
|
341
|
+
"abbr": "妆容",
|
|
342
|
+
"href": "/app/facedata",
|
|
343
|
+
"mark": "HOT",
|
|
344
|
+
"name": "妆容解析",
|
|
345
|
+
"uuid": "facedata",
|
|
346
|
+
"hover": "facedata.svg",
|
|
347
|
+
"client": "all",
|
|
348
|
+
"status": true,
|
|
349
|
+
"hasMark": false,
|
|
350
|
+
"markcls": "ishot"
|
|
351
|
+
},
|
|
352
|
+
{
|
|
353
|
+
"lf": false,
|
|
354
|
+
"img": "servers.svg",
|
|
355
|
+
"abbr": "开服",
|
|
356
|
+
"href": "/app/servers",
|
|
357
|
+
"mark": "HOT",
|
|
358
|
+
"name": "开服监控",
|
|
359
|
+
"uuid": "servers",
|
|
360
|
+
"hover": "servers.svg",
|
|
361
|
+
"client": "all",
|
|
362
|
+
"status": true,
|
|
363
|
+
"hasMark": false,
|
|
364
|
+
"markcls": "ishot"
|
|
365
|
+
},
|
|
366
|
+
{
|
|
367
|
+
"lf": false,
|
|
368
|
+
"img": "price.svg",
|
|
369
|
+
"abbr": "金价",
|
|
370
|
+
"href": "/app/price",
|
|
371
|
+
"mark": "HOT",
|
|
372
|
+
"name": "金价走势",
|
|
373
|
+
"uuid": "price",
|
|
374
|
+
"hover": "price.svg",
|
|
375
|
+
"client": "std",
|
|
376
|
+
"status": true,
|
|
377
|
+
"hasMark": false,
|
|
378
|
+
"markcls": "ishot"
|
|
379
|
+
},
|
|
380
|
+
{
|
|
381
|
+
"lf": false,
|
|
382
|
+
"img": "sandbox.svg",
|
|
383
|
+
"abbr": "沙盘",
|
|
384
|
+
"href": "/app/sandbox",
|
|
385
|
+
"mark": "HOT",
|
|
386
|
+
"name": "阵营沙盘",
|
|
387
|
+
"uuid": "sandbox",
|
|
388
|
+
"hover": "sandbox.svg",
|
|
389
|
+
"client": "std",
|
|
390
|
+
"status": true,
|
|
391
|
+
"hasMark": false,
|
|
392
|
+
"markcls": "ishot"
|
|
393
|
+
},
|
|
394
|
+
{
|
|
395
|
+
"lf": false,
|
|
396
|
+
"img": "more.svg",
|
|
397
|
+
"abbr": "全部",
|
|
398
|
+
"href": "/app",
|
|
399
|
+
"mark": "HOT",
|
|
400
|
+
"name": "全部应用",
|
|
401
|
+
"uuid": "more",
|
|
402
|
+
"hover": "more.svg",
|
|
403
|
+
"client": "all",
|
|
404
|
+
"status": true,
|
|
405
|
+
"hasMark": false,
|
|
406
|
+
"markcls": "ishot"
|
|
407
|
+
}
|
|
408
|
+
]
|
|
@@ -0,0 +1,290 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"key": "index",
|
|
4
|
+
"link": "/index",
|
|
5
|
+
"label": "首页",
|
|
6
|
+
"client": "all",
|
|
7
|
+
"status": true,
|
|
8
|
+
"parentKey": ""
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
"key": "macro",
|
|
12
|
+
"link": "/macro",
|
|
13
|
+
"label": "宏库",
|
|
14
|
+
"client": "all",
|
|
15
|
+
"status": true,
|
|
16
|
+
"parentKey": ""
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"key": "macroeditor",
|
|
20
|
+
"link": "/app/macroeditor",
|
|
21
|
+
"label": "宏编辑器",
|
|
22
|
+
"client": "all",
|
|
23
|
+
"status": true,
|
|
24
|
+
"parentKey": "macro"
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"key": "macro_index",
|
|
28
|
+
"link": "/macro",
|
|
29
|
+
"label": "全门派宏",
|
|
30
|
+
"client": "all",
|
|
31
|
+
"status": true,
|
|
32
|
+
"parentKey": "macro"
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"key": "jx3dat",
|
|
36
|
+
"link": "/jx3dat",
|
|
37
|
+
"label": "插件",
|
|
38
|
+
"client": "all",
|
|
39
|
+
"status": true,
|
|
40
|
+
"parentKey": ""
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"key": "jx3dat_index",
|
|
44
|
+
"link": "/jx3dat",
|
|
45
|
+
"label": "插件数据",
|
|
46
|
+
"client": "all",
|
|
47
|
+
"status": true,
|
|
48
|
+
"parentKey": "jx3dat"
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
"key": "dbm",
|
|
52
|
+
"link": "/dbm",
|
|
53
|
+
"label": "在线构建",
|
|
54
|
+
"client": "all",
|
|
55
|
+
"status": false,
|
|
56
|
+
"parentKey": "jx3dat"
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"key": "fb",
|
|
60
|
+
"link": "/fb",
|
|
61
|
+
"label": "副本",
|
|
62
|
+
"client": "all",
|
|
63
|
+
"status": true,
|
|
64
|
+
"parentKey": ""
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
"key": "fb_post",
|
|
68
|
+
"link": "/fb",
|
|
69
|
+
"label": "副本攻略",
|
|
70
|
+
"client": "all",
|
|
71
|
+
"status": true,
|
|
72
|
+
"parentKey": "fb"
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
"key": "fb_drop",
|
|
76
|
+
"link": "/fb/#/drop",
|
|
77
|
+
"label": "副本掉落",
|
|
78
|
+
"client": "all",
|
|
79
|
+
"status": true,
|
|
80
|
+
"parentKey": "fb"
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
"key": "fb_gem",
|
|
84
|
+
"link": "/fb/#/gem",
|
|
85
|
+
"label": "瑰石查询",
|
|
86
|
+
"client": "all",
|
|
87
|
+
"status": true,
|
|
88
|
+
"parentKey": "fb"
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
"key": "team",
|
|
92
|
+
"link": "/team",
|
|
93
|
+
"label": "团队平台",
|
|
94
|
+
"client": "all",
|
|
95
|
+
"status": true,
|
|
96
|
+
"parentKey": "fb"
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
"key": "battle_raid",
|
|
100
|
+
"link": "/battle",
|
|
101
|
+
"label": "战斗分析",
|
|
102
|
+
"client": "all",
|
|
103
|
+
"status": true,
|
|
104
|
+
"parentKey": "fb"
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
"key": "bps",
|
|
108
|
+
"link": "/bps",
|
|
109
|
+
"label": "职业",
|
|
110
|
+
"client": "all",
|
|
111
|
+
"status": true,
|
|
112
|
+
"parentKey": ""
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
"key": "bps_post",
|
|
116
|
+
"link": "/bps",
|
|
117
|
+
"label": "门派攻略",
|
|
118
|
+
"client": "all",
|
|
119
|
+
"status": true,
|
|
120
|
+
"parentKey": "bps"
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
"key": "pz",
|
|
124
|
+
"link": "/pz",
|
|
125
|
+
"label": "在线配装",
|
|
126
|
+
"client": "all",
|
|
127
|
+
"status": true,
|
|
128
|
+
"parentKey": "bps"
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
"key": "database",
|
|
132
|
+
"link": "/app/database",
|
|
133
|
+
"label": "数据大全",
|
|
134
|
+
"client": "all",
|
|
135
|
+
"status": true,
|
|
136
|
+
"parentKey": "bps"
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
"key": "battle",
|
|
140
|
+
"link": "/battle",
|
|
141
|
+
"label": "战斗分析",
|
|
142
|
+
"client": "all",
|
|
143
|
+
"status": true,
|
|
144
|
+
"parentKey": "bps"
|
|
145
|
+
},
|
|
146
|
+
{
|
|
147
|
+
"key": "dps",
|
|
148
|
+
"link": "/app/dps",
|
|
149
|
+
"label": "伤害模拟",
|
|
150
|
+
"client": "all",
|
|
151
|
+
"status": true,
|
|
152
|
+
"parentKey": "bps"
|
|
153
|
+
},
|
|
154
|
+
{
|
|
155
|
+
"key": "wiki",
|
|
156
|
+
"link": "/cj",
|
|
157
|
+
"label": "百科",
|
|
158
|
+
"client": "all",
|
|
159
|
+
"status": true,
|
|
160
|
+
"parentKey": ""
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
"key": "cj",
|
|
164
|
+
"link": "/cj",
|
|
165
|
+
"label": "成就百科",
|
|
166
|
+
"client": "all",
|
|
167
|
+
"status": true,
|
|
168
|
+
"parentKey": "wiki"
|
|
169
|
+
},
|
|
170
|
+
{
|
|
171
|
+
"key": "item",
|
|
172
|
+
"link": "/item",
|
|
173
|
+
"label": "物品百科",
|
|
174
|
+
"client": "all",
|
|
175
|
+
"status": true,
|
|
176
|
+
"parentKey": "wiki"
|
|
177
|
+
},
|
|
178
|
+
{
|
|
179
|
+
"key": "quest",
|
|
180
|
+
"link": "/quest",
|
|
181
|
+
"label": "任务百科",
|
|
182
|
+
"client": "all",
|
|
183
|
+
"status": true,
|
|
184
|
+
"parentKey": "wiki"
|
|
185
|
+
},
|
|
186
|
+
{
|
|
187
|
+
"key": "knowledge",
|
|
188
|
+
"link": "/knowledge",
|
|
189
|
+
"label": "通识百科",
|
|
190
|
+
"client": "all",
|
|
191
|
+
"status": true,
|
|
192
|
+
"parentKey": "wiki"
|
|
193
|
+
},
|
|
194
|
+
{
|
|
195
|
+
"key": "pet",
|
|
196
|
+
"link": "/knowledge/#/pet",
|
|
197
|
+
"label": "宠物百科",
|
|
198
|
+
"client": "all",
|
|
199
|
+
"status": true,
|
|
200
|
+
"parentKey": "wiki"
|
|
201
|
+
},
|
|
202
|
+
{
|
|
203
|
+
"key": "tool",
|
|
204
|
+
"link": "/tool",
|
|
205
|
+
"label": "工具",
|
|
206
|
+
"client": "all",
|
|
207
|
+
"status": true,
|
|
208
|
+
"parentKey": ""
|
|
209
|
+
},
|
|
210
|
+
{
|
|
211
|
+
"key": "app_index",
|
|
212
|
+
"link": "/app",
|
|
213
|
+
"label": "魔盒应用",
|
|
214
|
+
"client": "all",
|
|
215
|
+
"status": true,
|
|
216
|
+
"parentKey": "tool"
|
|
217
|
+
},
|
|
218
|
+
{
|
|
219
|
+
"key": "helper",
|
|
220
|
+
"link": "/tool",
|
|
221
|
+
"label": "更多工具",
|
|
222
|
+
"client": "all",
|
|
223
|
+
"status": true,
|
|
224
|
+
"parentKey": "tool"
|
|
225
|
+
},
|
|
226
|
+
{
|
|
227
|
+
"key": "share",
|
|
228
|
+
"link": "/share",
|
|
229
|
+
"label": "休闲",
|
|
230
|
+
"client": "all",
|
|
231
|
+
"status": true,
|
|
232
|
+
"parentKey": ""
|
|
233
|
+
},
|
|
234
|
+
{
|
|
235
|
+
"key": "face",
|
|
236
|
+
"link": "/share",
|
|
237
|
+
"label": "捏脸分享",
|
|
238
|
+
"client": "all",
|
|
239
|
+
"status": true,
|
|
240
|
+
"parentKey": "share"
|
|
241
|
+
},
|
|
242
|
+
{
|
|
243
|
+
"key": "house",
|
|
244
|
+
"link": "https://jx3.xoyo.com/zt/2020/09/24/blueprint/#/",
|
|
245
|
+
"label": "家园蓝图",
|
|
246
|
+
"client": "std",
|
|
247
|
+
"status": true,
|
|
248
|
+
"parentKey": "share"
|
|
249
|
+
},
|
|
250
|
+
{
|
|
251
|
+
"key": "bbs",
|
|
252
|
+
"link": "/bbs",
|
|
253
|
+
"label": "茶馆",
|
|
254
|
+
"client": "all",
|
|
255
|
+
"status": true,
|
|
256
|
+
"parentKey": ""
|
|
257
|
+
},
|
|
258
|
+
{
|
|
259
|
+
"key": "joke",
|
|
260
|
+
"link": "/bbs/#/joke",
|
|
261
|
+
"label": "剑三骚话",
|
|
262
|
+
"client": "all",
|
|
263
|
+
"status": true,
|
|
264
|
+
"parentKey": "bbs"
|
|
265
|
+
},
|
|
266
|
+
{
|
|
267
|
+
"key": "emotion",
|
|
268
|
+
"link": "/bbs/#/emotion",
|
|
269
|
+
"label": "剑三表情",
|
|
270
|
+
"client": "all",
|
|
271
|
+
"status": false,
|
|
272
|
+
"parentKey": "bbs"
|
|
273
|
+
},
|
|
274
|
+
{
|
|
275
|
+
"key": "namespace",
|
|
276
|
+
"link": "/bbs/#/namespace",
|
|
277
|
+
"label": "剑三铭牌",
|
|
278
|
+
"client": "all",
|
|
279
|
+
"status": true,
|
|
280
|
+
"parentKey": "bbs"
|
|
281
|
+
},
|
|
282
|
+
{
|
|
283
|
+
"key": "forum",
|
|
284
|
+
"link": "/bbs/#/forum",
|
|
285
|
+
"label": "讨论交流",
|
|
286
|
+
"client": "all",
|
|
287
|
+
"status": true,
|
|
288
|
+
"parentKey": "bbs"
|
|
289
|
+
}
|
|
290
|
+
]
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"label": "个人中心",
|
|
4
|
+
"link": "/dashboard",
|
|
5
|
+
"onlyAdmin":false
|
|
6
|
+
},
|
|
7
|
+
{
|
|
8
|
+
"label": "创作中心",
|
|
9
|
+
"link": "/publish",
|
|
10
|
+
"onlyAdmin":false
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
"label": "我的收藏",
|
|
14
|
+
"link": "/dashboard/#/fav",
|
|
15
|
+
"onlyAdmin":false
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"label": "我的角色",
|
|
19
|
+
"link": "/team/role/manage",
|
|
20
|
+
"onlyAdmin":false
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"label": "海报管理",
|
|
24
|
+
"link": "/admin",
|
|
25
|
+
"onlyAdmin":true
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"label": "内容管理",
|
|
29
|
+
"link": "https://os.jx3box.com/admin",
|
|
30
|
+
"onlyAdmin":true
|
|
31
|
+
}
|
|
32
|
+
]
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jx3box/jx3box-common-ui",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.3.1",
|
|
4
4
|
"description": "JX3BOX UI",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -30,8 +30,8 @@
|
|
|
30
30
|
"last 2 versions"
|
|
31
31
|
],
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"@jx3box/jx3box-common": "^6.
|
|
34
|
-
"@jx3box/jx3box-data": "^1.
|
|
33
|
+
"@jx3box/jx3box-common": "^6.7.0",
|
|
34
|
+
"@jx3box/jx3box-data": "^1.7.1",
|
|
35
35
|
"axios": "^0.19.2",
|
|
36
36
|
"element-ui": "^2.13.2",
|
|
37
37
|
"jquery": "^3.5.1",
|
package/service/header.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import axios from "axios";
|
|
2
|
-
import { $helper } from "@jx3box/jx3box-common/js/https.js";
|
|
2
|
+
import { $helper,$cms } from "@jx3box/jx3box-common/js/https.js";
|
|
3
3
|
import { __dataPath } from "@jx3box/jx3box-common/data/jx3box.json";
|
|
4
4
|
|
|
5
5
|
function getMsg() {
|
|
@@ -21,4 +21,8 @@ function getBox(client = 'std') {
|
|
|
21
21
|
return axios.get(__dataPath + "data/box/" + filename);
|
|
22
22
|
}
|
|
23
23
|
|
|
24
|
-
|
|
24
|
+
function getMenu(key){
|
|
25
|
+
return $cms().get(`/api/cms/config/menu/${key}`)
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export { getMsg, getNav, getPanel, getBox,getMenu };
|
package/src/Box.vue
CHANGED
|
@@ -6,13 +6,13 @@
|
|
|
6
6
|
<!-- list -->
|
|
7
7
|
<ul class="u-list">
|
|
8
8
|
<li>
|
|
9
|
-
<a class="u-item"
|
|
9
|
+
<a class="u-item" href="/index">
|
|
10
10
|
<img class="u-pic" svg-inline :src="homeicon" />
|
|
11
11
|
<img class="u-pic-hover" svg-inline :src="homeicon" />
|
|
12
12
|
<span class="u-txt">首页</span>
|
|
13
13
|
</a>
|
|
14
14
|
</li>
|
|
15
|
-
<li v-for="(item,i) in data" :key="i" :class="{'u-app-start':item.lf}" v-show="item.status">
|
|
15
|
+
<li v-for="(item,i) in data" :key="i" :class="{'u-app-start':item.lf}" v-show="item.status && matchedClient(item.client)">
|
|
16
16
|
<a class="u-item" :href="item.href" :target="item.href | getTarget">
|
|
17
17
|
<img class="u-pic" svg-inline :src="item.img | getBoxIcon" />
|
|
18
18
|
<img class="u-pic-hover" svg-inline :src="item.hover | getBoxIcon" />
|
|
@@ -32,10 +32,8 @@ import search from "./header/search.vue";
|
|
|
32
32
|
import _ from "lodash";
|
|
33
33
|
import Bus from "../service/bus";
|
|
34
34
|
import { __imgPath } from "@jx3box/jx3box-common/data/jx3box.json";
|
|
35
|
-
import
|
|
36
|
-
import
|
|
37
|
-
import { getBox } from "../service/header.js";
|
|
38
|
-
const client = location.href.includes('origin') ? 'origin' : 'std'
|
|
35
|
+
import box from "../assets/data/box.json";
|
|
36
|
+
import { getMenu } from "../service/header.js";
|
|
39
37
|
export default {
|
|
40
38
|
name: "Box",
|
|
41
39
|
props: ["overlayEnable"],
|
|
@@ -43,7 +41,8 @@ export default {
|
|
|
43
41
|
return {
|
|
44
42
|
status: false,
|
|
45
43
|
isOverlay: false,
|
|
46
|
-
data :
|
|
44
|
+
data : box,
|
|
45
|
+
client : location.href.includes('origin') ? 'origin' : 'std'
|
|
47
46
|
};
|
|
48
47
|
},
|
|
49
48
|
computed: {
|
|
@@ -56,14 +55,14 @@ export default {
|
|
|
56
55
|
originicon: function () {
|
|
57
56
|
return __imgPath + "image/box/origin.svg";
|
|
58
57
|
},
|
|
59
|
-
indexLink : function (){
|
|
60
|
-
return location.hostname.includes('origin') ? '/origin' : '/index'
|
|
61
|
-
},
|
|
62
58
|
},
|
|
63
59
|
methods: {
|
|
64
60
|
closeBox: function () {
|
|
65
61
|
Bus.$emit("toggleBox", false);
|
|
66
62
|
},
|
|
63
|
+
matchedClient : function (client){
|
|
64
|
+
return client == 'all' ? true : client == this.client
|
|
65
|
+
}
|
|
67
66
|
},
|
|
68
67
|
created: function () {
|
|
69
68
|
if (this.overlayEnable) {
|
|
@@ -75,8 +74,8 @@ export default {
|
|
|
75
74
|
}, 200)
|
|
76
75
|
);
|
|
77
76
|
}
|
|
78
|
-
|
|
79
|
-
this.data = res.data;
|
|
77
|
+
getMenu('box').then((res) => {
|
|
78
|
+
this.data = res.data?.data?.val || box;
|
|
80
79
|
});
|
|
81
80
|
},
|
|
82
81
|
mounted: function () {
|
|
@@ -93,7 +92,7 @@ export default {
|
|
|
93
92
|
},
|
|
94
93
|
filters: {
|
|
95
94
|
getBoxIcon: function (val) {
|
|
96
|
-
return __imgPath + "image" + val;
|
|
95
|
+
return __imgPath + "image/box/" + val;
|
|
97
96
|
},
|
|
98
97
|
getTarget: function (val) {
|
|
99
98
|
if (window.innerWidth < 768 || val.startsWith("/")) {
|
package/src/header/nav.vue
CHANGED
|
@@ -1,30 +1,31 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<nav class="c-header-nav" v-if="
|
|
3
|
-
<div class="u-item-box" v-for="item in
|
|
4
|
-
<template
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
trigger="hover"
|
|
9
|
-
>
|
|
2
|
+
<nav class="c-header-nav" v-if="finalNav">
|
|
3
|
+
<div class="u-item-box" v-for="item in finalNav" :key="item.key">
|
|
4
|
+
<template
|
|
5
|
+
v-if="item.status && item.children && item.children.length"
|
|
6
|
+
>
|
|
7
|
+
<el-dropdown class="u-menu" :show-timeout="0" trigger="hover">
|
|
10
8
|
<a
|
|
11
9
|
class="u-item el-dropdown-link"
|
|
12
10
|
:class="{ on: isFocus(item.link) }"
|
|
13
11
|
:href="item.link"
|
|
14
|
-
:target="item.
|
|
12
|
+
:target="isSelf(item.link)"
|
|
15
13
|
>{{ item.label
|
|
16
14
|
}}<i class="el-icon-arrow-down el-icon--right"></i
|
|
17
15
|
></a>
|
|
18
|
-
<el-dropdown-menu
|
|
19
|
-
slot="dropdown"
|
|
20
|
-
class="c-header-menu"
|
|
21
|
-
>
|
|
16
|
+
<el-dropdown-menu slot="dropdown" class="c-header-menu">
|
|
22
17
|
<el-dropdown-item
|
|
23
18
|
v-for="subitem in item.children"
|
|
24
19
|
:key="subitem.key"
|
|
25
20
|
class="u-menu-item"
|
|
26
21
|
>
|
|
27
|
-
<a
|
|
22
|
+
<a
|
|
23
|
+
:href="subitem.link"
|
|
24
|
+
:target="isSelf(subitem.link)"
|
|
25
|
+
v-if="
|
|
26
|
+
subitem.status &&
|
|
27
|
+
matchedClient(subitem.client)
|
|
28
|
+
"
|
|
28
29
|
>{{ subitem.label }}
|
|
29
30
|
<span v-if="subitem.desc">{{
|
|
30
31
|
subitem.desc
|
|
@@ -39,7 +40,7 @@
|
|
|
39
40
|
class="u-item"
|
|
40
41
|
:class="{ on: isFocus(item.link) }"
|
|
41
42
|
:href="item.link"
|
|
42
|
-
v-if="item.status"
|
|
43
|
+
v-if="item.status && matchedClient(item.client)"
|
|
43
44
|
>{{ item.label }}</a
|
|
44
45
|
>
|
|
45
46
|
</template>
|
|
@@ -48,28 +49,54 @@
|
|
|
48
49
|
</template>
|
|
49
50
|
|
|
50
51
|
<script>
|
|
51
|
-
import
|
|
52
|
-
import
|
|
53
|
-
import { getNav } from "../../service/header";
|
|
54
|
-
const client = location.href.includes('origin') ? 'origin' : 'std'
|
|
52
|
+
import default_nav from '../../assets/data/nav.json'
|
|
53
|
+
import { getMenu } from "../../service/header";
|
|
55
54
|
export default {
|
|
56
55
|
props: [],
|
|
57
|
-
data: function() {
|
|
56
|
+
data: function () {
|
|
58
57
|
return {
|
|
59
|
-
nav
|
|
58
|
+
nav: default_nav,
|
|
59
|
+
client: location.href.includes("origin") ? "origin" : "std",
|
|
60
60
|
};
|
|
61
61
|
},
|
|
62
62
|
computed: {
|
|
63
|
+
finalNav: function ({ nav }) {
|
|
64
|
+
|
|
65
|
+
const finalNav = nav.filter((d) => !d.parentKey);
|
|
66
|
+
|
|
67
|
+
const navChildren = nav.filter((c) => c.parentKey);
|
|
68
|
+
|
|
69
|
+
navChildren.forEach((child) => {
|
|
70
|
+
const parentKey = child.parentKey;
|
|
71
|
+
|
|
72
|
+
const parent = finalNav.find((n) => n.key === parentKey);
|
|
73
|
+
|
|
74
|
+
if (parent) {
|
|
75
|
+
if (!parent.children) {
|
|
76
|
+
parent.children = [];
|
|
77
|
+
}
|
|
78
|
+
parent.children.push(child);
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
|
|
82
|
+
return finalNav
|
|
83
|
+
}
|
|
63
84
|
},
|
|
64
85
|
methods: {
|
|
65
|
-
isFocus: function(type) {
|
|
86
|
+
isFocus: function (type) {
|
|
66
87
|
return location.pathname.includes(type);
|
|
67
88
|
},
|
|
89
|
+
matchedClient: function (client) {
|
|
90
|
+
return client == "all" ? true : client == this.client;
|
|
91
|
+
},
|
|
92
|
+
isSelf: function (link) {
|
|
93
|
+
return link.startsWith("/") ? "_self" : "_blank";
|
|
94
|
+
},
|
|
68
95
|
},
|
|
69
|
-
created: function() {
|
|
70
|
-
|
|
71
|
-
if(res.data){
|
|
72
|
-
this.nav = res
|
|
96
|
+
created: function () {
|
|
97
|
+
getMenu("nav").then((res) => {
|
|
98
|
+
if (res.data) {
|
|
99
|
+
this.nav = res?.data?.data?.val || default_nav;
|
|
73
100
|
}
|
|
74
101
|
});
|
|
75
102
|
},
|
package/src/header/user.vue
CHANGED
|
@@ -62,12 +62,8 @@
|
|
|
62
62
|
</a>
|
|
63
63
|
</li>
|
|
64
64
|
<hr />
|
|
65
|
-
<
|
|
66
|
-
<
|
|
67
|
-
</li>
|
|
68
|
-
<template v-if="isEditor">
|
|
69
|
-
<hr />
|
|
70
|
-
<li v-for="(item, i) in panel_admin" :key="'admin-panel-' + i">
|
|
65
|
+
<template v-for="(item, i) in panel">
|
|
66
|
+
<li :key="'panel-' + i" v-if="isEditor || !item.onlyAdmin">
|
|
71
67
|
<a :href="item.link">{{ item.label }}</a>
|
|
72
68
|
</li>
|
|
73
69
|
</template>
|
|
@@ -100,16 +96,14 @@ import {
|
|
|
100
96
|
__Root,
|
|
101
97
|
__imgPath,
|
|
102
98
|
} from "@jx3box/jx3box-common/data/jx3box.json";
|
|
103
|
-
import panel from "
|
|
104
|
-
import
|
|
105
|
-
import { getMsg, getPanel } from "../../service/header";
|
|
99
|
+
import panel from "../../assets/data/panel.json";
|
|
100
|
+
import { getMsg, getMenu } from "../../service/header";
|
|
106
101
|
import { getSuperAuthor } from "../../service/author";
|
|
107
102
|
export default {
|
|
108
103
|
props: [],
|
|
109
104
|
data: function () {
|
|
110
105
|
return {
|
|
111
106
|
panel,
|
|
112
|
-
panel_admin,
|
|
113
107
|
isEditor : false,
|
|
114
108
|
|
|
115
109
|
// 是否有消息
|
|
@@ -206,8 +200,8 @@ export default {
|
|
|
206
200
|
});
|
|
207
201
|
},
|
|
208
202
|
loadPanel: function () {
|
|
209
|
-
|
|
210
|
-
this.panel = res.data || panel;
|
|
203
|
+
getMenu('panel').then((res) => {
|
|
204
|
+
this.panel = res.data?.data?.val || panel;
|
|
211
205
|
});
|
|
212
206
|
},
|
|
213
207
|
logout: function () {
|