@jx3box/jx3box-common-ui 5.2.6 → 5.3.0

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.
@@ -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.2.6",
3
+ "version": "5.3.0",
4
4
  "description": "JX3BOX UI",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -31,7 +31,7 @@
31
31
  ],
32
32
  "dependencies": {
33
33
  "@jx3box/jx3box-common": "^6.6.9",
34
- "@jx3box/jx3box-data": "^1.6.9",
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
- export { getMsg, getNav, getPanel, getBox };
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" :href="indexLink">
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 box_data from "@jx3box/jx3box-data/data/box/box.json";
36
- import box_data_origin from "@jx3box/jx3box-data/data/box/box_origin.json";
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 : client =='origin' ? box_data_origin : box_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
- getBox(this.client).then((res) => {
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("/")) {
@@ -119,6 +119,8 @@ export default {
119
119
  @media screen and (max-width: @phone) {
120
120
  .w-userpop .el-dialog {
121
121
  .w(100%) !important;
122
+ min-width: 0;
123
+ margin-top: 0 !important;
122
124
  }
123
125
  }
124
126
  </style>
@@ -1,30 +1,31 @@
1
1
  <template>
2
- <nav class="c-header-nav" v-if="nav">
3
- <div class="u-item-box" v-for="item in nav" :key="item.key">
4
- <template v-if="item.status && item.children && item.children.length">
5
- <el-dropdown
6
- class="u-menu"
7
- :show-timeout="0"
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.target || '_self'"
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 :href="subitem.link" v-if="subitem.status"
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 std_nav from "@jx3box/jx3box-data/data/box/header_nav.json";
52
- import origin_nav from "@jx3box/jx3box-data/data/box/header_nav_origin.json";
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 : client == 'origin' ? origin_nav : std_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
- getNav(this.client).then((res) => {
71
- if(res.data){
72
- this.nav = res.data
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
  },
@@ -62,12 +62,8 @@
62
62
  </a>
63
63
  </li>
64
64
  <hr />
65
- <li v-for="(item, i) in panel" :key="'panel-' + i">
66
- <a :href="item.link">{{ item.label }}</a>
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 "@jx3box/jx3box-data/data/box/header_panel.json";
104
- import panel_admin from "@jx3box/jx3box-data/data/box/header_panel_admin.json";
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
- getPanel().then((res) => {
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 () {