@jx3box/jx3box-editor 2.2.48 → 3.0.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/config/global.js +79 -0
- package/config/global.less +16 -0
- package/index.js +21 -8
- package/package.json +64 -63
- package/readme.md +25 -99
- package/src/Article.vue +96 -57
- package/src/ArticleMarkdown.vue +54 -47
- package/src/BoxResource.vue +67 -42
- package/src/Buff.vue +18 -7
- package/src/GameText.vue +32 -45
- package/src/Item.vue +143 -235
- package/src/ItemSimple.vue +27 -37
- package/src/Markdown.vue +362 -210
- package/src/Npc.vue +51 -30
- package/src/Resource.vue +296 -252
- package/src/Skill.vue +36 -26
- package/src/Tinymce.vue +124 -137
- package/src/Upload.vue +238 -155
- package/src/UploadAlbum.vue +189 -118
- package/{assets → src/assets}/css/article.less +1 -0
- package/src/assets/css/markdown.less +4 -0
- package/{assets → src/assets}/css/module/author.less +4 -3
- package/{assets → src/assets}/css/module/directory.less +23 -32
- package/{assets → src/assets}/css/module/talent.less +2 -2
- package/{assets → src/assets}/css/resource.less +56 -22
- package/src/assets/css/tinymce/_.less +28 -0
- package/src/assets/css/tinymce/a.less +21 -0
- package/{assets → src/assets}/css/tinymce/code.less +1 -1
- package/{assets/css → src/assets/css/tinymce}/combo.less +123 -18
- package/{assets → src/assets}/css/tinymce/fold.less +3 -6
- package/src/assets/css/tinymce/h.less +90 -0
- package/{assets → src/assets}/css/tinymce/latex.less +14 -14
- package/{assets → src/assets}/css/tinymce/macro.less +3 -3
- package/{assets → src/assets}/css/tinymce/pz.less +2 -2
- package/{assets → src/assets}/css/tinymce/table.less +5 -10
- package/{assets → src/assets}/css/tinymce.less +8 -4
- package/src/assets/css/upload.less +195 -0
- package/src/assets/css/upload_album.less +164 -0
- package/src/assets/css/var.less +2 -0
- package/src/assets/img/other/qr-code.svg +1 -0
- package/{assets → src/assets}/js/audio.js +2 -2
- package/{assets → src/assets}/js/directory.js +51 -23
- package/src/assets/js/hljs_languages.js +177 -0
- package/src/assets/js/katex.js +211 -0
- package/src/assets/js/renderImgPreview.js +49 -0
- package/{assets → src/assets}/js/xss.js +48 -5
- package/src/components/Author.vue +32 -13
- package/src/components/Avatar.vue +22 -3
- package/src/components/Combo.vue +118 -72
- package/src/components/PostAuthor.vue +13 -11
- package/src/components/QRcode.vue +136 -0
- package/src/components/SkillMartial.vue +13 -12
- package/src/pages/article.js +14 -0
- package/src/pages/index.js +5 -0
- package/src/pages/markdown.js +14 -0
- package/src/pages/tinymce.js +49 -0
- package/src/pages/upload.js +14 -0
- package/{service → src/service}/author.js +2 -2
- package/{service → src/service}/cms.js +5 -3
- package/{service → src/service}/database.js +4 -2
- package/{service → src/service}/item.js +1 -1
- package/{service → src/service}/node.js +1 -1
- package/{service → src/service}/resource.js +1 -1
- package/src/views/article.vue +72 -0
- package/src/views/index.vue +11 -0
- package/src/views/markdown.vue +58 -0
- package/src/views/tinymce.vue +58 -0
- package/src/views/upload.vue +111 -0
- package/.env +0 -2
- package/.vscode/settings.json +0 -5
- package/assets/css/katex-fix.css +0 -20
- package/assets/css/tinymce/_.less +0 -30
- package/assets/css/tinymce/a.less +0 -30
- package/assets/css/tinymce/combo.less +0 -111
- package/assets/css/tinymce/h.less +0 -58
- package/assets/css/upload.less +0 -105
- package/assets/js/katex.js +0 -191
- package/assets/js/renderImgPreview.js +0 -25
- package/babel.config.js +0 -3
- package/docs/markdown.md +0 -16
- package/jsconfig.json +0 -9
- package/public/article.html +0 -15
- package/public/css/article.css +0 -2481
- package/public/css/article.less +0 -3
- package/public/favicon.ico +0 -0
- package/public/tinymce.html +0 -33
- package/src/Equip.vue +0 -301
- package/src/components/LetterDemo.vue +0 -93
- package/src/components/medal.vue +0 -43
- package/test-audio.html +0 -121
- package/vue.config.js +0 -147
- /package/{assets → src/assets}/css/markdown/_.less +0 -0
- /package/{assets → src/assets}/css/markdown/macro.less +0 -0
- /package/{assets/css/article_markdown.less → src/assets/css/markdown/markdown-article.less} +0 -0
- /package/{assets/css/markdown.less → src/assets/css/markdown/markdown-editor.less} +0 -0
- /package/{assets → src/assets}/css/markdown/talent.less +0 -0
- /package/{assets → src/assets}/css/markdown/video.less +0 -0
- /package/{assets → src/assets}/css/module/buff.less +0 -0
- /package/{assets → src/assets}/css/module/icon.less +0 -0
- /package/{assets → src/assets}/css/module/item.less +0 -0
- /package/{assets → src/assets}/css/module/item_simple.less +0 -0
- /package/{assets → src/assets}/css/module/jx3_element.less +0 -0
- /package/{assets → src/assets}/css/module/macro.less +0 -0
- /package/{assets → src/assets}/css/module/npc.less +0 -0
- /package/{assets → src/assets}/css/module/resource.less +0 -0
- /package/{assets → src/assets}/css/module/skill.less +0 -0
- /package/{assets → src/assets}/css/tinymce/hr.less +0 -0
- /package/{assets → src/assets}/css/tinymce/img.less +0 -0
- /package/{assets → src/assets}/css/tinymce/imgpreview.less +0 -0
- /package/{assets → src/assets}/css/tinymce/list.less +0 -0
- /package/{assets → src/assets}/css/tinymce/nextpage.less +0 -0
- /package/{assets → src/assets}/css/tinymce/p.less +0 -0
- /package/{assets → src/assets}/css/tinymce/plugin.less +0 -0
- /package/{assets → src/assets}/css/tinymce/qixue.less +0 -0
- /package/{assets → src/assets}/css/tinymce/quote.less +0 -0
- /package/{assets → src/assets}/css/tinymce/video.less +0 -0
- /package/{assets → src/assets}/css/tinymce/voice.less +0 -0
- /package/{assets → src/assets}/data/detach_type.json +0 -0
- /package/{assets → src/assets}/data/game_font.json +0 -0
- /package/{assets → src/assets}/data/markdown_whitelist.json +0 -0
- /package/{assets → src/assets}/data/weapon_type.json +0 -0
- /package/{assets → src/assets}/img/buff.svg +0 -0
- /package/{assets → src/assets}/img/equip_bg.png +0 -0
- /package/{assets → src/assets}/img/file.svg +0 -0
- /package/{assets → src/assets}/img/icons.svg +0 -0
- /package/{assets → src/assets}/img/item/pve.png +0 -0
- /package/{assets → src/assets}/img/item/pvp.png +0 -0
- /package/{assets → src/assets}/img/item/pvx.png +0 -0
- /package/{assets → src/assets}/img/item/std.png +0 -0
- /package/{assets → src/assets}/img/item/wujie.png +0 -0
- /package/{assets → src/assets}/img/item.svg +0 -0
- /package/{assets → src/assets}/img/jx3.svg +0 -0
- /package/{assets → src/assets}/img/jx3box.svg +0 -0
- /package/{assets → src/assets}/img/npc/attack.svg +0 -0
- /package/{assets → src/assets}/img/npc/buff.svg +0 -0
- /package/{assets → src/assets}/img/npc/energy.svg +0 -0
- /package/{assets → src/assets}/img/npc/miss.svg +0 -0
- /package/{assets → src/assets}/img/npc/npc.svg +0 -0
- /package/{assets → src/assets}/img/npc/radar.svg +0 -0
- /package/{assets → src/assets}/img/npc/shield.svg +0 -0
- /package/{assets → src/assets}/img/npc/sight.svg +0 -0
- /package/{assets → src/assets}/img/npc/skull.svg +0 -0
- /package/{assets → src/assets}/img/npc/target.svg +0 -0
- /package/{assets → src/assets}/img/skill.svg +0 -0
- /package/{assets → src/assets}/img/skillset.png +0 -0
- /package/{assets → src/assets}/js/a.js +0 -0
- /package/{assets → src/assets}/js/code.js +0 -0
- /package/{assets → src/assets}/js/combo.js +0 -0
- /package/{assets → src/assets}/js/drag.js +0 -0
- /package/{assets → src/assets}/js/filter2.js +0 -0
- /package/{assets → src/assets}/js/fold.js +0 -0
- /package/{assets → src/assets}/js/gallery.js +0 -0
- /package/{assets → src/assets}/js/iframe.js +0 -0
- /package/{assets → src/assets}/js/img.js +0 -0
- /package/{assets → src/assets}/js/item/attribute_percent.js +0 -0
- /package/{assets → src/assets}/js/item/bind.js +0 -0
- /package/{assets → src/assets}/js/item/border.js +0 -0
- /package/{assets → src/assets}/js/item/border_quest.js +0 -0
- /package/{assets → src/assets}/js/item/color.js +0 -0
- /package/{assets → src/assets}/js/item/hljs_languages.js +0 -0
- /package/{assets → src/assets}/js/item/icon_url.js +0 -0
- /package/{assets → src/assets}/js/item/second_format.js +0 -0
- /package/{assets → src/assets}/js/jx3_element.js +0 -0
- /package/{assets → src/assets}/js/macro.js +0 -0
- /package/{assets → src/assets}/js/nextpage.js +0 -0
- /package/{assets → src/assets}/js/pswp.js +0 -0
- /package/{assets → src/assets}/js/pswp_template.js +0 -0
- /package/{assets → src/assets}/js/pz_iframe.js +0 -0
- /package/{assets → src/assets}/js/qixue.js +0 -0
- /package/{assets → src/assets}/js/script.js +0 -0
- /package/{assets → src/assets}/js/talent2.js +0 -0
- /package/{assets → src/assets}/js/tex-mml-chtml.js +0 -0
- /package/{service → src/service}/enum/CollectionPublic.js +0 -0
- /package/{service → src/service}/enum/EquipPosition.js +0 -0
- /package/{service → src/service}/enum/EquipType.js +0 -0
package/src/Item.vue
CHANGED
|
@@ -5,100 +5,70 @@
|
|
|
5
5
|
:class="{
|
|
6
6
|
'c-item-equipment': source.AucGenre >= 1 && source.AucGenre <= 4,
|
|
7
7
|
'c-item-furniture': source.AucGenre == 21,
|
|
8
|
-
}"
|
|
8
|
+
}"
|
|
9
|
+
>
|
|
9
10
|
<div class="c-item-wrapper">
|
|
10
11
|
<!-- 精炼等级 -->
|
|
11
12
|
<div v-if="source.MaxStrengthLevel" class="u-max-strength-level">
|
|
12
|
-
<span
|
|
13
|
-
v-text="`精炼等级:0 / ${source.MaxStrengthLevel}`"></span>
|
|
13
|
+
<span v-text="`精炼等级:0 / ${source.MaxStrengthLevel}`"></span>
|
|
14
14
|
</div>
|
|
15
15
|
<!-- 物品名称 -->
|
|
16
|
-
<div
|
|
17
|
-
class="u-title"
|
|
18
|
-
:style="{ color: color(source.Quality) }"
|
|
19
|
-
v-text="source.Name"></div>
|
|
16
|
+
<div class="u-title" :style="{ color: color(source.Quality) }" v-text="source.Name"></div>
|
|
20
17
|
<!-- 装备类型 -->
|
|
21
18
|
<div class="u-usage" v-if="show_equip_usage">
|
|
22
19
|
<template v-if="source.EquipUsage == 1">
|
|
23
|
-
<img
|
|
24
|
-
class="u-label-icon"
|
|
25
|
-
src="../assets/img/item/pve.png"
|
|
26
|
-
alt="" />
|
|
20
|
+
<img class="u-label-icon" src="./assets/img/item/pve.png" alt="" />
|
|
27
21
|
<span>秘境挑战</span>
|
|
28
22
|
</template>
|
|
29
23
|
<template v-if="source.EquipUsage == 2">
|
|
30
|
-
<img
|
|
31
|
-
class="u-label-icon"
|
|
32
|
-
src="../assets/img/item/pvp.png"
|
|
33
|
-
alt="" />
|
|
24
|
+
<img class="u-label-icon" src="./assets/img/item/pvp.png" alt="" />
|
|
34
25
|
<span>竞技对抗</span>
|
|
35
26
|
</template>
|
|
36
27
|
<template v-if="source.EquipUsage == 3">
|
|
37
|
-
<img
|
|
38
|
-
class="u-label-icon"
|
|
39
|
-
src="../assets/img/item/pvx.png"
|
|
40
|
-
alt="" />
|
|
28
|
+
<img class="u-label-icon" src="./assets/img/item/pvx.png" alt="" />
|
|
41
29
|
<span>休闲</span>
|
|
42
30
|
</template>
|
|
43
31
|
</div>
|
|
44
32
|
<!-- 绑定状态 -->
|
|
45
|
-
<div
|
|
46
|
-
v-if="source.BindType > 1"
|
|
47
|
-
class="u-bind"
|
|
48
|
-
v-text="bind(source.BindType)"></div>
|
|
33
|
+
<div v-if="source.BindType > 1" class="u-bind" v-text="bind(source.BindType)"></div>
|
|
49
34
|
<!-- 唯一 -->
|
|
50
|
-
<div
|
|
51
|
-
v-if="parseInt(source.MaxExistAmount) === 1"
|
|
52
|
-
class="unique"
|
|
53
|
-
v-text="'唯一'"></div>
|
|
35
|
+
<div v-if="parseInt(source.MaxExistAmount) === 1" class="unique" v-text="'唯一'"></div>
|
|
54
36
|
<!-- 存在时间 -->
|
|
55
37
|
<div
|
|
56
38
|
v-if="parseInt(source.MaxExistTime) > 0"
|
|
57
39
|
class="u-max-exist-time"
|
|
58
|
-
v-text="'限时时间:' + showDuration(source.MaxExistTime)"
|
|
40
|
+
v-text="'限时时间:' + showDuration(source.MaxExistTime)"
|
|
41
|
+
></div>
|
|
59
42
|
<!-- 最大拥有数 -->
|
|
60
43
|
<div
|
|
61
44
|
v-if="parseInt(source.MaxExistAmount) > 1"
|
|
62
45
|
class="u-max-exist-amount"
|
|
63
|
-
v-text="'最大拥有数:' + source.MaxExistAmount"
|
|
46
|
+
v-text="'最大拥有数:' + source.MaxExistAmount"
|
|
47
|
+
></div>
|
|
64
48
|
<!-- 武器类别 -->
|
|
65
|
-
<div v-if="source.AucGenre == 1" class="u-weapon-type-label"
|
|
66
|
-
|
|
67
|
-
>
|
|
68
|
-
<div v-if="source.AucGenre == 2" class="u-weapon-type-label"
|
|
69
|
-
>暗器</div
|
|
70
|
-
>
|
|
49
|
+
<div v-if="source.AucGenre == 1" class="u-weapon-type-label">武器</div>
|
|
50
|
+
<div v-if="source.AucGenre == 2" class="u-weapon-type-label">暗器</div>
|
|
71
51
|
<!-- 物品类型文案 -->
|
|
72
|
-
<div
|
|
73
|
-
v-if="source.TypeLabel"
|
|
74
|
-
class="u-type-label"
|
|
75
|
-
v-text="source.TypeLabel"></div>
|
|
52
|
+
<div v-if="source.TypeLabel" class="u-type-label" v-text="source.TypeLabel"></div>
|
|
76
53
|
<!-- 装备属性 -->
|
|
77
|
-
<div
|
|
78
|
-
class="u-attributes"
|
|
79
|
-
v-if="source.attributes && source.attributes.length">
|
|
54
|
+
<div class="u-attributes" v-if="source.attributes && source.attributes.length">
|
|
80
55
|
<div
|
|
81
56
|
v-for="attribute in common_attributes"
|
|
82
57
|
:key="attribute.type"
|
|
83
58
|
class="u-field"
|
|
84
|
-
:class="[`u-${attribute.color}`]"
|
|
59
|
+
:class="[`u-${attribute.color}`]"
|
|
60
|
+
>
|
|
85
61
|
<span
|
|
86
62
|
v-if="
|
|
87
63
|
attribute.type == 'atMeleeWeaponAttackSpeedBase' ||
|
|
88
64
|
attribute.type == 'atRangeWeaponAttackSpeedBase'
|
|
89
65
|
"
|
|
90
66
|
class="u-value u-speed"
|
|
91
|
-
v-text="attribute.label"
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
class="u-
|
|
95
|
-
<
|
|
96
|
-
v-if="attribute.icon_id > 0"
|
|
97
|
-
class="u-horse-icon"
|
|
98
|
-
:src="iconLink(attribute.icon_id)" />
|
|
99
|
-
<div
|
|
100
|
-
class="u-horse-desc"
|
|
101
|
-
v-html="attribute.label"></div>
|
|
67
|
+
v-text="attribute.label"
|
|
68
|
+
></span>
|
|
69
|
+
<span v-else-if="attribute.type == 'atHorseAttribute'" class="u-value u-horse-attribute">
|
|
70
|
+
<img v-if="attribute.icon_id > 0" class="u-horse-icon" :src="iconLink(attribute.icon_id)" />
|
|
71
|
+
<div class="u-horse-desc" v-html="attribute.label"></div>
|
|
102
72
|
</span>
|
|
103
73
|
<span v-else class="u-value">
|
|
104
74
|
<game-text :text="attribute.label"></game-text>
|
|
@@ -106,57 +76,38 @@
|
|
|
106
76
|
</div>
|
|
107
77
|
<template v-if="orange_std_attribute.length > 0">
|
|
108
78
|
<div class="u-spec-attribute-title u-yellow">
|
|
109
|
-
<img
|
|
110
|
-
class="u-label-icon"
|
|
111
|
-
src="../assets/img/item/std.png" />
|
|
79
|
+
<img class="u-label-icon" src="./assets/img/item/std.png" />
|
|
112
80
|
<span>特殊属性效果</span>
|
|
113
81
|
</div>
|
|
114
82
|
<div
|
|
115
83
|
class="u-value u-spec-attribute"
|
|
116
84
|
v-for="attribute in orange_std_attribute"
|
|
117
|
-
:key="attribute.label"
|
|
85
|
+
:key="attribute.label"
|
|
86
|
+
>
|
|
118
87
|
<game-text :text="attribute.label"></game-text>
|
|
119
88
|
</div>
|
|
120
89
|
</template>
|
|
121
90
|
<template v-if="orange_wujie_attribute.length > 0">
|
|
122
91
|
<div class="u-spec-attribute-title u-yellow">
|
|
123
|
-
<img
|
|
124
|
-
class="u-label-icon"
|
|
125
|
-
src="../assets/img/item/wujie.png" />
|
|
92
|
+
<img class="u-label-icon" src="./assets/img/item/wujie.png" />
|
|
126
93
|
<span>特殊属性效果</span>
|
|
127
94
|
</div>
|
|
128
|
-
<div
|
|
129
|
-
class="u-value u-spec-attribute"
|
|
130
|
-
v-for="(attribute, key) in orange_wujie_attribute"
|
|
131
|
-
:key="key">
|
|
95
|
+
<div class="u-value u-spec-attribute" v-for="(attribute, key) in orange_wujie_attribute" :key="key">
|
|
132
96
|
<game-text :text="attribute.label"></game-text>
|
|
133
97
|
</div>
|
|
134
|
-
<div class="u-value u-spec-attribute u-orange"
|
|
135
|
-
>属性效果双端一致</div
|
|
136
|
-
>
|
|
98
|
+
<div class="u-value u-spec-attribute u-orange">属性效果双端一致</div>
|
|
137
99
|
</template>
|
|
138
100
|
</div>
|
|
139
101
|
<!-- 家具属性 -->
|
|
140
|
-
<div
|
|
141
|
-
class="u-
|
|
142
|
-
|
|
143
|
-
<div
|
|
144
|
-
class="u-field u-green"
|
|
145
|
-
v-if="source.furniture_attributes.record">
|
|
146
|
-
<span
|
|
147
|
-
class="u-value"
|
|
148
|
-
v-text="
|
|
149
|
-
`装修评分:${source.furniture_attributes.record}`
|
|
150
|
-
"></span>
|
|
102
|
+
<div class="u-furniture-attributes" v-if="source.furniture_attributes">
|
|
103
|
+
<div class="u-field u-green" v-if="source.furniture_attributes.record">
|
|
104
|
+
<span class="u-value" v-text="`装修评分:${source.furniture_attributes.record}`"></span>
|
|
151
105
|
</div>
|
|
152
106
|
</div>
|
|
153
107
|
<!-- 镶嵌 -->
|
|
154
108
|
<ul v-if="source.Diamonds" class="u-diamonds u-gray">
|
|
155
109
|
<!-- 五行石 -->
|
|
156
|
-
<li
|
|
157
|
-
class="u-diamond"
|
|
158
|
-
v-for="(label, key) in source.Diamonds"
|
|
159
|
-
:key="key">
|
|
110
|
+
<li class="u-diamond" v-for="(label, key) in source.Diamonds" :key="key">
|
|
160
111
|
<span class="u-square"></span>
|
|
161
112
|
<span class="u-text" v-text="`镶嵌孔:${label}`"></span>
|
|
162
113
|
</li>
|
|
@@ -167,170 +118,116 @@
|
|
|
167
118
|
</li>
|
|
168
119
|
</ul>
|
|
169
120
|
<!-- 仅性别可穿戴 -->
|
|
170
|
-
<div
|
|
171
|
-
v-if="source.Requires && source.Requires[7]"
|
|
172
|
-
class="u-require-sex"
|
|
173
|
-
v-text="source.Requires[7]"></div>
|
|
121
|
+
<div v-if="source.Requires && source.Requires[7]" class="u-require-sex" v-text="source.Requires[7]"></div>
|
|
174
122
|
<!-- 需要门派 -->
|
|
175
123
|
<div
|
|
176
124
|
v-if="source.Requires && source.Requires[6]"
|
|
177
125
|
class="u-require-school"
|
|
178
|
-
v-text="source.Requires[6]"
|
|
126
|
+
v-text="source.Requires[6]"
|
|
127
|
+
></div>
|
|
179
128
|
<!-- 需要等级 -->
|
|
180
|
-
<div
|
|
181
|
-
v-if="source.Requires && source.Requires[5]"
|
|
182
|
-
class="u-require-level"
|
|
183
|
-
v-text="source.Requires[5]"></div>
|
|
129
|
+
<div v-if="source.Requires && source.Requires[5]" class="u-require-level" v-text="source.Requires[5]"></div>
|
|
184
130
|
<!-- 需要阵营 -->
|
|
185
131
|
<div
|
|
186
132
|
v-if="source.Requires && source.Requires[100]"
|
|
187
133
|
class="u-require-camp"
|
|
188
|
-
v-text="source.Requires[100]"
|
|
134
|
+
v-text="source.Requires[100]"
|
|
135
|
+
></div>
|
|
189
136
|
<!-- 需求宅邸等级 -->
|
|
190
137
|
<div
|
|
191
138
|
v-if="source.Requires && source.Requires[101]"
|
|
192
139
|
class="u-require-homeland-level"
|
|
193
|
-
v-text="source.Requires[101]"
|
|
140
|
+
v-text="source.Requires[101]"
|
|
141
|
+
></div>
|
|
194
142
|
<!-- 最大耐久度 -->
|
|
195
143
|
<div
|
|
196
|
-
v-if="
|
|
197
|
-
source.AucGenre >= 1 &&
|
|
198
|
-
source.AucGenre <= 3 &&
|
|
199
|
-
source.MaxDurability
|
|
200
|
-
"
|
|
144
|
+
v-if="source.AucGenre >= 1 && source.AucGenre <= 3 && source.MaxDurability"
|
|
201
145
|
class="u-max-durability"
|
|
202
|
-
v-text="'最大耐久度' + source.MaxDurability"
|
|
146
|
+
v-text="'最大耐久度' + source.MaxDurability"
|
|
147
|
+
></div>
|
|
203
148
|
<!-- 套装信息 -->
|
|
204
149
|
<div v-if="source.Set" class="u-set">
|
|
205
150
|
<br />
|
|
206
|
-
<div
|
|
207
|
-
class="u-yellow"
|
|
208
|
-
v-text="
|
|
209
|
-
`${source.Set.name}(1/${source.Set.siblings.length})`
|
|
210
|
-
"></div>
|
|
151
|
+
<div class="u-yellow" v-text="`${source.Set.name}(1/${source.Set.siblings.length})`"></div>
|
|
211
152
|
<ul class="u-set-siblings u-gray">
|
|
212
153
|
<li
|
|
213
154
|
v-for="(sibling, key) in source.Set.siblings"
|
|
214
155
|
:key="key"
|
|
215
156
|
:class="{
|
|
216
|
-
'u-yellow':
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
sibling.includes(source.Name)),
|
|
220
|
-
}">
|
|
157
|
+
'u-yellow': sibling && (sibling == source.Name || sibling.includes(source.Name)),
|
|
158
|
+
}"
|
|
159
|
+
>
|
|
221
160
|
{{
|
|
222
161
|
sibling
|
|
223
162
|
.split("/")
|
|
224
|
-
.map(s => s.trim())
|
|
163
|
+
.map((s) => s.trim())
|
|
225
164
|
.sort((a, b) => a.localeCompare(b))
|
|
226
165
|
.join(" / ")
|
|
227
|
-
}}
|
|
228
|
-
>
|
|
166
|
+
}}
|
|
167
|
+
</li>
|
|
229
168
|
</ul>
|
|
230
169
|
<br />
|
|
231
170
|
<ul class="u-set-attributes u-gray">
|
|
232
|
-
<li
|
|
233
|
-
v-for="(attribute, key) in source.Set.attributes"
|
|
234
|
-
:key="key">
|
|
171
|
+
<li v-for="(attribute, key) in source.Set.attributes" :key="key">
|
|
235
172
|
<span>{{ `[${key}]` }}</span>
|
|
236
|
-
<game-text
|
|
237
|
-
:client="client"
|
|
238
|
-
:text="attribute"
|
|
239
|
-
:ignore-color="true"></game-text>
|
|
173
|
+
<game-text :client="client" :text="attribute" :ignore-color="true"></game-text>
|
|
240
174
|
</li>
|
|
241
175
|
</ul>
|
|
242
176
|
<br />
|
|
243
177
|
</div>
|
|
244
178
|
<!-- 图片 -->
|
|
245
179
|
<div class="u-image-url" v-if="source.ImageUrl">
|
|
246
|
-
<img
|
|
247
|
-
:src="source.ImageUrl"
|
|
248
|
-
@error.once="source.ImageUrl = null" />
|
|
180
|
+
<img :src="source.ImageUrl" @error.once="handleImageError" />
|
|
249
181
|
</div>
|
|
250
182
|
<!-- 描述 -->
|
|
251
183
|
<p v-if="source.Desc" class="u-desc u-yellow">
|
|
252
184
|
<game-text :client="client" :text="source.Desc"></game-text>
|
|
253
185
|
</p>
|
|
254
186
|
<!-- 五彩石属性 -->
|
|
255
|
-
<p
|
|
256
|
-
v-if="source.WuCaiHtml"
|
|
257
|
-
class="u-desc"
|
|
258
|
-
v-html="source.WuCaiHtml"></p>
|
|
187
|
+
<p v-if="source.WuCaiHtml" class="u-desc" v-html="source.WuCaiHtml"></p>
|
|
259
188
|
<!-- 品质等级 -->
|
|
260
|
-
<div
|
|
261
|
-
v-if="source.Level"
|
|
262
|
-
class="u-level u-yellow"
|
|
263
|
-
v-text="'品质等级' + source.Level"></div>
|
|
189
|
+
<div v-if="source.Level" class="u-level u-yellow" v-text="'品质等级' + source.Level"></div>
|
|
264
190
|
<!-- 装备分数 -->
|
|
265
191
|
<div
|
|
266
192
|
v-if="Number(source.EquipmentRating)"
|
|
267
193
|
class="u-equipment-rating u-orange"
|
|
268
|
-
v-text="'装备分数' + source.EquipmentRating"
|
|
194
|
+
v-text="'装备分数' + source.EquipmentRating"
|
|
195
|
+
></div>
|
|
269
196
|
<!-- 推荐门派心法 -->
|
|
270
|
-
<div
|
|
271
|
-
v-if="source.Recommend"
|
|
272
|
-
class="u-equipment-recommend"
|
|
273
|
-
v-text="'推荐门派:' + source.Recommend"></div>
|
|
197
|
+
<div v-if="source.Recommend" class="u-equipment-recommend" v-text="'推荐门派:' + source.Recommend"></div>
|
|
274
198
|
<!-- 冷却时间 -->
|
|
275
199
|
<div
|
|
276
200
|
v-if="source.CoolDown"
|
|
277
201
|
class="u-equipment-recommend"
|
|
278
|
-
v-text="'使用间隔' + second_format(source.CoolDown)"
|
|
202
|
+
v-text="'使用间隔' + second_format(source.CoolDown)"
|
|
203
|
+
></div>
|
|
279
204
|
<!-- 外观名称 -->
|
|
280
|
-
<div
|
|
281
|
-
v-if="source.Appearance"
|
|
282
|
-
class="u-appearance"
|
|
283
|
-
v-text="'外观名称:' + source.Appearance"></div>
|
|
205
|
+
<div v-if="source.Appearance" class="u-appearance" v-text="'外观名称:' + source.Appearance"></div>
|
|
284
206
|
<!-- 可收集门派 -->
|
|
285
|
-
<div
|
|
286
|
-
v-if="source.CanExterior"
|
|
287
|
-
class="u-can-exterior"
|
|
288
|
-
v-text="'外观:' + source.CanExterior"></div>
|
|
207
|
+
<div v-if="source.CanExterior" class="u-can-exterior" v-text="'外观:' + source.CanExterior"></div>
|
|
289
208
|
<!-- 储物箱共享 -->
|
|
290
|
-
<div
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
>该物品可以放入账号储物箱共享。</div
|
|
297
|
-
>
|
|
298
|
-
<div
|
|
299
|
-
v-if="
|
|
300
|
-
source.CanShared &&
|
|
301
|
-
source.AucGenre >= 1 &&
|
|
302
|
-
source.AucGenre <= 4
|
|
303
|
-
"
|
|
304
|
-
class="u-can-shared"
|
|
305
|
-
>该装备未精炼、镶嵌、附魔、穿戴前可以放入账号储物箱共享。</div
|
|
306
|
-
>
|
|
209
|
+
<div v-if="source.CanShared && !(source.AucGenre >= 1 && source.AucGenre <= 4)" class="u-can-shared">
|
|
210
|
+
该物品可以放入账号储物箱共享。
|
|
211
|
+
</div>
|
|
212
|
+
<div v-if="source.CanShared && source.AucGenre >= 1 && source.AucGenre <= 4" class="u-can-shared">
|
|
213
|
+
该装备未精炼、镶嵌、附魔、穿戴前可以放入账号储物箱共享。
|
|
214
|
+
</div>
|
|
307
215
|
<!-- 家具可交互可缩放 -->
|
|
308
216
|
<div v-if="source.furniture_attributes" class="u-furniture-can">
|
|
309
217
|
<span v-if="source.furniture_attributes.interact">可交互</span>
|
|
310
218
|
<span
|
|
311
219
|
v-if="source.furniture_attributes.scale_range"
|
|
312
|
-
v-text="
|
|
313
|
-
|
|
314
|
-
';',
|
|
315
|
-
' - '
|
|
316
|
-
)}倍)`
|
|
317
|
-
"></span>
|
|
220
|
+
v-text="`可缩放(${source.furniture_attributes.scale_range.replace(';', ' - ')}倍)`"
|
|
221
|
+
></span>
|
|
318
222
|
</div>
|
|
319
223
|
<!-- 物品来源 -->
|
|
320
224
|
<div v-if="source.GetSource" class="u-get-source">
|
|
321
225
|
<span class="u-get-source-header">获取途径:</span>
|
|
322
|
-
<div
|
|
323
|
-
class="u-get-source-list"
|
|
324
|
-
v-for="source in source.GetSource"
|
|
325
|
-
:key="source.label">
|
|
226
|
+
<div class="u-get-source-list" v-for="source in source.GetSource" :key="source.label">
|
|
326
227
|
<span class="u-get-source-type"> {{ source.label }} </span>
|
|
327
228
|
<template v-if="source.children">
|
|
328
|
-
<div
|
|
329
|
-
v-
|
|
330
|
-
:key="child.label || child">
|
|
331
|
-
<span
|
|
332
|
-
class="u-get-source-child"
|
|
333
|
-
v-if="typeof child === 'string'">
|
|
229
|
+
<div v-for="child in source.children" :key="child.label || child">
|
|
230
|
+
<span class="u-get-source-child" v-if="typeof child === 'string'">
|
|
334
231
|
{{ child }}
|
|
335
232
|
</span>
|
|
336
233
|
<span
|
|
@@ -338,40 +235,36 @@
|
|
|
338
235
|
v-else-if="child.label"
|
|
339
236
|
@click="onClickSource(child)"
|
|
340
237
|
:style="sourceStyle(child)"
|
|
341
|
-
:class="{ 'is-link': child.app && child.id }"
|
|
238
|
+
:class="{ 'is-link': child.app && child.id }"
|
|
239
|
+
>
|
|
342
240
|
{{ sourceLabel(child) }}
|
|
343
241
|
</span>
|
|
344
242
|
</div>
|
|
345
243
|
</template>
|
|
346
244
|
</div>
|
|
347
245
|
</div>
|
|
246
|
+
<div v-else-if="source.GetType" class="u-get-type" v-text="`物品来源:${source.GetType}`"></div>
|
|
348
247
|
<div
|
|
349
|
-
v-
|
|
248
|
+
v-if="source.furniture_attributes && source.furniture_attributes.limit"
|
|
350
249
|
class="u-get-type"
|
|
351
|
-
v-text="
|
|
352
|
-
|
|
353
|
-
v-if="
|
|
354
|
-
source.furniture_attributes &&
|
|
355
|
-
source.furniture_attributes.limit
|
|
356
|
-
"
|
|
357
|
-
class="u-get-type"
|
|
358
|
-
v-text="`摆放上限:${source.furniture_attributes.limit}`"></div>
|
|
250
|
+
v-text="`摆放上限:${source.furniture_attributes.limit}`"
|
|
251
|
+
></div>
|
|
359
252
|
</div>
|
|
360
253
|
</div>
|
|
361
254
|
</template>
|
|
362
255
|
|
|
363
256
|
<script>
|
|
364
|
-
import { get_item } from "
|
|
257
|
+
import { get_item } from "./service/item.js";
|
|
365
258
|
import { getLink } from "@jx3box/jx3box-common/js/utils.js";
|
|
366
259
|
|
|
367
260
|
import GameText from "./GameText.vue";
|
|
368
261
|
|
|
369
|
-
import attribute_percent from "
|
|
370
|
-
import bind from "
|
|
371
|
-
import color from "
|
|
262
|
+
import attribute_percent from "./assets/js/item/attribute_percent.js";
|
|
263
|
+
import bind from "./assets/js/item/bind.js";
|
|
264
|
+
import color from "./assets/js/item/color.js";
|
|
372
265
|
import { iconLink } from "@jx3box/jx3box-common/js/utils";
|
|
373
266
|
|
|
374
|
-
import second_format from "
|
|
267
|
+
import second_format from "./assets/js/item/second_format.js";
|
|
375
268
|
import dayjs from "dayjs";
|
|
376
269
|
import duration from "dayjs/plugin/duration";
|
|
377
270
|
dayjs.extend(duration);
|
|
@@ -395,6 +288,7 @@ export default {
|
|
|
395
288
|
data() {
|
|
396
289
|
return {
|
|
397
290
|
source: null,
|
|
291
|
+
requestVersion: 0,
|
|
398
292
|
};
|
|
399
293
|
},
|
|
400
294
|
components: {
|
|
@@ -415,32 +309,27 @@ export default {
|
|
|
415
309
|
final_client: function () {
|
|
416
310
|
return this.client || this.client_by_id;
|
|
417
311
|
},
|
|
312
|
+
fetch_params: function () {
|
|
313
|
+
return [this.item_id, this.final_client];
|
|
314
|
+
},
|
|
418
315
|
cache_key: function () {
|
|
419
316
|
return `item-${this.final_client}-${this.item_id}`;
|
|
420
317
|
},
|
|
421
318
|
// 是否展示装备类型
|
|
422
319
|
show_equip_usage() {
|
|
423
|
-
if (Number(this.source?.AucGenre) === 1 && this.source.Quality > 4)
|
|
424
|
-
return false;
|
|
320
|
+
if (Number(this.source?.AucGenre) === 1 && this.source.Quality > 4) return false;
|
|
425
321
|
if ([1, 2, 3].includes(Number(this.source?.AucGenre))) return true;
|
|
426
|
-
if (this.source?.AucGenre == 4 && this.source?.AucSubType < 4)
|
|
427
|
-
return true;
|
|
322
|
+
if (this.source?.AucGenre == 4 && this.source?.AucSubType < 4) return true;
|
|
428
323
|
return false;
|
|
429
324
|
},
|
|
430
325
|
common_attributes() {
|
|
431
|
-
return this.source?.attributes?.filter(
|
|
432
|
-
item => item.color != "orange"
|
|
433
|
-
);
|
|
326
|
+
return this.source?.attributes?.filter((item) => item.color != "orange");
|
|
434
327
|
},
|
|
435
328
|
orange_std_attribute() {
|
|
436
|
-
return this.source?.attributes?.filter(
|
|
437
|
-
item => item.color == "orange" && !item.is_mobile
|
|
438
|
-
);
|
|
329
|
+
return this.source?.attributes?.filter((item) => item.color == "orange" && !item.is_mobile);
|
|
439
330
|
},
|
|
440
331
|
orange_wujie_attribute() {
|
|
441
|
-
return this.source?.attributes?.filter(
|
|
442
|
-
item => item.color == "orange" && item.is_mobile
|
|
443
|
-
);
|
|
332
|
+
return this.source?.attributes?.filter((item) => item.color == "orange" && item.is_mobile);
|
|
444
333
|
},
|
|
445
334
|
},
|
|
446
335
|
methods: {
|
|
@@ -464,6 +353,16 @@ export default {
|
|
|
464
353
|
window.open(link, "_blank");
|
|
465
354
|
}
|
|
466
355
|
},
|
|
356
|
+
cloneSource(item) {
|
|
357
|
+
return item ? { ...item } : item;
|
|
358
|
+
},
|
|
359
|
+
handleImageError() {
|
|
360
|
+
if (!this.source) return;
|
|
361
|
+
this.source = {
|
|
362
|
+
...this.source,
|
|
363
|
+
ImageUrl: null,
|
|
364
|
+
};
|
|
365
|
+
},
|
|
467
366
|
iconLink: function (id) {
|
|
468
367
|
return iconLink(id, this.final_client);
|
|
469
368
|
},
|
|
@@ -483,41 +382,50 @@ export default {
|
|
|
483
382
|
item: {
|
|
484
383
|
immediate: true,
|
|
485
384
|
handler() {
|
|
486
|
-
if (typeof this.item !== "undefined")
|
|
385
|
+
if (typeof this.item !== "undefined") {
|
|
386
|
+
this.source = this.cloneSource(this.item);
|
|
387
|
+
}
|
|
487
388
|
},
|
|
488
389
|
},
|
|
489
|
-
|
|
390
|
+
fetch_params: {
|
|
490
391
|
immediate: true,
|
|
491
|
-
handler(
|
|
492
|
-
if (
|
|
493
|
-
// 提取本地数据
|
|
494
|
-
let _cache = sessionStorage.getItem(this.cache_key);
|
|
392
|
+
handler([itemId]) {
|
|
393
|
+
if (typeof this.item !== "undefined") return;
|
|
495
394
|
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
try {
|
|
499
|
-
this.source = JSON.parse(_cache);
|
|
500
|
-
} catch (e) {
|
|
501
|
-
console.log(e, "[Item]无法解析本地缓存");
|
|
502
|
-
}
|
|
395
|
+
this.requestVersion += 1;
|
|
396
|
+
const currentVersion = this.requestVersion;
|
|
503
397
|
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
398
|
+
if (!itemId) {
|
|
399
|
+
this.source = null;
|
|
400
|
+
return;
|
|
401
|
+
}
|
|
402
|
+
|
|
403
|
+
// 提取本地数据
|
|
404
|
+
let _cache = sessionStorage.getItem(this.cache_key);
|
|
405
|
+
|
|
406
|
+
// 本地读取缓存
|
|
407
|
+
if (_cache) {
|
|
408
|
+
try {
|
|
409
|
+
this.source = JSON.parse(_cache);
|
|
410
|
+
return;
|
|
411
|
+
} catch (e) {
|
|
412
|
+
console.log(e, "[Item]无法解析本地缓存");
|
|
519
413
|
}
|
|
520
414
|
}
|
|
415
|
+
|
|
416
|
+
// 服务端拉取
|
|
417
|
+
get_item(itemId, this.final_client).then((res) => {
|
|
418
|
+
if (currentVersion !== this.requestVersion) return;
|
|
419
|
+
|
|
420
|
+
let item = res?.data;
|
|
421
|
+
let isValidItem = item && JSON.stringify(item) !== "{}";
|
|
422
|
+
if (isValidItem) {
|
|
423
|
+
this.source = item;
|
|
424
|
+
sessionStorage.setItem(this.cache_key, JSON.stringify(this.source));
|
|
425
|
+
} else {
|
|
426
|
+
this.source = null;
|
|
427
|
+
}
|
|
428
|
+
});
|
|
521
429
|
},
|
|
522
430
|
},
|
|
523
431
|
},
|
|
@@ -525,5 +433,5 @@ export default {
|
|
|
525
433
|
</script>
|
|
526
434
|
|
|
527
435
|
<style lang="less">
|
|
528
|
-
@import "
|
|
436
|
+
@import "./assets/css/module/item.less";
|
|
529
437
|
</style>
|