@jx3box/jx3box-ui 2.1.9 → 2.1.11
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/index.js +2 -0
- package/package.json +4 -4
- package/service/cms.js +7 -2
- package/src/App.vue +3 -3
- package/src/filters/orderBy.vue +1 -0
- package/src/interact/BatchReward.vue +222 -0
- package/src/single/PostTopic.vue +21 -23
- package/src/single/Thx.vue +84 -61
package/index.js
CHANGED
|
@@ -32,6 +32,7 @@ import Thx from "./src/single/Thx.vue";
|
|
|
32
32
|
import UserPop from "./src/author/UserPop.vue";
|
|
33
33
|
import SuspendCommon from "./src/SuspendCommon.vue";
|
|
34
34
|
import AdminDrop from "./src/bread/AdminDrop.vue";
|
|
35
|
+
import Copy from "./src/interact/Copy.vue";
|
|
35
36
|
|
|
36
37
|
import {
|
|
37
38
|
Jx3boxUiI18n,
|
|
@@ -72,6 +73,7 @@ const components = {
|
|
|
72
73
|
UserPop,
|
|
73
74
|
SuspendCommon,
|
|
74
75
|
AdminDrop,
|
|
76
|
+
Copy,
|
|
75
77
|
};
|
|
76
78
|
|
|
77
79
|
const install = function (app) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jx3box/jx3box-ui",
|
|
3
|
-
"version": "2.1.
|
|
3
|
+
"version": "2.1.11",
|
|
4
4
|
"description": "JX3BOX Vue3 UI",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -32,12 +32,12 @@
|
|
|
32
32
|
},
|
|
33
33
|
"dependencies": {
|
|
34
34
|
"@element-plus/icons-vue": "^2.3.2",
|
|
35
|
-
"@jx3box/jx3box-common": "^9.2.
|
|
35
|
+
"@jx3box/jx3box-common": "^9.2.1",
|
|
36
36
|
"@jx3box/jx3box-data": "^3.9.4",
|
|
37
|
-
"@jx3box/jx3box-editor": "^3.1.
|
|
37
|
+
"@jx3box/jx3box-editor": "^3.1.3",
|
|
38
38
|
"@jx3box/jx3box-emotion": "^1.3.0",
|
|
39
39
|
"@jx3box/jx3box-macro": "^1.0.3",
|
|
40
|
-
"@jx3box/jx3box-talent": "^1.3.
|
|
40
|
+
"@jx3box/jx3box-talent": "^1.3.13",
|
|
41
41
|
"@tinymce/tinymce-vue": "^5.1.1",
|
|
42
42
|
"@vueuse/core": "^9.13.0",
|
|
43
43
|
"@vueuse/head": "^0.7.6",
|
package/service/cms.js
CHANGED
|
@@ -7,7 +7,7 @@ function getPostAuthors(post_id) {
|
|
|
7
7
|
|
|
8
8
|
// 获取文章内容
|
|
9
9
|
function getPost(post_id) {
|
|
10
|
-
return $cms().get(`/api/cms/post/${post_id}`)
|
|
10
|
+
return $cms().get(`/api/cms/post/${post_id}`);
|
|
11
11
|
}
|
|
12
12
|
|
|
13
13
|
function uploadImage(formData) {
|
|
@@ -50,6 +50,10 @@ function getSliders(source_type, source_ids, client = "std") {
|
|
|
50
50
|
});
|
|
51
51
|
}
|
|
52
52
|
|
|
53
|
+
function getSlider(params) {
|
|
54
|
+
return $cms({ mute: true }).get(`/api/cms/news/item`, { params });
|
|
55
|
+
}
|
|
56
|
+
|
|
53
57
|
function getCollection(id) {
|
|
54
58
|
return $cms({ mute: true }).get(`/api/cms/post/collection/${id}`);
|
|
55
59
|
}
|
|
@@ -130,7 +134,7 @@ function refreshQQBotImage(data) {
|
|
|
130
134
|
|
|
131
135
|
// 获取用户permission
|
|
132
136
|
function getUserPermission() {
|
|
133
|
-
return $cms().get(`/api/cms/account/permission/i`)
|
|
137
|
+
return $cms().get(`/api/cms/account/permission/i`);
|
|
134
138
|
}
|
|
135
139
|
|
|
136
140
|
export {
|
|
@@ -142,6 +146,7 @@ export {
|
|
|
142
146
|
getDecorationJson,
|
|
143
147
|
checkTeamMember,
|
|
144
148
|
getSliders,
|
|
149
|
+
getSlider,
|
|
145
150
|
getCollection,
|
|
146
151
|
getTopicBucket,
|
|
147
152
|
getConfig,
|
package/src/App.vue
CHANGED
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
</div>
|
|
37
37
|
<h1 class="m-title">复制组件</h1>
|
|
38
38
|
<div class="m-block">
|
|
39
|
-
<
|
|
39
|
+
<Copy value="xfbsyxj">xfbsyxj</Copy>
|
|
40
40
|
</div>
|
|
41
41
|
|
|
42
42
|
<h1 class="m-title">切换侧边栏</h1>
|
|
@@ -199,7 +199,7 @@ import PostCollection from "./single/PostCollection.vue";
|
|
|
199
199
|
import QRcode from "./interact/QRcode.vue";
|
|
200
200
|
import UploadBanner from "./upload/UploadBanner.vue";
|
|
201
201
|
import Mark from "./interact/Mark.vue";
|
|
202
|
-
import
|
|
202
|
+
import Copy from "./interact/Copy.vue";
|
|
203
203
|
|
|
204
204
|
import GamePrice from "./wiki/GamePrice.vue";
|
|
205
205
|
import WikiComments from "./wiki/WikiComments.vue";
|
|
@@ -209,7 +209,7 @@ export default {
|
|
|
209
209
|
name: "App",
|
|
210
210
|
components: {
|
|
211
211
|
Mark,
|
|
212
|
-
|
|
212
|
+
Copy,
|
|
213
213
|
Author,
|
|
214
214
|
// PostHeader,
|
|
215
215
|
PostTopic,
|
package/src/filters/orderBy.vue
CHANGED
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="w-boxcoin-user">
|
|
3
|
+
<el-button @click="openBoxcoinPop" type="primary" size="small">批量打赏</el-button>
|
|
4
|
+
<el-dialog
|
|
5
|
+
title="品鉴评分"
|
|
6
|
+
v-model="visible"
|
|
7
|
+
class="w-boxcoin-pop"
|
|
8
|
+
:close-on-click-modal="false"
|
|
9
|
+
append-to-body
|
|
10
|
+
>
|
|
11
|
+
<div class="w-boxcoin-admin-content">
|
|
12
|
+
<div class="u-left">
|
|
13
|
+
<em class="u-label">本月状态</em>
|
|
14
|
+
已用<b>{{ used }}</b> 剩余<b>{{ left }}</b> 总计<b>{{ total }}</b>
|
|
15
|
+
<el-progress
|
|
16
|
+
:percentage="total ? 100 - (used * 100) / total : 0"
|
|
17
|
+
:stroke-width="15"
|
|
18
|
+
:text-inside="true"
|
|
19
|
+
></el-progress>
|
|
20
|
+
</div>
|
|
21
|
+
<div class="u-list">
|
|
22
|
+
<em class="u-label">❤️ 品鉴</em>
|
|
23
|
+
<Contributors v-if="authors && authors.length" :authors="authors" @chosen="handleChosen" />
|
|
24
|
+
<div class="u-points">
|
|
25
|
+
<el-radio-group v-model="count">
|
|
26
|
+
<el-radio :value="item" v-for="item in fitPoints" :key="item" border>
|
|
27
|
+
<b>{{ item }}</b
|
|
28
|
+
>盒币
|
|
29
|
+
</el-radio>
|
|
30
|
+
</el-radio-group>
|
|
31
|
+
</div>
|
|
32
|
+
</div>
|
|
33
|
+
<div class="u-msg">
|
|
34
|
+
<em class="u-label">📝 寄语</em>
|
|
35
|
+
<div class="u-input">
|
|
36
|
+
<el-input
|
|
37
|
+
v-model="remark"
|
|
38
|
+
placeholder="请输入寄语(必填)"
|
|
39
|
+
:minlength="2"
|
|
40
|
+
:maxlength="30"
|
|
41
|
+
show-word-limit
|
|
42
|
+
></el-input>
|
|
43
|
+
<el-button :disabled="fetchingCurrentRelease" @click="insertCurrentRelease">插入当前版本</el-button>
|
|
44
|
+
</div>
|
|
45
|
+
</div>
|
|
46
|
+
</div>
|
|
47
|
+
<template #footer>
|
|
48
|
+
<span class="dialog-footer">
|
|
49
|
+
<el-button @click="visible = false">取消</el-button>
|
|
50
|
+
<el-button type="primary" @click="submit" :disabled="!ready || submitting">确定</el-button>
|
|
51
|
+
</span>
|
|
52
|
+
</template>
|
|
53
|
+
</el-dialog>
|
|
54
|
+
</div>
|
|
55
|
+
</template>
|
|
56
|
+
|
|
57
|
+
<script>
|
|
58
|
+
import { batchReward } from "../../service/thx.js";
|
|
59
|
+
import Contributors from "./Contributors.vue";
|
|
60
|
+
import { getBreadcrumb } from "../../service/breadcrumb.js";
|
|
61
|
+
|
|
62
|
+
export default {
|
|
63
|
+
name: "BatchReward",
|
|
64
|
+
emits: ["updateRecord"],
|
|
65
|
+
components: {
|
|
66
|
+
Contributors,
|
|
67
|
+
},
|
|
68
|
+
props: {
|
|
69
|
+
boxcoin: {
|
|
70
|
+
type: Number,
|
|
71
|
+
default: 0,
|
|
72
|
+
},
|
|
73
|
+
postType: {
|
|
74
|
+
type: String,
|
|
75
|
+
default: "",
|
|
76
|
+
},
|
|
77
|
+
items: {
|
|
78
|
+
type: Array,
|
|
79
|
+
default: () => [],
|
|
80
|
+
},
|
|
81
|
+
own: {
|
|
82
|
+
type: Number,
|
|
83
|
+
default: 0,
|
|
84
|
+
},
|
|
85
|
+
points: {
|
|
86
|
+
type: Array,
|
|
87
|
+
default: () => [],
|
|
88
|
+
},
|
|
89
|
+
authors: {
|
|
90
|
+
type: Array,
|
|
91
|
+
default: () => [],
|
|
92
|
+
},
|
|
93
|
+
client: {
|
|
94
|
+
type: String,
|
|
95
|
+
default: "",
|
|
96
|
+
},
|
|
97
|
+
postId: {
|
|
98
|
+
type: [Number, String, Array],
|
|
99
|
+
default: 0,
|
|
100
|
+
},
|
|
101
|
+
total: {
|
|
102
|
+
type: Number,
|
|
103
|
+
default: 0,
|
|
104
|
+
},
|
|
105
|
+
max: {
|
|
106
|
+
type: Number,
|
|
107
|
+
default: 0,
|
|
108
|
+
},
|
|
109
|
+
min: {
|
|
110
|
+
type: Number,
|
|
111
|
+
default: 0,
|
|
112
|
+
},
|
|
113
|
+
category: {
|
|
114
|
+
type: String,
|
|
115
|
+
default: "",
|
|
116
|
+
},
|
|
117
|
+
},
|
|
118
|
+
data: function () {
|
|
119
|
+
return {
|
|
120
|
+
visible: false,
|
|
121
|
+
count: 0,
|
|
122
|
+
remark: "辛苦,感谢!",
|
|
123
|
+
left: this.own,
|
|
124
|
+
chargeLink: "/vip/boxcoin?redirect=" + location.href,
|
|
125
|
+
chosen: "",
|
|
126
|
+
submitting: false,
|
|
127
|
+
fetchingCurrentRelease: false,
|
|
128
|
+
};
|
|
129
|
+
},
|
|
130
|
+
computed: {
|
|
131
|
+
used: function () {
|
|
132
|
+
return this.total - this.left;
|
|
133
|
+
},
|
|
134
|
+
ready: function () {
|
|
135
|
+
return this.isEnough && this.count && this.remark;
|
|
136
|
+
},
|
|
137
|
+
isEnough: function () {
|
|
138
|
+
return this.left && this.left >= this.count;
|
|
139
|
+
},
|
|
140
|
+
hostClient: function () {
|
|
141
|
+
return location.href.includes("origin") ? "origin" : "std";
|
|
142
|
+
},
|
|
143
|
+
fitPoints: function () {
|
|
144
|
+
return this.points.filter((item) => item <= this.left);
|
|
145
|
+
},
|
|
146
|
+
},
|
|
147
|
+
watch: {
|
|
148
|
+
own: function (val) {
|
|
149
|
+
this.left = val;
|
|
150
|
+
},
|
|
151
|
+
},
|
|
152
|
+
methods: {
|
|
153
|
+
openBoxcoinPop: function () {
|
|
154
|
+
if (!(this.items && this.items.length)) {
|
|
155
|
+
this.$message({ message: "请选择需要打赏的作品", type: "warning" });
|
|
156
|
+
return;
|
|
157
|
+
}
|
|
158
|
+
this.visible = true;
|
|
159
|
+
},
|
|
160
|
+
handleChosen(userId) {
|
|
161
|
+
this.chosen = userId;
|
|
162
|
+
},
|
|
163
|
+
submit: function () {
|
|
164
|
+
this.submitting = true;
|
|
165
|
+
let client = this.client || this.hostClient;
|
|
166
|
+
if (!["std", "origin", "all"].includes(client)) {
|
|
167
|
+
client = "std";
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
batchReward(this.postType, this.count, {
|
|
171
|
+
items: this.items,
|
|
172
|
+
remark: this.remark,
|
|
173
|
+
client: client,
|
|
174
|
+
redirect: this.category ? `/${this.category}/${this.postId}` : undefined,
|
|
175
|
+
})
|
|
176
|
+
.then((res) => {
|
|
177
|
+
return res.data.data;
|
|
178
|
+
})
|
|
179
|
+
.then((data) => {
|
|
180
|
+
const success = data?.success || [];
|
|
181
|
+
const fail = data?.fail || [];
|
|
182
|
+
success.forEach((item) => {
|
|
183
|
+
const articleId = this.items?.[item.index]?.article_id ?? item?.article_id ?? "-";
|
|
184
|
+
this.$message({
|
|
185
|
+
message: `作品${articleId}打赏成功`,
|
|
186
|
+
type: "success",
|
|
187
|
+
});
|
|
188
|
+
this.left -= this.count;
|
|
189
|
+
});
|
|
190
|
+
fail.forEach((item) => {
|
|
191
|
+
const articleId = this.items?.[item.index]?.article_id ?? item?.article_id ?? "-";
|
|
192
|
+
this.$message({
|
|
193
|
+
message: `作品${articleId}打赏失败,原因:${item.msg}`,
|
|
194
|
+
type: "error",
|
|
195
|
+
});
|
|
196
|
+
});
|
|
197
|
+
this.$emit("updateRecord", data);
|
|
198
|
+
})
|
|
199
|
+
.finally(() => {
|
|
200
|
+
this.submitting = false;
|
|
201
|
+
this.visible = false;
|
|
202
|
+
});
|
|
203
|
+
},
|
|
204
|
+
insertCurrentRelease: function () {
|
|
205
|
+
this.fetchingCurrentRelease = true;
|
|
206
|
+
getBreadcrumb(`current-release-${this.hostClient}`)
|
|
207
|
+
.then((res) => {
|
|
208
|
+
this.remark += res.data.data.html;
|
|
209
|
+
})
|
|
210
|
+
.catch(() => {
|
|
211
|
+
this.$message({
|
|
212
|
+
message: "获取失败",
|
|
213
|
+
type: "error",
|
|
214
|
+
});
|
|
215
|
+
})
|
|
216
|
+
.finally(() => {
|
|
217
|
+
this.fetchingCurrentRelease = false;
|
|
218
|
+
});
|
|
219
|
+
},
|
|
220
|
+
},
|
|
221
|
+
};
|
|
222
|
+
</script>
|
package/src/single/PostTopic.vue
CHANGED
|
@@ -5,18 +5,17 @@
|
|
|
5
5
|
<div class="c-topic-text__year">{{ year }}</div>
|
|
6
6
|
<div class="c-topic-text__text">{{ topicText }}</div>
|
|
7
7
|
</div>
|
|
8
|
-
<img class="c-topic-bg" src="../../assets/img/rightsidebar/topic_bg_bps.svg" alt=""
|
|
8
|
+
<img class="c-topic-bg" src="../../assets/img/rightsidebar/topic_bg_bps.svg" alt="" />
|
|
9
9
|
</div>
|
|
10
10
|
<div class="c-post-topic__img">
|
|
11
|
-
<img :src="topicImage" alt=""
|
|
11
|
+
<img :src="topicImage" alt="" />
|
|
12
12
|
</div>
|
|
13
13
|
</div>
|
|
14
14
|
</template>
|
|
15
15
|
|
|
16
16
|
<script>
|
|
17
|
-
import {
|
|
18
|
-
import
|
|
19
|
-
const { getThumbnail } = utilModule;
|
|
17
|
+
import { getSlider } from "../../service/cms";
|
|
18
|
+
import { getThumbnail } from "@jx3box/jx3box-common/js/utils";
|
|
20
19
|
import dayjs from "dayjs";
|
|
21
20
|
export default {
|
|
22
21
|
name: "PostTopic",
|
|
@@ -32,26 +31,26 @@ export default {
|
|
|
32
31
|
postBanner: {
|
|
33
32
|
type: String,
|
|
34
33
|
default: "",
|
|
35
|
-
}
|
|
34
|
+
},
|
|
36
35
|
},
|
|
37
36
|
data() {
|
|
38
37
|
return {
|
|
39
|
-
topicInfo: null
|
|
40
|
-
}
|
|
38
|
+
topicInfo: null,
|
|
39
|
+
};
|
|
41
40
|
},
|
|
42
41
|
computed: {
|
|
43
42
|
topicText() {
|
|
44
|
-
return this.topicInfo ? `${dayjs(this.topicInfo?.created_at).format(
|
|
43
|
+
return this.topicInfo ? `${dayjs(this.topicInfo?.created_at).format("MM月DD日")}荣登头条榜` : "";
|
|
45
44
|
},
|
|
46
45
|
year() {
|
|
47
|
-
return dayjs(this.topicInfo?.created_at).format(
|
|
46
|
+
return dayjs(this.topicInfo?.created_at).format("YYYY年");
|
|
48
47
|
},
|
|
49
48
|
topicImage() {
|
|
50
49
|
const img = this.postBanner || this.topicInfo?.img;
|
|
51
50
|
if (img && (img.indexOf(".gif") > -1 || img.indexOf(".webp") > -1)) {
|
|
52
51
|
return img;
|
|
53
52
|
}
|
|
54
|
-
return getThumbnail(img, [260*2, 78*2])
|
|
53
|
+
return getThumbnail(img, [260 * 2, 78 * 2]);
|
|
55
54
|
},
|
|
56
55
|
client() {
|
|
57
56
|
return location.href.includes("origin") ? "origin" : "std";
|
|
@@ -63,21 +62,20 @@ export default {
|
|
|
63
62
|
handler(val) {
|
|
64
63
|
if (!val) return;
|
|
65
64
|
this.loadData();
|
|
66
|
-
}
|
|
67
|
-
}
|
|
65
|
+
},
|
|
66
|
+
},
|
|
68
67
|
},
|
|
69
68
|
methods: {
|
|
70
69
|
loadData() {
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
}
|
|
70
|
+
getSlider({
|
|
71
|
+
source_type: this.type,
|
|
72
|
+
source_id: this.id,
|
|
73
|
+
}).then((res) => {
|
|
74
|
+
this.topicInfo = res.data?.data;
|
|
77
75
|
});
|
|
78
76
|
},
|
|
79
|
-
}
|
|
80
|
-
}
|
|
77
|
+
},
|
|
78
|
+
};
|
|
81
79
|
</script>
|
|
82
80
|
|
|
83
81
|
<style lang="less">
|
|
@@ -98,7 +96,7 @@ export default {
|
|
|
98
96
|
// left: 50%;
|
|
99
97
|
// transform: translate(-50%, -50%);
|
|
100
98
|
z-index: 1;
|
|
101
|
-
color: #
|
|
99
|
+
color: #ffd28f;
|
|
102
100
|
letter-spacing: 1px;
|
|
103
101
|
white-space: nowrap;
|
|
104
102
|
}
|
|
@@ -119,7 +117,7 @@ export default {
|
|
|
119
117
|
overflow: hidden;
|
|
120
118
|
.r(4px);
|
|
121
119
|
min-height: 71px;
|
|
122
|
-
img{
|
|
120
|
+
img {
|
|
123
121
|
.pa;
|
|
124
122
|
left: 50%;
|
|
125
123
|
transform: translateX(-50%);
|
package/src/single/Thx.vue
CHANGED
|
@@ -1,81 +1,103 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div class="w-thx">
|
|
3
|
-
<
|
|
4
|
-
<
|
|
5
|
-
|
|
3
|
+
<template v-if="type === 'batchReward'">
|
|
4
|
+
<batch-reward
|
|
5
|
+
v-if="hasRight && adminBoxcoinEnable && boxcoin_enable"
|
|
6
6
|
:postType="postType"
|
|
7
|
-
|
|
7
|
+
:items="postId"
|
|
8
|
+
:boxcoin="boxcoin"
|
|
8
9
|
:userId="userId"
|
|
9
|
-
:max="admin_max"
|
|
10
|
-
:min="admin_min"
|
|
11
10
|
:own="admin_left"
|
|
12
|
-
:total="admin_total"
|
|
13
11
|
:points="admin_points"
|
|
14
12
|
:authors="authors"
|
|
15
|
-
@updateRecord="updateRecord"
|
|
16
13
|
:client="finalClient"
|
|
17
|
-
:
|
|
18
|
-
:
|
|
14
|
+
:max="admin_max"
|
|
15
|
+
:min="admin_min"
|
|
16
|
+
:total="admin_total"
|
|
19
17
|
:category="category"
|
|
20
|
-
/>
|
|
21
|
-
<Like :postId="postId" :postType="postType"></Like>
|
|
22
|
-
<fav :postId="postId" :postType="postType" :postTitle="postTitle"></fav>
|
|
23
|
-
<Rss v-if="showRss" :type="postType" :id="postId" :title="postTitle"></Rss>
|
|
24
|
-
<boxcoin-user
|
|
25
18
|
:postId="postId"
|
|
26
|
-
:postType="postType"
|
|
27
|
-
:boxcoin="boxcoin"
|
|
28
|
-
:userId="userId"
|
|
29
|
-
:own="user_left"
|
|
30
|
-
:points="user_points"
|
|
31
|
-
:authors="authors"
|
|
32
|
-
v-if="userBoxcoinEnable && boxcoin_enable && allowGift"
|
|
33
19
|
@updateRecord="updateRecord"
|
|
34
|
-
:client="finalClient"
|
|
35
|
-
:category="category"
|
|
36
|
-
:can-gift="lvEnough"
|
|
37
20
|
/>
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
"
|
|
63
|
-
"
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
"
|
|
69
|
-
"
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
21
|
+
</template>
|
|
22
|
+
<template v-else>
|
|
23
|
+
<div class="w-thx-panel">
|
|
24
|
+
<boxcoin-admin
|
|
25
|
+
:postId="postId"
|
|
26
|
+
:postType="postType"
|
|
27
|
+
v-if="hasRight && adminBoxcoinEnable && boxcoin_enable && hasPermission"
|
|
28
|
+
:userId="userId"
|
|
29
|
+
:max="admin_max"
|
|
30
|
+
:min="admin_min"
|
|
31
|
+
:own="admin_left"
|
|
32
|
+
:total="admin_total"
|
|
33
|
+
:points="admin_points"
|
|
34
|
+
:authors="authors"
|
|
35
|
+
@updateRecord="updateRecord"
|
|
36
|
+
:client="finalClient"
|
|
37
|
+
:totalLimit="total_limit"
|
|
38
|
+
:postTypeUsed="post_type_used"
|
|
39
|
+
:category="category"
|
|
40
|
+
/>
|
|
41
|
+
<Like :postId="postId" :postType="postType"></Like>
|
|
42
|
+
<fav :postId="postId" :postType="postType" :postTitle="postTitle"></fav>
|
|
43
|
+
<Rss v-if="showRss" :type="postType" :id="postId" :title="postTitle"></Rss>
|
|
44
|
+
<boxcoin-user
|
|
45
|
+
:postId="postId"
|
|
46
|
+
:postType="postType"
|
|
47
|
+
:boxcoin="boxcoin"
|
|
48
|
+
:userId="userId"
|
|
49
|
+
:own="user_left"
|
|
50
|
+
:points="user_points"
|
|
51
|
+
:authors="authors"
|
|
52
|
+
v-if="userBoxcoinEnable && boxcoin_enable && allowGift"
|
|
53
|
+
@updateRecord="updateRecord"
|
|
54
|
+
:client="finalClient"
|
|
55
|
+
:category="category"
|
|
56
|
+
:can-gift="lvEnough"
|
|
57
|
+
/>
|
|
58
|
+
<watch-later
|
|
59
|
+
:category="postType"
|
|
60
|
+
:title="postTitle"
|
|
61
|
+
:author-id="authorId"
|
|
62
|
+
:banner="banner"
|
|
63
|
+
:content-id="contentMetaId"
|
|
64
|
+
></watch-later>
|
|
65
|
+
<Share :postId="postId" :postType="postType" :client="client" />
|
|
66
|
+
</div>
|
|
67
|
+
<div class="w-thx-records">
|
|
68
|
+
<boxcoin-records
|
|
69
|
+
:postId="postId"
|
|
70
|
+
:postType="postType"
|
|
71
|
+
:postClient="finalClient"
|
|
72
|
+
:cacheRecord="cacheRecord"
|
|
73
|
+
:mode="mode"
|
|
74
|
+
@update:boxcoin="updateBoxcoin"
|
|
75
|
+
v-if="showRecord"
|
|
76
|
+
/>
|
|
77
|
+
</div>
|
|
78
|
+
<div class="w-thx-copyright">
|
|
79
|
+
©
|
|
80
|
+
{{
|
|
81
|
+
$jx3boxT(
|
|
82
|
+
"jx3boxUi.thx.copyright1",
|
|
83
|
+
"所有原创作品,著作权归作者所有,所有未经授权的非署名转载或抄袭将有权追究法律责任,所有法律事务由专聘律师代理。"
|
|
84
|
+
)
|
|
85
|
+
}}<br />
|
|
86
|
+
{{
|
|
87
|
+
$jx3boxT(
|
|
88
|
+
"jx3boxUi.thx.copyright2",
|
|
89
|
+
"签约作者独家特约稿件,及所有魔盒官方评分作品用户一经兑现则视为有偿付费稿件,所有商业稿件的转载引用需同时征得魔盒平台授权。"
|
|
90
|
+
)
|
|
91
|
+
}}
|
|
92
|
+
</div>
|
|
93
|
+
</template>
|
|
73
94
|
</div>
|
|
74
95
|
</template>
|
|
75
96
|
|
|
76
97
|
<script>
|
|
77
98
|
import Like from "../interact/Like.vue";
|
|
78
99
|
import Fav from "../interact/Fav.vue";
|
|
100
|
+
import BatchReward from "../interact/BatchReward.vue";
|
|
79
101
|
import BoxcoinAdmin from "../interact/BoxcoinAdmin.vue";
|
|
80
102
|
import BoxcoinUser from "../interact/BoxcoinUser.vue";
|
|
81
103
|
import BoxcoinRecords from "../interact/BoxcoinRecords.vue";
|
|
@@ -94,6 +116,7 @@ export default {
|
|
|
94
116
|
components: {
|
|
95
117
|
Like,
|
|
96
118
|
Fav,
|
|
119
|
+
BatchReward,
|
|
97
120
|
BoxcoinAdmin,
|
|
98
121
|
BoxcoinUser,
|
|
99
122
|
BoxcoinRecords,
|
|
@@ -107,7 +130,7 @@ export default {
|
|
|
107
130
|
default: "normal",
|
|
108
131
|
},
|
|
109
132
|
postId: {
|
|
110
|
-
type: [Number, String],
|
|
133
|
+
type: [Number, String, Array],
|
|
111
134
|
default: 0,
|
|
112
135
|
},
|
|
113
136
|
postType: {
|