@jx3box/jx3box-ui 2.0.4 → 2.0.6

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.
Files changed (227) hide show
  1. package/.storybook/main.js +208 -0
  2. package/.storybook/preview.js +93 -0
  3. package/.storybook/storybookMocks.js +191 -0
  4. package/README.md +29 -82
  5. package/assets/css/bread/admin.less +20 -2
  6. package/assets/css/bread/breadcrumb.less +5 -2
  7. package/assets/css/comment/quick-reply.less +1 -1
  8. package/assets/css/common/left-sidebar.less +1 -1
  9. package/assets/css/interact/like2.less +5 -2
  10. package/assets/css/single/author.less +15 -10
  11. package/assets/css/single/cms-single.less +1 -0
  12. package/assets/css/single/thx.less +34 -11
  13. package/assets/data/nav.json +344 -10
  14. package/assets/img/comment/comment.svg +1 -1
  15. package/assets/img/comment/heart_1.svg +1 -1
  16. package/assets/img/comment/hide.svg +1 -1
  17. package/assets/img/leftsidebar/medal.svg +1 -1
  18. package/assets/img/leftsidebar/post.svg +27 -46
  19. package/i18n/messages/en-US.js +357 -22
  20. package/i18n/messages/vi.js +350 -22
  21. package/i18n/messages/zh-CN.js +469 -20
  22. package/i18n/messages/zh-TW.js +350 -22
  23. package/index.js +19 -7
  24. package/package.json +15 -5
  25. package/service/cms.js +22 -0
  26. package/service/commit-history.js +18 -0
  27. package/service/community.js +60 -0
  28. package/service/fav.js +5 -6
  29. package/src/App.vue +154 -80
  30. package/src/Breadcrumb.vue +24 -11
  31. package/src/CommonFooter.vue +4 -4
  32. package/src/Footer.vue +13 -5
  33. package/src/LeftSideToggle.vue +10 -3
  34. package/src/LeftSidebar.vue +19 -5
  35. package/src/Main.vue +9 -2
  36. package/src/RightSidebar.vue +12 -3
  37. package/src/SuspendCommon.vue +52 -38
  38. package/src/author/AuthorFans.vue +7 -5
  39. package/src/author/AuthorFollow.vue +14 -7
  40. package/src/author/AuthorGift.vue +25 -17
  41. package/src/author/AuthorInfo.vue +46 -19
  42. package/src/author/AuthorLink.vue +3 -1
  43. package/src/author/AuthorMedals.vue +5 -2
  44. package/src/author/AuthorPosts.vue +31 -13
  45. package/src/author/AuthorRss.vue +7 -3
  46. package/src/author/AuthorTeams.vue +3 -1
  47. package/src/author/UserPop.vue +29 -17
  48. package/src/bread/Admin.vue +55 -32
  49. package/src/bread/AdminDirectMessage.vue +15 -8
  50. package/src/bread/AdminDrop.vue +124 -45
  51. package/src/bread/CommunityAdmin.vue +527 -0
  52. package/src/bread/DesignTask.vue +30 -26
  53. package/src/bread/ListAdmin.vue +199 -0
  54. package/src/bread/MigrateCommunity.vue +192 -0
  55. package/src/bread/MoveToCommunityDialog.vue +234 -0
  56. package/src/comment/Avatar.vue +18 -24
  57. package/src/comment/CommentContent.vue +57 -37
  58. package/src/comment/CommentContentSimple.vue +61 -63
  59. package/src/comment/CommentInputForm.vue +45 -34
  60. package/src/comment/CommentWithReply.vue +9 -6
  61. package/src/comment/QuickReply.vue +5 -1
  62. package/src/comment/ReplyForReply.vue +6 -4
  63. package/src/comment/ReplyList.vue +28 -18
  64. package/src/comment/Upload.vue +24 -6
  65. package/src/filters/clientBy.vue +10 -8
  66. package/src/filters/markBy.vue +35 -31
  67. package/src/filters/menuBy.vue +20 -22
  68. package/src/filters/orderBy.vue +17 -11
  69. package/src/filters/tagBy.vue +4 -2
  70. package/src/filters/topicBy.vue +12 -10
  71. package/src/filters/versionBy.vue +5 -3
  72. package/src/filters/zlpBy.vue +29 -25
  73. package/src/footer/copyright.vue +5 -5
  74. package/src/footer/links.vue +2 -2
  75. package/src/footer/official.vue +1 -1
  76. package/src/footer/resource.vue +41 -8
  77. package/src/header/alternate.vue +35 -18
  78. package/src/header/asset.vue +9 -19
  79. package/src/header/box.vue +20 -8
  80. package/src/header/box2.vue +25 -13
  81. package/src/header/client.vue +7 -7
  82. package/src/header/lang.vue +41 -6
  83. package/src/header/logo.vue +2 -3
  84. package/src/header/manage.vue +2 -2
  85. package/src/header/message.vue +3 -3
  86. package/src/header/nav.vue +26 -23
  87. package/src/header/publish.vue +2 -2
  88. package/src/header/search.vue +2 -2
  89. package/src/header/shop.vue +2 -2
  90. package/src/header/user.vue +4 -4
  91. package/src/header/userInfo.vue +22 -24
  92. package/src/header/vip.vue +2 -2
  93. package/src/interact/BoxcoinAdmin.vue +30 -16
  94. package/src/interact/BoxcoinRecords.vue +28 -11
  95. package/src/interact/BoxcoinUser.vue +33 -17
  96. package/src/interact/Fav.vue +5 -1
  97. package/src/interact/Homework.vue +318 -0
  98. package/src/interact/Like.vue +4 -2
  99. package/src/interact/Rss.vue +10 -4
  100. package/src/interact/Share.vue +18 -19
  101. package/src/interact/WatchLater.vue +5 -1
  102. package/src/main.js +1 -0
  103. package/src/single/Author.vue +5 -1
  104. package/src/single/CmsSingle.vue +29 -15
  105. package/src/single/Collection.vue +36 -26
  106. package/src/single/Comment.vue +19 -13
  107. package/src/single/Creators.vue +5 -3
  108. package/src/single/PostCollection.vue +158 -0
  109. package/src/single/PostDirectory.vue +0 -126
  110. package/src/single/PostGuide.vue +93 -0
  111. package/src/single/PostHeader.vue +39 -17
  112. package/src/single/PostTopic.vue +3 -3
  113. package/src/single/PostVersion.vue +219 -0
  114. package/src/single/RightAffix.vue +160 -0
  115. package/src/single/SimpleThx.vue +4 -2
  116. package/src/single/Thx.vue +14 -2
  117. package/src/single/VersionDialog.vue +238 -0
  118. package/src/stories/components/StoryPropsTable.vue +137 -0
  119. package/src/stories/filters/FilterGallery.stories.js +110 -0
  120. package/src/stories/filters/clientBy.stories.js +24 -0
  121. package/src/stories/filters/markBy.stories.js +6 -0
  122. package/src/stories/filters/menuBy.stories.js +6 -0
  123. package/src/stories/filters/orderBy.stories.js +6 -0
  124. package/src/stories/filters/tagBy.stories.js +6 -0
  125. package/src/stories/filters/topicBy.stories.js +6 -0
  126. package/src/stories/filters/versionBy.stories.js +6 -0
  127. package/src/stories/filters/zlpBy.stories.js +6 -0
  128. package/src/stories/layout/BaseShell.stories.js +38 -0
  129. package/src/stories/layout/Breadcrumb.stories.js +40 -0
  130. package/src/stories/layout/CommonFooter.stories.js +22 -0
  131. package/src/stories/layout/CommonHeader.stories.js +39 -0
  132. package/src/stories/layout/LeftSideToggle.stories.js +78 -0
  133. package/src/stories/layout/LeftSidebar.stories.js +40 -0
  134. package/src/stories/layout/Main.stories.js +41 -0
  135. package/src/stories/layout/RightSidebar.stories.js +36 -0
  136. package/src/stories/layout/StorybookShell.vue +271 -0
  137. package/src/stories/layout/SuspendCommon.stories.js +67 -0
  138. package/src/stories/layout/SuspendCommonStage.vue +143 -0
  139. package/src/stories/mockData.js +275 -0
  140. package/src/stories/other/UserPop.stories.js +51 -0
  141. package/src/stories/single/Author.stories.js +19 -0
  142. package/src/stories/single/AuthorStoryStage.vue +103 -0
  143. package/src/stories/single/CmsSingle.stories.js +19 -0
  144. package/src/stories/single/CmsSingleStoryStage.vue +118 -0
  145. package/src/stories/single/Collection.stories.js +34 -0
  146. package/src/stories/single/Comment.stories.js +36 -0
  147. package/src/stories/single/Creators.stories.js +34 -0
  148. package/src/stories/single/PostCollection.stories.js +34 -0
  149. package/src/stories/single/PostDirectory.stories.js +31 -0
  150. package/src/stories/single/PostGuide.stories.js +47 -0
  151. package/src/stories/single/PostHeader.stories.js +39 -0
  152. package/src/stories/single/PostVersion.stories.js +41 -0
  153. package/src/stories/single/RightAffix.stories.js +84 -0
  154. package/src/stories/single/SimpleThx.stories.js +39 -0
  155. package/src/stories/single/SingleGallery.stories.js +207 -0
  156. package/src/stories/single/Thx.stories.js +38 -0
  157. package/vue.config.js +2 -12
  158. package/assets/css/common/bottom.less +0 -25
  159. package/assets/css/editor/article.less +0 -36
  160. package/assets/css/editor/combo.less +0 -362
  161. package/assets/css/editor/resource.less +0 -399
  162. package/assets/css/editor/tinymce.less +0 -100
  163. package/assets/css/editor/upload.less +0 -136
  164. package/assets/css/module/author.less +0 -231
  165. package/assets/css/module/buff.less +0 -88
  166. package/assets/css/module/directory.less +0 -165
  167. package/assets/css/module/icon.less +0 -25
  168. package/assets/css/module/item.less +0 -279
  169. package/assets/css/module/item_simple.less +0 -58
  170. package/assets/css/module/jx3_element.less +0 -5
  171. package/assets/css/module/macro.less +0 -89
  172. package/assets/css/module/npc.less +0 -265
  173. package/assets/css/module/resource.less +0 -93
  174. package/assets/css/module/skill.less +0 -74
  175. package/assets/css/module/talent.less +0 -495
  176. package/assets/js/a.js +0 -46
  177. package/assets/js/code.js +0 -13
  178. package/assets/js/combo.js +0 -40
  179. package/assets/js/directory.js +0 -114
  180. package/assets/js/filter2.js +0 -186
  181. package/assets/js/fold.js +0 -11
  182. package/assets/js/gallery.js +0 -14
  183. package/assets/js/hljs_languages.js +0 -177
  184. package/assets/js/iframe.js +0 -38
  185. package/assets/js/img.js +0 -23
  186. package/assets/js/item/attribute_percent.js +0 -88
  187. package/assets/js/item/bind.js +0 -18
  188. package/assets/js/item/border.js +0 -19
  189. package/assets/js/item/border_quest.js +0 -12
  190. package/assets/js/item/color.js +0 -25
  191. package/assets/js/item/hljs_languages.js +0 -177
  192. package/assets/js/item/icon_url.js +0 -15
  193. package/assets/js/item/second_format.js +0 -19
  194. package/assets/js/jx3_element.js +0 -73
  195. package/assets/js/katex.js +0 -181
  196. package/assets/js/macro.js +0 -16
  197. package/assets/js/nextpage.js +0 -4
  198. package/assets/js/pswp.js +0 -67
  199. package/assets/js/pswp_template.js +0 -66
  200. package/assets/js/pz_iframe.js +0 -30
  201. package/assets/js/qixue.js +0 -28
  202. package/assets/js/renderImgPreview.js +0 -18
  203. package/assets/js/script.js +0 -6
  204. package/assets/js/stat.js +0 -107
  205. package/assets/js/talent2.js +0 -21
  206. package/assets/js/tex-mml-chtml.js +0 -36310
  207. package/assets/js/voice.js +0 -238
  208. package/assets/js/xss.js +0 -130
  209. package/src/editor/Article.vue +0 -230
  210. package/src/editor/BoxResource.vue +0 -441
  211. package/src/editor/Resource.vue +0 -623
  212. package/src/editor/Tinymce.vue +0 -204
  213. package/src/editor/Upload.vue +0 -277
  214. package/src/editor/UploadAlum.vue +0 -176
  215. package/src/editor/UploadBanner.vue +0 -156
  216. package/src/editor/components/Author.vue +0 -322
  217. package/src/editor/components/Avatar.vue +0 -95
  218. package/src/editor/components/Buff.vue +0 -80
  219. package/src/editor/components/Combo.vue +0 -259
  220. package/src/editor/components/Equip.vue +0 -299
  221. package/src/editor/components/GameText.vue +0 -242
  222. package/src/editor/components/Item.vue +0 -325
  223. package/src/editor/components/ItemSimple.vue +0 -134
  224. package/src/editor/components/Medal.vue +0 -43
  225. package/src/editor/components/Npc.vue +0 -215
  226. package/src/editor/components/PostAuthor.vue +0 -102
  227. package/src/editor/components/Skill.vue +0 -71
@@ -1,12 +1,16 @@
1
1
  <template>
2
2
  <div class="w-boxcoin-admin" v-if="allowBoxcoin">
3
- <el-tooltip effect="dark" content="品鉴" placement="top-start">
3
+ <el-tooltip
4
+ effect="dark"
5
+ :content="$jx3boxT('jx3boxUi.boxcoinAdmin.tooltip', '品鉴')"
6
+ placement="top-start"
7
+ >
4
8
  <div class="w-boxcoin-block">
5
9
  <img @click="openBoxcoinPop" class="u-icon" svg-inline :src="iconPath" />
6
10
  </div>
7
11
  </el-tooltip>
8
12
  <el-dialog
9
- title="品鉴评分"
13
+ :title="$jx3boxT('jx3boxUi.boxcoinAdmin.dialogTitle', '品鉴评分')"
10
14
  v-model="visible"
11
15
  class="w-boxcoin-pop"
12
16
  :close-on-click-modal="false"
@@ -14,8 +18,14 @@
14
18
  >
15
19
  <div class="w-boxcoin-admin-content">
16
20
  <div class="u-left">
17
- <em class="u-label">本月状态</em>
18
- 已用<b>{{ this.used }}</b> 剩余<b>{{ this.left }}</b> 总计<b>{{ this.total }}</b>
21
+ <em class="u-label">{{ $jx3boxT("jx3boxUi.boxcoinAdmin.monthStatus", "本月状态") }}</em>
22
+ {{
23
+ $jx3boxT("jx3boxUi.boxcoinAdmin.monthSummary", "已用{used} 剩余{left} 总计{total}", {
24
+ used: this.used,
25
+ left: this.left,
26
+ total: this.total,
27
+ })
28
+ }}
19
29
  <el-progress
20
30
  :percentage="100 - (this.used * 100) / this.total"
21
31
  :stroke-width="15"
@@ -23,43 +33,45 @@
23
33
  ></el-progress>
24
34
  </div>
25
35
  <div class="u-list">
26
- <em class="u-label">❤️ 品鉴</em>
36
+ <em class="u-label">❤️ {{ $jx3boxT("jx3boxUi.boxcoinAdmin.appraise", "品鉴") }}</em>
27
37
  <Contributors v-if="authors && authors.length" :authors="authors" @chosen="handleChosen" />
28
38
  <div class="u-points">
29
39
  <el-radio-group v-model="count">
30
40
  <el-radio :value="item" v-for="item in fitPoints" :key="item" border>
31
41
  <b>{{ item }}</b
32
- >盒币
42
+ >{{ $jx3boxT("jx3boxUi.boxcoinAdmin.boxcoin", "盒币") }}
33
43
  </el-radio>
34
- <el-radio value="custom" border>自定义</el-radio>
44
+ <el-radio value="custom" border>{{ $jx3boxT("jx3boxUi.boxcoinAdmin.custom", "自定义") }}</el-radio>
35
45
  <el-input
36
46
  v-model="amount"
37
47
  v-show="count === 'custom'"
38
- placeholder="输入自定义数量"
48
+ :placeholder="$jx3boxT('jx3boxUi.boxcoinAdmin.customPlaceholder', '输入自定义数量')"
39
49
  ></el-input>
40
50
  </el-radio-group>
41
51
  </div>
42
52
  </div>
43
53
  <div class="u-msg">
44
- <em class="u-label">📝 寄语</em>
54
+ <em class="u-label">📝 {{ $jx3boxT("jx3boxUi.boxcoinAdmin.remark", "寄语") }}</em>
45
55
  <div class="u-input">
46
56
  <el-input
47
57
  v-model="remark"
48
- placeholder="请输入寄语(必填)"
58
+ :placeholder="$jx3boxT('jx3boxUi.boxcoinAdmin.remarkPlaceholder', '请输入寄语(必填)')"
49
59
  :minlength="2"
50
60
  :maxlength="30"
51
61
  show-word-limit
52
62
  ></el-input>
53
63
  <el-button :disabled="fetchingCurrentRelease" @click="insertCurrentRelease"
54
- >插入当前版本</el-button
64
+ >{{ $jx3boxT("jx3boxUi.boxcoinAdmin.insertCurrentRelease", "插入当前版本") }}</el-button
55
65
  >
56
66
  </div>
57
67
  </div>
58
68
  </div>
59
69
  <template #footer>
60
70
  <span class="dialog-footer">
61
- <el-button @click="visible = false">取 消</el-button>
62
- <el-button type="primary" @click="submit" :disabled="!ready || submitting">确 定</el-button>
71
+ <el-button @click="visible = false">{{ $jx3boxT("jx3boxUi.common.cancel", "取消") }}</el-button>
72
+ <el-button type="primary" @click="submit" :disabled="!ready || submitting">{{
73
+ $jx3boxT("jx3boxUi.common.confirm", "确定")
74
+ }}</el-button>
63
75
  </span>
64
76
  </template>
65
77
  </el-dialog>
@@ -72,8 +84,10 @@ import { getBreadcrumb } from "../../service/breadcrumb.js";
72
84
  import User from "@jx3box/jx3box-common/js/user";
73
85
  import Contributors from "./Contributors.vue";
74
86
  import JX3BOX from "@jx3box/jx3box-common/data/jx3box.json";
87
+ import i18nMixin from "../../i18n/mixin";
75
88
  export default {
76
89
  name: "BoxcoinAdmin",
90
+ mixins: [i18nMixin],
77
91
  props: {
78
92
  postType: {
79
93
  type: String,
@@ -124,7 +138,7 @@ export default {
124
138
  visible: false,
125
139
  count: 0,
126
140
 
127
- remark: "辛苦,感谢!",
141
+ remark: this.$jx3boxT("jx3boxUi.boxcoinAdmin.defaultRemark", "辛苦,感谢!"),
128
142
  left: this.own,
129
143
  chosen: "", // 被选中的人
130
144
  amount: "",
@@ -186,7 +200,7 @@ export default {
186
200
  })
187
201
  .then((res) => {
188
202
  this.$message({
189
- message: "操作成功",
203
+ message: this.$jx3boxT("jx3boxUi.boxcoinAdmin.success", "操作成功"),
190
204
  type: "success",
191
205
  });
192
206
  return res.data.data;
@@ -210,7 +224,7 @@ export default {
210
224
  })
211
225
  .catch(() => {
212
226
  this.$message({
213
- message: "获取失败",
227
+ message: this.$jx3boxT("jx3boxUi.boxcoinAdmin.fetchFailed", "获取失败"),
214
228
  type: "error",
215
229
  });
216
230
  })
@@ -6,25 +6,25 @@
6
6
  <span class="u-meta u-action">
7
7
  <el-icon><Trophy /></el-icon>
8
8
  </span>
9
- <span class="u-meta u-user">参与打赏</span>
10
- <span class="u-meta u-user">收益作者</span>
11
- <span class="u-meta u-count">盒币</span>
12
- <span class="u-meta u-remark">寄语</span>
9
+ <span class="u-meta u-user">{{ $jx3boxT("jx3boxUi.boxcoinRecords.participant", "参与打赏") }}</span>
10
+ <span class="u-meta u-user">{{ $jx3boxT("jx3boxUi.boxcoinRecords.author", "收益作者") }}</span>
11
+ <span class="u-meta u-count">{{ $jx3boxT("jx3boxUi.boxcoinRecords.boxcoin", "盒币") }}</span>
12
+ <span class="u-meta u-remark">{{ $jx3boxT("jx3boxUi.boxcoinRecords.remark", "寄语") }}</span>
13
13
  <time class="u-meta u-time"></time>
14
14
  </li>
15
15
  <li v-for="(item, i) in list" :key="i" class="u-item u-body">
16
16
  <span class="u-meta u-action">
17
17
  <template v-if="item.is_user_gift">
18
- <i title="打赏"><img class svg-inline src="../../assets/img/widget/gift.svg" /></i>
18
+ <i :title="$jx3boxT('jx3boxUi.boxcoinRecords.reward', '打赏')"><img class svg-inline src="../../assets/img/widget/gift.svg" /></i>
19
19
  </template>
20
20
  <template v-else>
21
- <i title="品鉴"><img class svg-inline src="../../assets/img/widget/admin_gift.svg" /></i>
21
+ <i :title="$jx3boxT('jx3boxUi.boxcoinRecords.appraise', '品鉴')"><img class svg-inline src="../../assets/img/widget/admin_gift.svg" /></i>
22
22
  </template>
23
23
  </span>
24
24
  <template v-if="item.ext_operate_user_info?.id == 1">
25
25
  <span class="u-meta u-user u-default">
26
26
  <img class="u-user-avatar" :src="showAvatar(item.ext_operate_user_info.avatar)" alt />
27
- <span>系统</span>
27
+ <span>{{ $jx3boxT("jx3boxUi.boxcoinRecords.system", "系统") }}</span>
28
28
  </span>
29
29
  </template>
30
30
  <a v-else class="u-meta u-user" :href="authorLink(item.operate_user_id)" target="_blank">
@@ -43,7 +43,7 @@
43
43
  <time class="u-meta u-time">{{ showTime(item.created_at) }}</time>
44
44
  <span class="u-client" v-if="isSuperAdmin">{{ item.client }}</span>
45
45
  <span class="u-delete" v-if="isSuperAdmin" @click="recovery(item, i)">
46
- <i class="Delete"></i>撤销
46
+ <i class="Delete"></i>{{ $jx3boxT("jx3boxUi.boxcoinRecords.revoke", "撤销") }}
47
47
  </span>
48
48
  </li>
49
49
  </ul>
@@ -56,6 +56,7 @@
56
56
  :page-size="per"
57
57
  :total="total"
58
58
  v-model="page"
59
+ center
59
60
  ></el-pagination>
60
61
  </div>
61
62
  </template>
@@ -65,8 +66,10 @@ import { getPostBoxcoinRecords, recoveryBoxcoin } from "../../service/thx";
65
66
  import User from "@jx3box/jx3box-common/js/user";
66
67
  import { showAvatar, authorLink } from "@jx3box/jx3box-common/js/utils";
67
68
  import { showTime } from "@jx3box/jx3box-common/js/moment";
69
+ import i18nMixin from "../../i18n/mixin";
68
70
  export default {
69
71
  name: "BoxcoinRecords",
72
+ mixins: [i18nMixin],
70
73
  props: {
71
74
  postType: {
72
75
  type: String,
@@ -149,13 +152,16 @@ export default {
149
152
  });
150
153
  },
151
154
  recovery: function (item, i) {
152
- this.$alert("是否确定撤销该评分?", "确认", {
153
- confirmButtonText: "确定",
155
+ this.$alert(
156
+ this.$jx3boxT("jx3boxUi.boxcoinRecords.confirmRevoke", "是否确定撤销该评分?"),
157
+ this.$jx3boxT("jx3boxUi.boxcoinRecords.confirmTitle", "确认"),
158
+ {
159
+ confirmButtonText: this.$jx3boxT("jx3boxUi.common.confirm", "确定"),
154
160
  callback: (action) => {
155
161
  if (action == "confirm") {
156
162
  recoveryBoxcoin(item.id).then(() => {
157
163
  this.$message({
158
- message: "撤销成功",
164
+ message: this.$jx3boxT("jx3boxUi.boxcoinRecords.revokeSuccess", "撤销成功"),
159
165
  type: "success",
160
166
  });
161
167
  this.list.splice(i, 1);
@@ -172,3 +178,14 @@ export default {
172
178
  },
173
179
  };
174
180
  </script>
181
+
182
+
183
+ <style lang="less">
184
+ .w-boxcoin-records-pages{
185
+
186
+ --el-color-primary: @primary;
187
+
188
+ .flex(x);
189
+ margin-top:5px;
190
+ }
191
+ </style>
@@ -1,19 +1,29 @@
1
1
  <template>
2
2
  <div class="w-boxcoin-user" v-if="allowBoxcoin">
3
- <el-tooltip effect="dark" content="投币" placement="top-start" v-if="canGift">
3
+ <el-tooltip
4
+ effect="dark"
5
+ :content="$jx3boxT('jx3boxUi.boxcoinUser.tooltip', '投币')"
6
+ placement="top-start"
7
+ v-if="canGift"
8
+ >
4
9
  <div class="w-boxcoin-block" @click="openBoxcoinPop">
5
10
  <img class="u-icon" svg-inline :src="iconPath" />
6
11
  <span class="u-count" v-if="boxcoin">{{ boxcoin }}</span>
7
12
  </div>
8
13
  </el-tooltip>
9
- <el-tooltip effect="dark" content="您当前等级不够,不能够进行投币。" placement="top" v-else>
14
+ <el-tooltip
15
+ effect="dark"
16
+ :content="$jx3boxT('jx3boxUi.boxcoinUser.disabledTooltip', '您当前等级不够,不能够进行投币。')"
17
+ placement="top"
18
+ v-else
19
+ >
10
20
  <div class="w-boxcoin-block disabled">
11
21
  <img class="u-icon" svg-inline :src="iconPath" />
12
22
  <span class="u-count" v-if="boxcoin">{{ boxcoin }}</span>
13
23
  </div>
14
24
  </el-tooltip>
15
25
  <el-dialog
16
- title="投币打赏"
26
+ :title="$jx3boxT('jx3boxUi.boxcoinUser.dialogTitle', '投币打赏')"
17
27
  v-model="visible"
18
28
  class="w-boxcoin-pop"
19
29
  append-to-body
@@ -21,34 +31,34 @@
21
31
  >
22
32
  <div class="w-boxcoin-user-content">
23
33
  <div class="u-left">
24
- <em class="u-label">当前拥有盒币</em>
34
+ <em class="u-label">{{ $jx3boxT("jx3boxUi.boxcoinUser.currentBoxcoin", "当前拥有盒币") }}</em>
25
35
  <b>{{ left }}</b>
26
- <a class="u-charge" :href="chargeLink" target="_blank">[充值]</a>
36
+ <a class="u-charge" :href="chargeLink" target="_blank">[{{ $jx3boxT("jx3boxUi.boxcoinUser.recharge", "充值") }}]</a>
27
37
  </div>
28
38
  <div class="u-list">
29
- <em class="u-label">❤️ 打赏</em>
39
+ <em class="u-label">❤️ {{ $jx3boxT("jx3boxUi.boxcoinUser.reward", "打赏") }}</em>
30
40
  <Contributors v-if="authors && authors.length" :authors="authors" @chosen="handleChosen" />
31
41
  <div class="u-points">
32
42
  <el-radio-group v-model="count">
33
43
  <el-radio :value="item" v-for="item in fitPoints" :key="item" border>
34
44
  <b>{{ item }}</b
35
- >盒币
45
+ >{{ $jx3boxT("jx3boxUi.boxcoinUser.boxcoin", "盒币") }}
36
46
  </el-radio>
37
- <el-radio value="custom" border>自定义</el-radio>
47
+ <el-radio value="custom" border>{{ $jx3boxT("jx3boxUi.boxcoinUser.custom", "自定义") }}</el-radio>
38
48
  <el-input
39
49
  v-model="amount"
40
50
  v-show="count === 'custom'"
41
- placeholder="输入自定义数量"
51
+ :placeholder="$jx3boxT('jx3boxUi.boxcoinUser.customPlaceholder', '输入自定义数量')"
42
52
  ></el-input>
43
53
  </el-radio-group>
44
54
  </div>
45
55
  </div>
46
56
  <div class="u-msg">
47
- <em class="u-label">📝 寄语</em>
57
+ <em class="u-label">📝 {{ $jx3boxT("jx3boxUi.boxcoinUser.remark", "寄语") }}</em>
48
58
  <div class="u-input">
49
59
  <el-input
50
60
  v-model="remark"
51
- placeholder="请输入寄语(必填)"
61
+ :placeholder="$jx3boxT('jx3boxUi.boxcoinUser.remarkPlaceholder', '请输入寄语(必填)')"
52
62
  :minlength="2"
53
63
  :maxlength="30"
54
64
  show-word-limit
@@ -58,8 +68,10 @@
58
68
  </div>
59
69
  <template #footer>
60
70
  <span class="dialog-footer">
61
- <el-button @click="visible = false">取 消</el-button>
62
- <el-button type="primary" @click="submit" :disabled="!ready">确 定</el-button>
71
+ <el-button @click="visible = false">{{ $jx3boxT("jx3boxUi.common.cancel", "取消") }}</el-button>
72
+ <el-button type="primary" @click="submit" :disabled="!ready">{{
73
+ $jx3boxT("jx3boxUi.common.confirm", "确定")
74
+ }}</el-button>
63
75
  </span>
64
76
  </template>
65
77
  </el-dialog>
@@ -72,8 +84,10 @@ import User from "@jx3box/jx3box-common/js/user";
72
84
  import Contributors from "./Contributors.vue";
73
85
  import { debounce } from "lodash";
74
86
  import JX3BOX from "@jx3box/jx3box-common/data/jx3box.json";
87
+ import i18nMixin from "../../i18n/mixin";
75
88
  export default {
76
89
  name: "BoxcoinUser",
90
+ mixins: [i18nMixin],
77
91
  props: {
78
92
  boxcoin: {
79
93
  type: Number,
@@ -124,7 +138,7 @@ export default {
124
138
  visible: false,
125
139
 
126
140
  count: 0,
127
- remark: "辛苦了,谢谢大大!",
141
+ remark: this.$jx3boxT("jx3boxUi.boxcoinUser.defaultRemark", "辛苦了,谢谢大大!"),
128
142
  amount: "",
129
143
 
130
144
  left: this.own,
@@ -190,7 +204,7 @@ export default {
190
204
  })
191
205
  .then((res) => {
192
206
  this.$message({
193
- message: "操作成功",
207
+ message: this.$jx3boxT("jx3boxUi.boxcoinUser.success", "操作成功"),
194
208
  type: "success",
195
209
  });
196
210
  return res.data.data;
@@ -216,6 +230,10 @@ export default {
216
230
  .w-boxcoin-user {
217
231
  .dbi;
218
232
  .x(left);
233
+ .w-boxcoin-block {
234
+ .flex;
235
+ align-items: center;
236
+ }
219
237
  .u-icon {
220
238
  .size(26px);
221
239
  .y;
@@ -224,8 +242,6 @@ export default {
224
242
  .u-count {
225
243
  color: #888;
226
244
  .ml(10px);
227
- .pr;
228
- top: 4px;
229
245
  }
230
246
  .u-charge {
231
247
  .underline(@color-link);
@@ -14,8 +14,10 @@
14
14
  import User from "@jx3box/jx3box-common/js/user";
15
15
  import { hasFav, addFav, delFav } from "../../service/fav";
16
16
  import JX3BOX from "@jx3box/jx3box-common/data/jx3box.json";
17
+ import i18nMixin from "../../i18n/mixin";
17
18
  export default {
18
19
  name: "FavoriteComp",
20
+ mixins: [i18nMixin],
19
21
  props: {
20
22
  postType: {
21
23
  type: String,
@@ -47,7 +49,9 @@ export default {
47
49
  },
48
50
  computed: {
49
51
  favContent() {
50
- return this.favorite ? "已收藏" : "收藏";
52
+ return this.favorite
53
+ ? this.$jx3boxT("jx3boxUi.fav.collected", "已收藏")
54
+ : this.$jx3boxT("jx3boxUi.fav.collect", "收藏");
51
55
  },
52
56
  starIcon() {
53
57
  return this.isOld ? require("../../assets/img/widget/star.svg") : JX3BOX.__cdn + "design/vector/icon/collect.svg"