@jx3box/jx3box-editor 2.2.47 → 3.0.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.
- 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 +162 -126
- 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/components/Combo.vue
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
|
|
2
|
+
<!-- 连招 -->
|
|
3
|
+
<div class="w-resource-combo">
|
|
3
4
|
<el-tabs v-model="activeName" type="card" class="m-skill-tabs">
|
|
4
5
|
<el-tab-pane label="门派武学" name="special">
|
|
5
6
|
<template #label>
|
|
6
7
|
<div class="u-tab-label">
|
|
7
|
-
<
|
|
8
|
+
<el-icon><Sort></Sort></el-icon>
|
|
8
9
|
<b>门派武学</b>
|
|
9
10
|
</div>
|
|
10
11
|
</template>
|
|
@@ -12,17 +13,17 @@
|
|
|
12
13
|
<el-tab-pane label="全部技能" name="all">
|
|
13
14
|
<template #label>
|
|
14
15
|
<div class="u-tab-label">
|
|
15
|
-
<
|
|
16
|
+
<el-icon><Menu></Menu></el-icon>
|
|
16
17
|
<b>全部技能</b>
|
|
17
18
|
</div>
|
|
18
19
|
</template>
|
|
19
20
|
</el-tab-pane>
|
|
20
21
|
</el-tabs>
|
|
21
|
-
<div class="
|
|
22
|
+
<div class="w-resource-combo__content">
|
|
22
23
|
<div class="m-select-content">
|
|
23
24
|
<div v-show="activeName === 'all'">
|
|
24
25
|
<div v-if="total && done" class="m-resource-count">
|
|
25
|
-
<
|
|
26
|
+
<el-icon><Histogram /></el-icon> 共找到 <b>{{ total }}</b> 条记录
|
|
26
27
|
</div>
|
|
27
28
|
<ul class="m-resource-list">
|
|
28
29
|
<li v-for="(o, i) in skill" class="u-item" :key="i" @click="selectSkill(o, i)" ref="skill">
|
|
@@ -43,7 +44,14 @@
|
|
|
43
44
|
|
|
44
45
|
<template v-if="multipage">
|
|
45
46
|
<!-- 下一页 -->
|
|
46
|
-
<el-button
|
|
47
|
+
<el-button
|
|
48
|
+
class="m-archive-more"
|
|
49
|
+
:class="{ show: hasNextPage }"
|
|
50
|
+
type="primary"
|
|
51
|
+
icon="ArrowDown"
|
|
52
|
+
@click="appendPage"
|
|
53
|
+
>加载更多</el-button
|
|
54
|
+
>
|
|
47
55
|
<!-- 分页 -->
|
|
48
56
|
<el-pagination
|
|
49
57
|
class="m-archive-pages"
|
|
@@ -59,32 +67,59 @@
|
|
|
59
67
|
|
|
60
68
|
<div class="m-database-tip" v-show="isBlank">❤ 请输入搜索条件查询</div>
|
|
61
69
|
</div>
|
|
62
|
-
<skill-martial
|
|
70
|
+
<skill-martial
|
|
71
|
+
v-show="activeName === 'special'"
|
|
72
|
+
:client="client"
|
|
73
|
+
:subtype="subtype"
|
|
74
|
+
@selectSkill="selectSkill"
|
|
75
|
+
></skill-martial>
|
|
63
76
|
</div>
|
|
64
77
|
|
|
65
|
-
<div class="
|
|
78
|
+
<div class="m-selected-content">
|
|
66
79
|
<!-- 已选技能 -->
|
|
67
|
-
<el-divider
|
|
80
|
+
<el-divider
|
|
81
|
+
>已选技能
|
|
68
82
|
<!-- <el-checkbox v-model="sort" border size="small">开启排序</el-checkbox> -->
|
|
69
83
|
</el-divider>
|
|
70
84
|
<div class="m-selected-skills">
|
|
71
85
|
<ul class="m-skills-list">
|
|
72
|
-
<li
|
|
86
|
+
<li
|
|
87
|
+
v-for="(skill, index) in selected"
|
|
88
|
+
:key="skill.SkillID + '' + index"
|
|
89
|
+
class="m-skill"
|
|
90
|
+
@contextmenu.prevent="(event) => onContextmenu(event, skill)"
|
|
91
|
+
>
|
|
73
92
|
<div class="u-skill" v-if="skill && skill.IconID">
|
|
74
|
-
<img
|
|
93
|
+
<img
|
|
94
|
+
class="u-skill-icon"
|
|
95
|
+
:class="skill.iconSize ? `u-skill-icon_${skill.iconSize}` : ''"
|
|
96
|
+
:src="iconURL(skill.IconID)"
|
|
97
|
+
:alt="skill.IconID"
|
|
98
|
+
/>
|
|
75
99
|
<i class="u-gcd-icon" v-show="skill.WithoutGcd">
|
|
76
|
-
<
|
|
100
|
+
<el-icon><Timer /></el-icon>
|
|
77
101
|
</i>
|
|
78
|
-
<span
|
|
102
|
+
<span
|
|
103
|
+
class="u-name"
|
|
104
|
+
:class="{ 'u-name_underline': skill.underline }"
|
|
105
|
+
:title="skill.Name"
|
|
106
|
+
>{{ skill.Name }}</span
|
|
107
|
+
>
|
|
79
108
|
<span class="u-note" :title="skill.n" :style="itemStyle(skill)">{{ skill.n }}</span>
|
|
80
109
|
</div>
|
|
81
|
-
<i
|
|
110
|
+
<i
|
|
111
|
+
class="u-remove-icon"
|
|
112
|
+
:class="skill.iconSize ? `u-remove-icon_${skill.iconSize}` : ''"
|
|
113
|
+
title="移除"
|
|
114
|
+
@click="removeSelected(index)"
|
|
115
|
+
><el-icon><Close /></el-icon
|
|
116
|
+
></i>
|
|
82
117
|
</li>
|
|
83
118
|
</ul>
|
|
84
119
|
</div>
|
|
85
120
|
</div>
|
|
86
121
|
</div>
|
|
87
|
-
<el-dialog
|
|
122
|
+
<el-dialog v-model="showRemark" width="600px" append-to-body draggable class="c-large-dialog" title="设置备注">
|
|
88
123
|
<el-form label-position="left" label-width="80px">
|
|
89
124
|
<el-form-item label="备注">
|
|
90
125
|
<el-input placeholder="输入备注" v-model="form.n"></el-input>
|
|
@@ -101,32 +136,35 @@
|
|
|
101
136
|
</el-select>
|
|
102
137
|
</el-form-item>
|
|
103
138
|
<el-form-item label="预览">
|
|
104
|
-
<span :style="nStyle">{{ form.n ||
|
|
139
|
+
<span :style="nStyle">{{ form.n || "示例文字" }}</span>
|
|
105
140
|
</el-form-item>
|
|
106
141
|
</el-form>
|
|
107
|
-
<
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
142
|
+
<template #footer>
|
|
143
|
+
<span class="m-dialog-footer">
|
|
144
|
+
<el-button @click="showRemark = false">取 消</el-button>
|
|
145
|
+
<el-button type="primary" @click="confirm">确 定 </el-button>
|
|
146
|
+
</span>
|
|
147
|
+
</template>
|
|
112
148
|
</el-dialog>
|
|
113
149
|
</div>
|
|
114
150
|
</template>
|
|
115
151
|
|
|
116
152
|
<script>
|
|
117
|
-
import
|
|
153
|
+
import { h } from "vue";
|
|
154
|
+
import { ElIcon } from "element-plus";
|
|
155
|
+
import { Check, Close } from "@element-plus/icons-vue";
|
|
118
156
|
import { iconLink } from "@jx3box/jx3box-common/js/utils";
|
|
119
|
-
import { getSkill } from "
|
|
157
|
+
import { getSkill } from "../service/resource";
|
|
120
158
|
import SkillMartial from "./SkillMartial.vue";
|
|
121
159
|
|
|
122
160
|
import Sortable from "sortablejs";
|
|
123
161
|
import { cloneDeep, pick } from "lodash";
|
|
124
162
|
|
|
125
|
-
import
|
|
126
|
-
|
|
163
|
+
import ContextMenu from "@imengyu/vue3-context-menu";
|
|
164
|
+
import "@imengyu/vue3-context-menu/lib/vue3-context-menu.css";
|
|
165
|
+
|
|
166
|
+
const renderMenuIcon = (IconComponent) => h(ElIcon, null, () => h(IconComponent));
|
|
127
167
|
|
|
128
|
-
import contextmenu from "vue-contextmenujs";
|
|
129
|
-
Vue.use(contextmenu);
|
|
130
168
|
export default {
|
|
131
169
|
name: "ComboSkill",
|
|
132
170
|
components: {
|
|
@@ -176,27 +214,27 @@ export default {
|
|
|
176
214
|
n: "",
|
|
177
215
|
c: "",
|
|
178
216
|
fz: "14",
|
|
179
|
-
fw: "500"
|
|
217
|
+
fw: "500",
|
|
180
218
|
},
|
|
181
219
|
showRemark: false,
|
|
182
220
|
currentSkill: {},
|
|
183
221
|
|
|
184
222
|
predefineColors: [
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
]
|
|
223
|
+
"#ff4500",
|
|
224
|
+
"#ff8c00",
|
|
225
|
+
"#ffd700",
|
|
226
|
+
"#90ee90",
|
|
227
|
+
"#00ced1",
|
|
228
|
+
"#1e90ff",
|
|
229
|
+
"#c71585",
|
|
230
|
+
"rgba(255, 69, 0, 0.68)",
|
|
231
|
+
"rgb(255, 120, 0)",
|
|
232
|
+
"hsv(51, 100, 98)",
|
|
233
|
+
"hsva(120, 40, 94, 0.5)",
|
|
234
|
+
"hsl(181, 100%, 37%)",
|
|
235
|
+
"hsla(209, 100%, 56%, 0.73)",
|
|
236
|
+
"#c7158577",
|
|
237
|
+
],
|
|
200
238
|
};
|
|
201
239
|
},
|
|
202
240
|
computed: {
|
|
@@ -210,12 +248,15 @@ export default {
|
|
|
210
248
|
return !this.query && !this.skill["length"];
|
|
211
249
|
},
|
|
212
250
|
nStyle() {
|
|
213
|
-
return pick(
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
251
|
+
return pick(
|
|
252
|
+
{
|
|
253
|
+
color: this.form.c,
|
|
254
|
+
fontSize: (this.form.fz || 12) + "px",
|
|
255
|
+
fontWeight: this.form.fw,
|
|
256
|
+
},
|
|
257
|
+
["color", "fontSize", "fontWeight"]
|
|
258
|
+
);
|
|
259
|
+
},
|
|
219
260
|
},
|
|
220
261
|
mounted() {
|
|
221
262
|
this.$nextTick(() => {
|
|
@@ -302,14 +343,16 @@ export default {
|
|
|
302
343
|
});
|
|
303
344
|
},
|
|
304
345
|
onContextmenu(event, skill) {
|
|
305
|
-
|
|
346
|
+
ContextMenu.showContextMenu({
|
|
347
|
+
x: event.x || event.clientX,
|
|
348
|
+
y: event.y || event.clientY,
|
|
306
349
|
items: [
|
|
307
350
|
{
|
|
308
351
|
label: !skill?.WithoutGcd ? "设置为无GCD技能" : "设置为有GCD技能",
|
|
309
352
|
onClick: () => {
|
|
310
|
-
|
|
353
|
+
skill.WithoutGcd = !skill.WithoutGcd;
|
|
311
354
|
},
|
|
312
|
-
icon: !skill?.WithoutGcd ?
|
|
355
|
+
icon: !skill?.WithoutGcd ? renderMenuIcon(Check) : renderMenuIcon(Close),
|
|
313
356
|
},
|
|
314
357
|
{
|
|
315
358
|
label: "图标大小",
|
|
@@ -317,13 +360,13 @@ export default {
|
|
|
317
360
|
{
|
|
318
361
|
label: "小",
|
|
319
362
|
onClick: () => {
|
|
320
|
-
|
|
363
|
+
skill.iconSize = "small";
|
|
321
364
|
},
|
|
322
365
|
},
|
|
323
366
|
{
|
|
324
367
|
label: "大",
|
|
325
368
|
onClick: () => {
|
|
326
|
-
|
|
369
|
+
skill.iconSize = "large";
|
|
327
370
|
},
|
|
328
371
|
},
|
|
329
372
|
],
|
|
@@ -331,19 +374,17 @@ export default {
|
|
|
331
374
|
{
|
|
332
375
|
label: skill.underline ? "取消下划线" : "设置下划线",
|
|
333
376
|
onClick: () => {
|
|
334
|
-
|
|
377
|
+
skill.underline = !skill.underline;
|
|
335
378
|
},
|
|
336
379
|
},
|
|
337
380
|
{
|
|
338
381
|
label: "备注",
|
|
339
382
|
onClick: () => {
|
|
340
383
|
this.showRemark = true;
|
|
341
|
-
this.currentSkill = skill
|
|
384
|
+
this.currentSkill = skill;
|
|
342
385
|
},
|
|
343
|
-
}
|
|
386
|
+
},
|
|
344
387
|
],
|
|
345
|
-
event,
|
|
346
|
-
customClass: "custom-class",
|
|
347
388
|
zIndex: 99999,
|
|
348
389
|
minWidth: 200,
|
|
349
390
|
});
|
|
@@ -365,32 +406,37 @@ export default {
|
|
|
365
406
|
item.underline && (obj.underline = item.underline);
|
|
366
407
|
|
|
367
408
|
item.client = this.client;
|
|
368
|
-
skills_html += `<li class="w-skill-combo-item">${item.SkillID},${item.Name},${
|
|
409
|
+
skills_html += `<li class="w-skill-combo-item">${item.SkillID},${item.Name},${
|
|
410
|
+
item.IconID
|
|
411
|
+
},${JSON.stringify(obj)}</li>`;
|
|
369
412
|
});
|
|
370
413
|
const html = `<ul class="e-skill-combo w-skill-combo">${skills_html}</ul>`;
|
|
371
414
|
return html;
|
|
372
415
|
},
|
|
373
416
|
confirm() {
|
|
374
417
|
if (this.form.n) {
|
|
375
|
-
this
|
|
376
|
-
this
|
|
377
|
-
this
|
|
378
|
-
this
|
|
418
|
+
this.currentSkill.n = this.form.n;
|
|
419
|
+
this.currentSkill.c = this.form.c;
|
|
420
|
+
this.currentSkill.fz = this.form.fz;
|
|
421
|
+
this.currentSkill.fw = this.form.fw;
|
|
379
422
|
}
|
|
380
423
|
|
|
381
|
-
this.showRemark = false
|
|
424
|
+
this.showRemark = false;
|
|
382
425
|
},
|
|
383
426
|
itemStyle(item) {
|
|
384
|
-
return pick(
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
427
|
+
return pick(
|
|
428
|
+
{
|
|
429
|
+
color: item.c,
|
|
430
|
+
fontSize: (item.fz || 12) + "px",
|
|
431
|
+
fontWeight: item.fw,
|
|
432
|
+
},
|
|
433
|
+
["color", "fontSize", "fontWeight"]
|
|
434
|
+
);
|
|
435
|
+
},
|
|
390
436
|
},
|
|
391
437
|
};
|
|
392
438
|
</script>
|
|
393
439
|
|
|
394
440
|
<style lang="less">
|
|
395
|
-
@import "
|
|
441
|
+
@import "../assets/css/tinymce/combo.less";
|
|
396
442
|
</style>
|
|
@@ -1,9 +1,4 @@
|
|
|
1
|
-
<!--
|
|
2
|
-
* @Author: iRuxu
|
|
3
|
-
* @Date: 2022-07-17 00:13:35
|
|
4
|
-
* @LastEditTime: 2022-07-17 00:40:25
|
|
5
|
-
* @Description:
|
|
6
|
-
-->
|
|
1
|
+
<!-- 骚图hover:来源作者-->
|
|
7
2
|
<template>
|
|
8
3
|
<div class="w-author w-author__post" v-loading="loading">
|
|
9
4
|
<div class="w-author-wrapper el-popover" v-if="data">
|
|
@@ -32,16 +27,23 @@
|
|
|
32
27
|
|
|
33
28
|
<script>
|
|
34
29
|
import { authorLink } from "@jx3box/jx3box-common/js/utils";
|
|
35
|
-
import { getEmotion } from "
|
|
36
|
-
import
|
|
30
|
+
import { getEmotion } from "../service/author";
|
|
31
|
+
import JX3BOX from "@jx3box/jx3box-common/data/jx3box.json";
|
|
37
32
|
import dayjs from "dayjs";
|
|
38
33
|
import Avatar from "./Avatar.vue";
|
|
34
|
+
|
|
35
|
+
const { __server, __imgPath, __userLevelColor } = JX3BOX;
|
|
39
36
|
export default {
|
|
40
37
|
name: "PostAuthor",
|
|
41
38
|
components: {
|
|
42
39
|
Avatar,
|
|
43
40
|
},
|
|
44
|
-
props:
|
|
41
|
+
props: {
|
|
42
|
+
id: {
|
|
43
|
+
type: [String, Number],
|
|
44
|
+
default: "",
|
|
45
|
+
},
|
|
46
|
+
},
|
|
45
47
|
data: () => ({
|
|
46
48
|
data: null,
|
|
47
49
|
loading: false,
|
|
@@ -74,7 +76,7 @@ export default {
|
|
|
74
76
|
</script>
|
|
75
77
|
|
|
76
78
|
<style scoped lang="less">
|
|
77
|
-
@import "
|
|
79
|
+
@import "../assets/css/module/author.less";
|
|
78
80
|
.w-author {
|
|
79
81
|
.u-meta {
|
|
80
82
|
display: flex;
|
|
@@ -85,7 +87,7 @@ export default {
|
|
|
85
87
|
}
|
|
86
88
|
.u-meta-label {
|
|
87
89
|
.mr(10px);
|
|
88
|
-
background-color:
|
|
90
|
+
background-color: #f6f8fa;
|
|
89
91
|
padding: 0 8px;
|
|
90
92
|
.r(2px);
|
|
91
93
|
}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="w-qrcode" @click="togglePic" :class="{ on: active }" v-if="mode == 'cms'">
|
|
3
|
+
<img class="u-icon" svg-inline src=".././assets/img/other/qr-code.svg" />
|
|
4
|
+
<span class="u-text">二维码</span>
|
|
5
|
+
<div class="u-qrcode">
|
|
6
|
+
<qrcode-vue class="u-pic" :value="value" :size="size" level="H"></qrcode-vue>
|
|
7
|
+
<span>扫一扫即可访问</span>
|
|
8
|
+
</div>
|
|
9
|
+
</div>
|
|
10
|
+
<div class="w-qrcode-static" v-else-if="mode == 'static'">
|
|
11
|
+
<div class="u-qrcode">
|
|
12
|
+
<qrcode-vue class="u-pic" :value="value" :size="size" level="H"></qrcode-vue>
|
|
13
|
+
<span class="u-txt"
|
|
14
|
+
><img class="u-icon" svg-inline src="./assets/img/other/qr-code.svg" />扫一扫手机访问</span
|
|
15
|
+
>
|
|
16
|
+
</div>
|
|
17
|
+
</div>
|
|
18
|
+
</template>
|
|
19
|
+
|
|
20
|
+
<script>
|
|
21
|
+
import QrcodeVue from "qrcode.vue";
|
|
22
|
+
export default {
|
|
23
|
+
name: "QRcode",
|
|
24
|
+
props: {
|
|
25
|
+
href: {
|
|
26
|
+
type: String,
|
|
27
|
+
default: "",
|
|
28
|
+
},
|
|
29
|
+
s: {
|
|
30
|
+
type: [String, Number],
|
|
31
|
+
default: 100,
|
|
32
|
+
},
|
|
33
|
+
v: {
|
|
34
|
+
type: String,
|
|
35
|
+
default: "cms",
|
|
36
|
+
},
|
|
37
|
+
},
|
|
38
|
+
data: function () {
|
|
39
|
+
return {
|
|
40
|
+
value: this.href || location.href,
|
|
41
|
+
size: this.s || 100,
|
|
42
|
+
active: false,
|
|
43
|
+
mode: this.v || "cms",
|
|
44
|
+
};
|
|
45
|
+
},
|
|
46
|
+
computed: {},
|
|
47
|
+
methods: {
|
|
48
|
+
togglePic: function (e) {
|
|
49
|
+
e.stopPropagation();
|
|
50
|
+
this.active = !this.active;
|
|
51
|
+
},
|
|
52
|
+
},
|
|
53
|
+
mounted: function () {
|
|
54
|
+
const vm = this;
|
|
55
|
+
document.addEventListener("click", function () {
|
|
56
|
+
vm.active = false;
|
|
57
|
+
});
|
|
58
|
+
},
|
|
59
|
+
components: {
|
|
60
|
+
QrcodeVue,
|
|
61
|
+
},
|
|
62
|
+
};
|
|
63
|
+
</script>
|
|
64
|
+
|
|
65
|
+
<style lang="less">
|
|
66
|
+
.w-qrcode {
|
|
67
|
+
.dbi;
|
|
68
|
+
.u-icon {
|
|
69
|
+
.mr(5px);
|
|
70
|
+
.size(14px);
|
|
71
|
+
.y(-2px);
|
|
72
|
+
fill: @color;
|
|
73
|
+
}
|
|
74
|
+
.u-text {
|
|
75
|
+
.fz(13px);
|
|
76
|
+
user-select: none;
|
|
77
|
+
}
|
|
78
|
+
.pointer;
|
|
79
|
+
transition: 0.1s ease-in-out;
|
|
80
|
+
&:hover {
|
|
81
|
+
color: #f39;
|
|
82
|
+
.u-icon {
|
|
83
|
+
fill: #f39;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
.u-qrcode {
|
|
88
|
+
.none;
|
|
89
|
+
.pa;
|
|
90
|
+
.mt(5px);
|
|
91
|
+
padding: 10px;
|
|
92
|
+
border: 1px solid #e8e8e8;
|
|
93
|
+
z-index: 1;
|
|
94
|
+
background: #fff;
|
|
95
|
+
border-radius: 3px;
|
|
96
|
+
font-size: 12px;
|
|
97
|
+
text-align: center;
|
|
98
|
+
color: #888;
|
|
99
|
+
box-shadow: 0 0 8px rgba(0, 0, 0, 0.1);
|
|
100
|
+
}
|
|
101
|
+
.u-pic {
|
|
102
|
+
.size(100px);
|
|
103
|
+
.mb(5px);
|
|
104
|
+
}
|
|
105
|
+
&.on {
|
|
106
|
+
.u-qrcode {
|
|
107
|
+
.db;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
@media screen and (max-width: @phone) {
|
|
112
|
+
.w-qrcode {
|
|
113
|
+
.none;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
.w-qrcode-static {
|
|
117
|
+
.u-qrcode {
|
|
118
|
+
.ps;
|
|
119
|
+
}
|
|
120
|
+
.u-icon {
|
|
121
|
+
.mr(5px);
|
|
122
|
+
.size(14px);
|
|
123
|
+
.y(-2px);
|
|
124
|
+
fill: @color;
|
|
125
|
+
}
|
|
126
|
+
.u-pic {
|
|
127
|
+
background-color: #fff;
|
|
128
|
+
padding: 7px 7px 7px 8px;
|
|
129
|
+
}
|
|
130
|
+
.u-txt {
|
|
131
|
+
padding: 0 5px;
|
|
132
|
+
.db;
|
|
133
|
+
.fz(12px,2);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
</style>
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
showKungfuName(kungfu)
|
|
27
27
|
}}</span>
|
|
28
28
|
<img
|
|
29
|
-
src="
|
|
29
|
+
src=".././assets/img/skillset.png"
|
|
30
30
|
class="u-title-img"
|
|
31
31
|
alt="" />
|
|
32
32
|
</div>
|
|
@@ -57,7 +57,7 @@
|
|
|
57
57
|
<div class="u-title">
|
|
58
58
|
<span class="u-title-name">奇穴技能</span>
|
|
59
59
|
<img
|
|
60
|
-
src="
|
|
60
|
+
src=".././assets/img/skillset.png"
|
|
61
61
|
class="u-title-img"
|
|
62
62
|
alt="" />
|
|
63
63
|
</div>
|
|
@@ -84,7 +84,7 @@
|
|
|
84
84
|
<div class="u-title">
|
|
85
85
|
<span class="u-title-name">江湖轻功</span>
|
|
86
86
|
<img
|
|
87
|
-
src="
|
|
87
|
+
src=".././assets/img/skillset.png"
|
|
88
88
|
class="u-title-img"
|
|
89
89
|
alt="" />
|
|
90
90
|
</div>
|
|
@@ -114,7 +114,7 @@
|
|
|
114
114
|
<div class="u-title">
|
|
115
115
|
<span class="u-title-name">门派技能</span>
|
|
116
116
|
<img
|
|
117
|
-
src="
|
|
117
|
+
src=".././assets/img/skillset.png"
|
|
118
118
|
class="u-title-img"
|
|
119
119
|
alt="" />
|
|
120
120
|
</div>
|
|
@@ -143,7 +143,7 @@
|
|
|
143
143
|
<div class="u-title">
|
|
144
144
|
<span class="u-title-name">通用技能</span>
|
|
145
145
|
<img
|
|
146
|
-
src="
|
|
146
|
+
src=".././assets/img/skillset.png"
|
|
147
147
|
class="u-title-img"
|
|
148
148
|
alt="" />
|
|
149
149
|
</div>
|
|
@@ -178,14 +178,14 @@ import {
|
|
|
178
178
|
getSkills,
|
|
179
179
|
getTalents,
|
|
180
180
|
getMobileForceSkillList,
|
|
181
|
-
} from "
|
|
181
|
+
} from "../service/node";
|
|
182
182
|
import kungfumap_std from "@jx3box/jx3box-data/data/martial/kungfu_std.json";
|
|
183
183
|
import kungfumap_origin from "@jx3box/jx3box-data/data/martial/kungfu_origin.json";
|
|
184
184
|
import { flattenDeep, uniqBy } from "lodash";
|
|
185
185
|
import kungfus from "@jx3box/jx3box-data/data/martial/kungfuid.json";
|
|
186
186
|
import { iconLink } from "@jx3box/jx3box-common/js/utils";
|
|
187
187
|
export default {
|
|
188
|
-
name: "
|
|
188
|
+
name: "SkillMartial",
|
|
189
189
|
props: {
|
|
190
190
|
subtype: {
|
|
191
191
|
type: String,
|
|
@@ -215,9 +215,7 @@ export default {
|
|
|
215
215
|
return xfmap[this.subtype]?.id;
|
|
216
216
|
},
|
|
217
217
|
skillIds() {
|
|
218
|
-
return flattenDeep(
|
|
219
|
-
Object.values(this.kungfumap?.[this.mountId]?.["skills"])
|
|
220
|
-
);
|
|
218
|
+
return flattenDeep(Object.values(this.mountData?.skills || {}));
|
|
221
219
|
},
|
|
222
220
|
ids() {
|
|
223
221
|
return [
|
|
@@ -229,6 +227,9 @@ export default {
|
|
|
229
227
|
kungfumap() {
|
|
230
228
|
return this.client == "origin" ? kungfumap_origin : kungfumap_std;
|
|
231
229
|
},
|
|
230
|
+
mountData() {
|
|
231
|
+
return this.kungfumap?.[this.mountId] || {};
|
|
232
|
+
},
|
|
232
233
|
params() {
|
|
233
234
|
return {
|
|
234
235
|
ids: this.ids,
|
|
@@ -249,7 +250,7 @@ export default {
|
|
|
249
250
|
// 门派技能数据
|
|
250
251
|
kungfusSkills: function () {
|
|
251
252
|
const obj = {};
|
|
252
|
-
Object.entries(this.
|
|
253
|
+
Object.entries(this.mountData?.skills || {}).forEach(
|
|
253
254
|
([key, value]) => {
|
|
254
255
|
obj[key] = value.map(SkillID => {
|
|
255
256
|
const currentSkill = this.data.find(
|
|
@@ -263,7 +264,7 @@ export default {
|
|
|
263
264
|
},
|
|
264
265
|
// 门派技能套路id
|
|
265
266
|
kungfus: function () {
|
|
266
|
-
return this.
|
|
267
|
+
return this.mountData?.kungfus || [];
|
|
267
268
|
},
|
|
268
269
|
talentSkills() {
|
|
269
270
|
return this.talentSkillIds
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { createApp } from "vue";
|
|
2
|
+
|
|
3
|
+
import ArticlePage from "../views/article.vue";
|
|
4
|
+
const app = createApp(ArticlePage);
|
|
5
|
+
|
|
6
|
+
import ElementPlus from "element-plus";
|
|
7
|
+
import "element-plus/dist/index.css";
|
|
8
|
+
import "@jx3box/jx3box-common/css/element-plus-theme.scss";
|
|
9
|
+
app.use(ElementPlus);
|
|
10
|
+
|
|
11
|
+
import '@jx3box/jx3box-common/css/font.css';
|
|
12
|
+
import '@jx3box/jx3box-common/css/normalize.css';
|
|
13
|
+
|
|
14
|
+
app.mount("#app");
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { createApp } from "vue";
|
|
2
|
+
|
|
3
|
+
import MarkdownPage from "../views/markdown.vue";
|
|
4
|
+
const app = createApp(MarkdownPage);
|
|
5
|
+
|
|
6
|
+
import ElementPlus from "element-plus";
|
|
7
|
+
import "element-plus/dist/index.css";
|
|
8
|
+
import "@jx3box/jx3box-common/css/element-plus-theme.scss";
|
|
9
|
+
app.use(ElementPlus);
|
|
10
|
+
|
|
11
|
+
import '@jx3box/jx3box-common/css/font.css';
|
|
12
|
+
import '@jx3box/jx3box-common/css/normalize.css';
|
|
13
|
+
|
|
14
|
+
app.mount("#app");
|