@jx3box/jx3box-ui 2.0.28 → 2.0.29
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/package.json
CHANGED
package/src/bread/DesignTask.vue
CHANGED
|
@@ -9,10 +9,18 @@
|
|
|
9
9
|
>
|
|
10
10
|
<el-form :model="form" ref="form" :label-position="isPhone ? 'top' : 'left'" label-width="80px">
|
|
11
11
|
<el-form-item :label="$jx3boxT('jx3boxUi.designTask.formTitle', '标题')">
|
|
12
|
-
<el-input
|
|
12
|
+
<el-input
|
|
13
|
+
v-model="form.title"
|
|
14
|
+
:placeholder="$jx3boxT('jx3boxUi.designTask.titlePlaceholder', '请输入标题')"
|
|
15
|
+
></el-input>
|
|
13
16
|
</el-form-item>
|
|
14
17
|
<el-form-item :label="$jx3boxT('jx3boxUi.designTask.formType', '类型')">
|
|
15
|
-
<el-select
|
|
18
|
+
<el-select
|
|
19
|
+
v-model="form.type"
|
|
20
|
+
:placeholder="$jx3boxT('jx3boxUi.designTask.typePlaceholder', '请选择类型')"
|
|
21
|
+
style="width: 100%"
|
|
22
|
+
filterable
|
|
23
|
+
>
|
|
16
24
|
<el-option v-for="item in config" :key="item.id" :label="item.label" :value="item.name"></el-option>
|
|
17
25
|
</el-select>
|
|
18
26
|
</el-form-item>
|
|
@@ -24,7 +32,10 @@
|
|
|
24
32
|
</el-radio-group>
|
|
25
33
|
</el-form-item>
|
|
26
34
|
<el-form-item :label="$jx3boxT('jx3boxUi.designTask.formRemark', '备注')">
|
|
27
|
-
<el-input
|
|
35
|
+
<el-input
|
|
36
|
+
v-model="form.remark"
|
|
37
|
+
:placeholder="$jx3boxT('jx3boxUi.designTask.remarkPlaceholder', '请输入备注')"
|
|
38
|
+
></el-input>
|
|
28
39
|
</el-form-item>
|
|
29
40
|
<el-form-item :label="$jx3boxT('jx3boxUi.designTask.formStar', '星级')" class="m-star-line">
|
|
30
41
|
<el-rate v-model="form.star" :colors="colors"></el-rate>
|
|
@@ -34,18 +45,30 @@
|
|
|
34
45
|
<el-divider content-position="left">{{ $jx3boxT("jx3boxUi.designTask.recent", "近期推送") }}</el-divider>
|
|
35
46
|
<template v-if="logs && logs.length">
|
|
36
47
|
<el-table :data="logs" border size="small" max-height="300px">
|
|
37
|
-
<el-table-column
|
|
48
|
+
<el-table-column
|
|
49
|
+
:label="$jx3boxT('jx3boxUi.designTask.pushAt', '推送时间')"
|
|
50
|
+
prop="push_at"
|
|
51
|
+
align="center"
|
|
52
|
+
>
|
|
38
53
|
<template #default="{ row }">
|
|
39
54
|
{{ formatTime(row.push_at) }}
|
|
40
55
|
</template>
|
|
41
56
|
</el-table-column>
|
|
42
|
-
<el-table-column
|
|
57
|
+
<el-table-column
|
|
58
|
+
:label="$jx3boxT('jx3boxUi.designTask.pusher', '推送人')"
|
|
59
|
+
prop="pusher.display_name"
|
|
60
|
+
align="center"
|
|
61
|
+
></el-table-column>
|
|
43
62
|
<el-table-column :label="$jx3boxT('jx3boxUi.designTask.star', '星级')" prop="star" align="center">
|
|
44
63
|
<template #default="{ row }">
|
|
45
64
|
<el-rate v-model="row.star" disabled :colors="colors"></el-rate>
|
|
46
65
|
</template>
|
|
47
66
|
</el-table-column>
|
|
48
|
-
<el-table-column
|
|
67
|
+
<el-table-column
|
|
68
|
+
:label="$jx3boxT('jx3boxUi.designTask.remark', '备注')"
|
|
69
|
+
prop="remark"
|
|
70
|
+
align="center"
|
|
71
|
+
></el-table-column>
|
|
49
72
|
</el-table>
|
|
50
73
|
</template>
|
|
51
74
|
<el-alert
|
|
@@ -184,11 +207,6 @@ export default {
|
|
|
184
207
|
.el-form-item {
|
|
185
208
|
margin-bottom: 12px;
|
|
186
209
|
}
|
|
187
|
-
.m-star-line {
|
|
188
|
-
.el-form-item__content {
|
|
189
|
-
top: 10px;
|
|
190
|
-
}
|
|
191
|
-
}
|
|
192
210
|
.u-time {
|
|
193
211
|
color: #c0c4cc;
|
|
194
212
|
}
|
|
@@ -1,10 +1,6 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div class="u-cmt">
|
|
3
|
-
<div
|
|
4
|
-
class="u-text"
|
|
5
|
-
v-if="content != ''"
|
|
6
|
-
v-html="renderContent"
|
|
7
|
-
></div>
|
|
3
|
+
<div class="u-text" v-if="content != ''" v-html="renderContent"></div>
|
|
8
4
|
<div class="u-attachements" v-if="attachments.length">
|
|
9
5
|
<el-image
|
|
10
6
|
v-for="url in attachments"
|
|
@@ -16,47 +12,22 @@
|
|
|
16
12
|
</div>
|
|
17
13
|
<div class="u-toolbar u-toolbar--primary">
|
|
18
14
|
<div class="u-toolbar-left">
|
|
19
|
-
<el-button
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
@click="doLike(true)"
|
|
24
|
-
><img
|
|
25
|
-
class="u-up" svg-inline
|
|
26
|
-
src="../../assets/img/comment/heart_1.svg"
|
|
27
|
-
alt=""
|
|
28
|
-
/>{{ $jx3boxT("jx3boxUi.commentContent.like", "点赞") }}<span class="u-like-count">{{ likesFormat(hasLikeCount) }}</span></el-button
|
|
15
|
+
<el-button v-if="!currentUserHadLike" link size="small" @click="doLike(true)"
|
|
16
|
+
><img class="u-up" svg-inline src="../../assets/img/comment/heart_1.svg" alt="" />{{
|
|
17
|
+
$jx3boxT("jx3boxUi.commentContent.like", "点赞")
|
|
18
|
+
}}<span class="u-like-count">{{ likesFormat(hasLikeCount) }}</span></el-button
|
|
29
19
|
>
|
|
30
|
-
<el-button
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
@click="doLike(false)"
|
|
35
|
-
><img
|
|
36
|
-
class="u-up" svg-inline
|
|
37
|
-
src="../../assets/img/comment/heart_2.svg"
|
|
38
|
-
alt=""
|
|
39
|
-
/>{{ $jx3boxT("jx3boxUi.commentContent.liked", "已赞") }}<span class="u-like-count">{{
|
|
40
|
-
likesFormat(hasLikeCount)
|
|
41
|
-
}}</span></el-button
|
|
42
|
-
>
|
|
43
|
-
<el-button
|
|
44
|
-
link
|
|
45
|
-
size="small"
|
|
46
|
-
icon="ChatRound"
|
|
47
|
-
@click="showForm = !showForm"
|
|
48
|
-
type="primary"
|
|
49
|
-
>{{ $jx3boxT("jx3boxUi.commentContent.reply", "回复") }}</el-button
|
|
50
|
-
>
|
|
51
|
-
<el-button
|
|
52
|
-
v-if="canDelete"
|
|
53
|
-
link
|
|
54
|
-
icon="Delete"
|
|
55
|
-
size="small"
|
|
56
|
-
@click="deleteComment()"
|
|
57
|
-
type="danger"
|
|
58
|
-
>{{ $jx3boxT("jx3boxUi.commentContent.delete", "删除") }}</el-button
|
|
20
|
+
<el-button link size="small" v-if="currentUserHadLike" @click="doLike(false)"
|
|
21
|
+
><img class="u-up" svg-inline src="../../assets/img/comment/heart_2.svg" alt="" />{{
|
|
22
|
+
$jx3boxT("jx3boxUi.commentContent.liked", "已赞")
|
|
23
|
+
}}<span class="u-like-count">{{ likesFormat(hasLikeCount) }}</span></el-button
|
|
59
24
|
>
|
|
25
|
+
<el-button link size="small" icon="ChatRound" @click="showForm = !showForm" type="primary">{{
|
|
26
|
+
$jx3boxT("jx3boxUi.commentContent.reply", "回复")
|
|
27
|
+
}}</el-button>
|
|
28
|
+
<el-button v-if="canDelete" link icon="Delete" size="small" @click="deleteComment()" type="danger">{{
|
|
29
|
+
$jx3boxT("jx3boxUi.commentContent.delete", "删除")
|
|
30
|
+
}}</el-button>
|
|
60
31
|
<el-button
|
|
61
32
|
link
|
|
62
33
|
size="small"
|
|
@@ -112,13 +83,7 @@
|
|
|
112
83
|
</time>
|
|
113
84
|
</div>
|
|
114
85
|
<div class="u-toolbar-right">
|
|
115
|
-
<el-button
|
|
116
|
-
class="u-admin u-filter"
|
|
117
|
-
v-if="canAddWhite"
|
|
118
|
-
link
|
|
119
|
-
size="small"
|
|
120
|
-
@click="setWhiteComment(true)"
|
|
121
|
-
>
|
|
86
|
+
<el-button class="u-admin u-filter" v-if="canAddWhite" link size="small" @click="setWhiteComment(true)">
|
|
122
87
|
<img
|
|
123
88
|
class="u-icon-filter"
|
|
124
89
|
src="../../assets/img/editor/view.svg"
|
|
@@ -140,12 +105,7 @@
|
|
|
140
105
|
>
|
|
141
106
|
</div>
|
|
142
107
|
</div>
|
|
143
|
-
<el-form
|
|
144
|
-
v-if="showForm"
|
|
145
|
-
ref="form"
|
|
146
|
-
:model="newComment"
|
|
147
|
-
class="c-comment-subbox"
|
|
148
|
-
>
|
|
108
|
+
<el-form v-if="showForm" ref="form" :model="newComment" class="c-comment-subbox">
|
|
149
109
|
<el-form-item>
|
|
150
110
|
<el-input
|
|
151
111
|
type="textarea"
|
|
@@ -157,12 +117,7 @@
|
|
|
157
117
|
<el-form-item class="c-comment-tool-box">
|
|
158
118
|
<div class="c-comment-tools">
|
|
159
119
|
<el-icon class="u-upload-icon" @click="showUploader = !showUploader"><Picture /></el-icon>
|
|
160
|
-
<Emotion
|
|
161
|
-
class="c-comment-emotion"
|
|
162
|
-
@selected="handleEmotionSelected"
|
|
163
|
-
type="pop"
|
|
164
|
-
:max="6"
|
|
165
|
-
></Emotion>
|
|
120
|
+
<Emotion class="c-comment-emotion" @selected="handleEmotionSelected" type="pop" :max="6"></Emotion>
|
|
166
121
|
</div>
|
|
167
122
|
<Uploader
|
|
168
123
|
v-if="showUploader"
|
|
@@ -172,16 +127,12 @@
|
|
|
172
127
|
/>
|
|
173
128
|
</el-form-item>
|
|
174
129
|
<el-form-item>
|
|
175
|
-
<el-button
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
>
|
|
182
|
-
<el-button size="small" link @click="showForm = false" type="primary"
|
|
183
|
-
>{{ $jx3boxT("jx3boxUi.commentContent.collapse", "收起") }}</el-button
|
|
184
|
-
>
|
|
130
|
+
<el-button size="small" type="primary" @click="submit()" :disabled="disableSubmitBtn">{{
|
|
131
|
+
$jx3boxT("jx3boxUi.commentContent.submit", "提交")
|
|
132
|
+
}}</el-button>
|
|
133
|
+
<el-button size="small" link @click="showForm = false" type="primary">{{
|
|
134
|
+
$jx3boxT("jx3boxUi.commentContent.collapse", "收起")
|
|
135
|
+
}}</el-button>
|
|
185
136
|
</el-form-item>
|
|
186
137
|
</el-form>
|
|
187
138
|
</div>
|
|
@@ -306,9 +257,7 @@ export default {
|
|
|
306
257
|
return;
|
|
307
258
|
}
|
|
308
259
|
this.currentUserHadLike = setLike;
|
|
309
|
-
this.hasLikeCount = setLike
|
|
310
|
-
? this.hasLikeCount + 1
|
|
311
|
-
: this.hasLikeCount - 1;
|
|
260
|
+
this.hasLikeCount = setLike ? this.hasLikeCount + 1 : this.hasLikeCount - 1;
|
|
312
261
|
this.$emit("setLikeComment", setLike);
|
|
313
262
|
},
|
|
314
263
|
topComment(setTop) {
|
|
@@ -411,10 +360,7 @@ export default {
|
|
|
411
360
|
await this.$nextTick();
|
|
412
361
|
|
|
413
362
|
myField.focus();
|
|
414
|
-
myField.setSelectionRange(
|
|
415
|
-
endPos + value.length,
|
|
416
|
-
endPos + value.length
|
|
417
|
-
);
|
|
363
|
+
myField.setSelectionRange(endPos + value.length, endPos + value.length);
|
|
418
364
|
} else {
|
|
419
365
|
this.newComment.content = value;
|
|
420
366
|
}
|
|
@@ -432,27 +378,25 @@ export default {
|
|
|
432
378
|
<style lang="less">
|
|
433
379
|
/* src/comment/CommentContent.vue */
|
|
434
380
|
.c-comment-cmt {
|
|
435
|
-
|
|
436
381
|
//--el-color-primary:@primary;
|
|
437
382
|
|
|
438
383
|
flex-grow: 1;
|
|
439
384
|
position: relative;
|
|
440
385
|
.u-toolbar {
|
|
441
386
|
font-size: 12px;
|
|
442
|
-
margin-top:5px;
|
|
443
|
-
color
|
|
387
|
+
margin-top: 5px;
|
|
388
|
+
color: @v4tip;
|
|
444
389
|
.el-button.is-link {
|
|
445
|
-
color
|
|
390
|
+
color: @v4tip;
|
|
446
391
|
font-weight: normal;
|
|
447
|
-
&:hover{
|
|
448
|
-
color
|
|
392
|
+
&:hover {
|
|
393
|
+
color: @pink;
|
|
449
394
|
}
|
|
450
395
|
}
|
|
451
396
|
// .el-button.is-link.u-admin{
|
|
452
397
|
// color:orange;
|
|
453
398
|
// }
|
|
454
399
|
|
|
455
|
-
|
|
456
400
|
.el-button + .el-button {
|
|
457
401
|
margin-left: 20px;
|
|
458
402
|
}
|
|
@@ -490,6 +434,7 @@ export default {
|
|
|
490
434
|
line-height: 1.715;
|
|
491
435
|
img {
|
|
492
436
|
vertical-align: -3px;
|
|
437
|
+
display: inline-block;
|
|
493
438
|
}
|
|
494
439
|
white-space: pre-line;
|
|
495
440
|
}
|
|
@@ -16,7 +16,9 @@
|
|
|
16
16
|
<template v-if="titleExtra">
|
|
17
17
|
<span class="u-client" :class="'i-client-' + client">{{ showClientLabel(client) }}</span>
|
|
18
18
|
<span class="u-client u-zlp" v-if="zlp">{{ zlp }}</span>
|
|
19
|
-
<span class="u-client i-client-wujie" v-if="is_wujie">{{
|
|
19
|
+
<span class="u-client i-client-wujie" v-if="is_wujie">{{
|
|
20
|
+
$jx3boxT("jx3boxUi.postHeader.wujie", "无界")
|
|
21
|
+
}}</span>
|
|
20
22
|
</template>
|
|
21
23
|
</span>
|
|
22
24
|
</div>
|
|
@@ -29,7 +31,9 @@
|
|
|
29
31
|
<img svg-inline src="../../assets/img/single/author.svg" />
|
|
30
32
|
</i>
|
|
31
33
|
<a class="u-name" :href="author_link" v-if="!anonymous">{{ author_name }}</a>
|
|
32
|
-
<span class="u-name u-anonymous" v-else>{{
|
|
34
|
+
<span class="u-name u-anonymous" v-else>{{
|
|
35
|
+
$jx3boxT("jx3boxUi.postHeader.mysterious", "神秘侠士")
|
|
36
|
+
}}</span>
|
|
33
37
|
</div>
|
|
34
38
|
|
|
35
39
|
<!-- 自定义字段 -->
|
|
@@ -45,7 +49,9 @@
|
|
|
45
49
|
<div class="u-meta u-sub-block">
|
|
46
50
|
<em class="u-label">{{ $jx3boxT("jx3boxUi.postHeader.client", "适用客户端") }}</em>
|
|
47
51
|
<span class="u-value u-client" :class="client">{{ showClientLabel(client) }}</span>
|
|
48
|
-
<span class="u-value u-client wujie" v-if="is_wujie">{{
|
|
52
|
+
<span class="u-value u-client wujie" v-if="is_wujie">{{
|
|
53
|
+
$jx3boxT("jx3boxUi.postHeader.wujie", "无界")
|
|
54
|
+
}}</span>
|
|
49
55
|
</div>
|
|
50
56
|
|
|
51
57
|
<!-- 发布日期 -->
|
|
@@ -99,7 +105,6 @@ import JX3BOX from "@jx3box/jx3box-common/data/jx3box.json";
|
|
|
99
105
|
import { showDate, showTime } from "@jx3box/jx3box-common/js/moment";
|
|
100
106
|
import { editLink, authorLink } from "@jx3box/jx3box-common/js/utils.js";
|
|
101
107
|
import User from "@jx3box/jx3box-common/js/user.js";
|
|
102
|
-
import $ from "jquery";
|
|
103
108
|
import i18nMixin from "../../i18n/mixin";
|
|
104
109
|
const { __clients } = JX3BOX;
|
|
105
110
|
|
|
@@ -170,12 +175,13 @@ export default {
|
|
|
170
175
|
return this.post?.client || "std";
|
|
171
176
|
},
|
|
172
177
|
is_wujie: function () {
|
|
173
|
-
return this.post?.is_wujie
|
|
178
|
+
return this.post?.is_wujie;
|
|
174
179
|
},
|
|
175
180
|
},
|
|
176
181
|
watch: {
|
|
177
182
|
post: {
|
|
178
183
|
deep: true,
|
|
184
|
+
immediate: true,
|
|
179
185
|
handler: function () {
|
|
180
186
|
this.countWords();
|
|
181
187
|
},
|
|
@@ -187,20 +193,60 @@ export default {
|
|
|
187
193
|
},
|
|
188
194
|
countWords: function () {
|
|
189
195
|
this.$nextTick(() => {
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
.
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
196
|
+
const target = document.querySelector(".c-article");
|
|
197
|
+
if (target) {
|
|
198
|
+
this._doCount(target);
|
|
199
|
+
this._observeTarget(target);
|
|
200
|
+
} else {
|
|
201
|
+
this._observeBody();
|
|
202
|
+
}
|
|
203
|
+
});
|
|
204
|
+
},
|
|
205
|
+
_doCount: function (target) {
|
|
206
|
+
// 需要去除空格 \n \g
|
|
207
|
+
// eslint-disable-next-line no-useless-escape
|
|
208
|
+
const text = target.textContent?.replace(
|
|
209
|
+
/[\s|\n|\r|\t|\g|\ |\~|\`|\!|\@|\#|\$|\%|\^|\&|\*|\(|\)|\-|\_|\+|\=|\||\\|\[|\]|\{|\}|\;|\:|\"|\'|\,|\<|\.|\>|\/|\?|\,|\。|\?|\:|\;|\‘|\’|\”|\“|\、|\·|\!|\(|\)|\》|\《|\『|\』]/g,
|
|
210
|
+
""
|
|
211
|
+
);
|
|
212
|
+
|
|
213
|
+
this.wordCount = text?.length || 0;
|
|
214
|
+
},
|
|
215
|
+
_observeTarget: function (target) {
|
|
216
|
+
if (this.targetObserver) this.targetObserver.disconnect();
|
|
217
|
+
this.targetObserver = new MutationObserver(() => {
|
|
218
|
+
this._doCount(target);
|
|
219
|
+
});
|
|
220
|
+
this.targetObserver.observe(target, {
|
|
221
|
+
childList: true,
|
|
222
|
+
subtree: true,
|
|
223
|
+
characterData: true,
|
|
224
|
+
});
|
|
225
|
+
},
|
|
226
|
+
_observeBody: function () {
|
|
227
|
+
if (this.bodyObserver) return;
|
|
228
|
+
this.bodyObserver = new MutationObserver((mutations, observer) => {
|
|
229
|
+
const target = document.querySelector(".c-article");
|
|
230
|
+
if (target) {
|
|
231
|
+
this._doCount(target);
|
|
232
|
+
this._observeTarget(target);
|
|
233
|
+
observer.disconnect();
|
|
234
|
+
this.bodyObserver = null;
|
|
235
|
+
}
|
|
236
|
+
});
|
|
237
|
+
this.bodyObserver.observe(document.body, {
|
|
238
|
+
childList: true,
|
|
239
|
+
subtree: true,
|
|
200
240
|
});
|
|
201
241
|
},
|
|
202
242
|
},
|
|
203
|
-
mounted: function () {
|
|
243
|
+
mounted: function () {
|
|
244
|
+
this.countWords();
|
|
245
|
+
},
|
|
246
|
+
beforeUnmount: function () {
|
|
247
|
+
if (this.targetObserver) this.targetObserver.disconnect();
|
|
248
|
+
if (this.bodyObserver) this.bodyObserver.disconnect();
|
|
249
|
+
},
|
|
204
250
|
};
|
|
205
251
|
</script>
|
|
206
252
|
|
|
@@ -279,7 +325,7 @@ export default {
|
|
|
279
325
|
// .y(-4px);
|
|
280
326
|
margin-right: 5px;
|
|
281
327
|
color: #111;
|
|
282
|
-
top:2px;
|
|
328
|
+
top: 2px;
|
|
283
329
|
.pr;
|
|
284
330
|
}
|
|
285
331
|
}
|
|
@@ -300,8 +346,6 @@ export default {
|
|
|
300
346
|
}
|
|
301
347
|
|
|
302
348
|
.m-single-info {
|
|
303
|
-
|
|
304
|
-
|
|
305
349
|
margin-top: 10px;
|
|
306
350
|
.clearfix;
|
|
307
351
|
.fz(12px, 20px);
|