@jx3box/jx3box-common-ui 6.6.6 → 6.6.8

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 CHANGED
@@ -46,7 +46,7 @@ const components = {
46
46
  RightSideMsg,
47
47
  Author,
48
48
  Avatar,
49
-
49
+
50
50
  Thx,
51
51
  Like,
52
52
  Down,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jx3box/jx3box-common-ui",
3
- "version": "6.6.6",
3
+ "version": "6.6.8",
4
4
  "description": "JX3BOX UI",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -30,10 +30,10 @@
30
30
  "last 2 versions"
31
31
  ],
32
32
  "dependencies": {
33
- "@jx3box/jx3box-comment-ui": "^1.7.6",
33
+ "@jx3box/jx3box-comment-ui": "^1.7.8",
34
34
  "@jx3box/jx3box-common": "^7.6.2",
35
35
  "@jx3box/jx3box-data": "^3.0.3",
36
- "@jx3box/jx3box-editor": "^1.6.6",
36
+ "@jx3box/jx3box-editor": "^1.6.9",
37
37
  "axios": "^0.26.1",
38
38
  "dayjs": "^1.11.0",
39
39
  "element-ui": "^2.13.2",
package/service/thx.js CHANGED
@@ -42,6 +42,10 @@ function checkGiftStatus(accessUserId){
42
42
  return $pay().get(`/api/cny/consume/user-charge/to/${accessUserId}/check-status`)
43
43
  }
44
44
 
45
+ function batchReward(articleType,count,data){
46
+ return $pay().post(`/api/inspire/batch/article/${articleType}/coins/${count}`, data);
47
+ }
48
+
45
49
  export {
46
50
  getPostBoxcoinRecords,
47
51
  grantBoxcoin,
@@ -52,4 +56,5 @@ export {
52
56
  sendCny,
53
57
  checkCnyStatus,
54
58
  checkGiftStatus,
59
+ batchReward,
55
60
  };
package/src/App.vue CHANGED
@@ -1,42 +1,19 @@
1
1
  <template>
2
2
  <div class="container-page">
3
3
  <Header></Header>
4
- <Breadcrumb
5
- name="频道名称"
6
- slug="slug"
7
- root="/slug"
8
- :publishEnable="true"
9
- :feedbackEnable="true"
10
- :adminEnable="true"
11
- >
12
- <img
13
- slot="logo"
14
- svg-inline
15
- src="../assets/img/jx3.svg"
16
- />
4
+ <Breadcrumb name="频道名称" slug="slug" root="/slug" :publishEnable="true" :feedbackEnable="true" :adminEnable="true">
5
+ <img slot="logo" svg-inline src="../assets/img/jx3.svg" />
17
6
  bread info
18
7
  </Breadcrumb>
19
8
 
20
9
  <LeftSidebar :open="true" :uid="8">
21
- <LeftSideToggle :mobileOnly="true"/>
22
- <Author
23
- :author="author"
24
- :uid="8"
25
- />
10
+ <LeftSideToggle :mobileOnly="true" />
11
+ <Author :author="author" :uid="8" />
26
12
  </LeftSidebar>
27
13
 
28
- <Main
29
- :withoutLeft="false"
30
- :withoutRight="false"
31
- >
32
- <el-tabs
33
- v-model="tab"
34
- type="card"
35
- >
36
- <el-tab-pane
37
- label="CMS作品"
38
- name="post"
39
- >
14
+ <Main :withoutLeft="false" :withoutRight="false">
15
+ <el-tabs v-model="tab" type="card">
16
+ <el-tab-pane label="CMS作品" name="post">
40
17
  <el-radio-group v-model="post_id">
41
18
  <el-radio label="41346">临时测试</el-radio>
42
19
  <el-radio label="35605">Markdown</el-radio>
@@ -45,66 +22,23 @@
45
22
  <el-radio label="30582">小册和联合创作者</el-radio>
46
23
  <el-radio label="31129">无小册和联合创作者</el-radio>
47
24
  </el-radio-group>
48
- <singlebox
49
- :post="post"
50
- @extendUpdate="updateExtend"
51
- />
25
+ <singlebox :post="post" @extendUpdate="updateExtend" />
52
26
  </el-tab-pane>
53
- <el-tab-pane
54
- label="通用组件"
55
- name="widget"
56
- >
27
+ <el-tab-pane label="通用组件" name="widget">
57
28
  <PostHeader :post="post" />
58
- <Creators
59
- :postId="30432"
60
- style="margin-bottom: 10px"
61
- />
62
- <Collection
63
- :id="59"
64
- :defaultVisible="true"
65
- />
66
- <UserPop
67
- title="添加用户"
68
- v-model="visible"
69
- @confirm="addUser"
70
- />
29
+ <Creators :postId="30432" style="margin-bottom: 10px" />
30
+ <Collection :id="59" :defaultVisible="true" />
31
+ <UserPop title="添加用户" v-model="visible" @confirm="addUser" />
71
32
  <el-button @click="visible = true">用户POP</el-button>
72
-
73
- <Thx
74
- :postId="23865"
75
- postType="bbs"
76
- postTitle="bbs23865的标题"
77
- :userId="7"
78
- :adminBoxcoinEnable="true"
79
- :userBoxcoinEnable="true"
80
- />
81
-
33
+ <Thx :postId="23865" postType="bbs" postTitle="bbs23865的标题" type="batchReward" :userId="7"
34
+ :adminBoxcoinEnable="true" :userBoxcoinEnable="true"
35
+ :items="[{ user_id: 10, article_id: '11111', article_type: '' }]" />
82
36
  <hr />
83
-
84
- <Like
85
- mode="heart"
86
- :count="100"
87
- :showCount="true"
88
- />
89
- <Down
90
- :count="100"
91
- :showCount="true"
92
- />
93
- <Mark
94
- label="KEY"
95
- value="VALUE"
96
- BGL="#000"
97
- BGR="#F39"
98
- />
99
- <Fav
100
- post-id="90"
101
- post-type="jx3dat"
102
- post-title="jx3dat测试标题"
103
- />
104
- <Feed
105
- post-id="90"
106
- post-type="jx3dat"
107
- />
37
+ <Like mode="heart" :count="100" :showCount="true" />
38
+ <Down :count="100" :showCount="true" />
39
+ <Mark label="KEY" value="VALUE" BGL="#000" BGR="#F39" />
40
+ <Fav post-id="90" post-type="jx3dat" post-title="jx3dat测试标题" />
41
+ <Feed post-id="90" post-type="jx3dat" />
108
42
  <Print title="传入标题" />
109
43
  <QRcode />
110
44
  <Sharing />
@@ -114,24 +48,15 @@
114
48
  <markBy />
115
49
  <menuBy :data="['test1', 'test2']" />
116
50
  <orderBy />
117
- <tagBy
118
- :data="['PVE', 'PVX']"
119
- :type="tag"
120
- />
51
+ <tagBy :data="['PVE', 'PVX']" :type="tag" />
121
52
  <clientBy type="" />
122
53
  <zlpBy />
123
54
 
124
55
  <hr />
125
- <uploadImage
126
- v-model="upload"
127
- info="非必选。首页海报尺寸1100*300(推荐2200*600支持高分屏),最大20M。"
128
- ></uploadImage>
56
+ <uploadImage v-model="upload" info="非必选。首页海报尺寸1100*300(推荐2200*600支持高分屏),最大20M。"></uploadImage>
129
57
  <AuthorMedal :author-id="8"></AuthorMedal>
130
58
  </el-tab-pane>
131
- <el-tab-pane
132
- label="百科组件"
133
- name="wiki"
134
- >
59
+ <el-tab-pane label="百科组件" name="wiki">
135
60
  <WikiPanel :wiki-post="wikiPost">
136
61
  <template slot="head-title">
137
62
  <i class="el-icon-location-information"></i>
@@ -148,22 +73,13 @@
148
73
  </WikiPanel>
149
74
  <hr />
150
75
 
151
- <WikiRevisions
152
- type="achievement"
153
- source-id="2996"
154
- />
76
+ <WikiRevisions type="achievement" source-id="2996" />
155
77
  <hr />
156
78
 
157
- <WikiComments
158
- type="achievement"
159
- source-id="2996"
160
- />
79
+ <WikiComments type="achievement" source-id="2996" />
161
80
  <hr />
162
81
  </el-tab-pane>
163
- <el-tab-pane
164
- label="头像"
165
- name="avatar"
166
- >
82
+ <el-tab-pane label="头像" name="avatar">
167
83
  <el-radio-group v-model="avatar_size">
168
84
  <el-radio label="xxs">xxs-36/48</el-radio>
169
85
  <el-radio label="xs">xs-48/68</el-radio>
@@ -173,12 +89,8 @@
173
89
  <el-radio label="xl">xl-150/210</el-radio>
174
90
  </el-radio-group>
175
91
  <div style="padding:60px;background-color: #e3e3e3;">
176
- <Avatar
177
- :id="8"
178
- url="https://console.cnyixun.com/upload/avatar/2022/3/2/8_9860765.png"
179
- :size="avatar_size"
180
- frame="moon_1"
181
- />
92
+ <Avatar :id="8" url="https://console.cnyixun.com/upload/avatar/2022/3/2/8_9860765.png" :size="avatar_size"
93
+ frame="moon_1" />
182
94
  </div>
183
95
  </el-tab-pane>
184
96
  </el-tabs>
@@ -349,6 +261,6 @@ export default {
349
261
 
350
262
  <style lang="less">
351
263
  body {
352
- padding-top: 0;
264
+ padding-top: 0;
353
265
  }
354
266
  </style>
package/src/Header.vue CHANGED
@@ -10,7 +10,10 @@
10
10
  <header-logo />
11
11
 
12
12
  <!-- origin -->
13
- <clientSwitch :defaultValue="client" />
13
+ <!-- <clientSwitch :defaultValue="client" /> -->
14
+
15
+ <!-- game -->
16
+ <gameSwitch />
14
17
 
15
18
  <!-- search -->
16
19
  <header-search :client="client" />
@@ -38,6 +41,7 @@ import search from "./header/search.vue";
38
41
  import nav from "./header/nav.vue";
39
42
  import user from "./header/user.vue";
40
43
  import Box from "../src/Box2.vue";
44
+ import gameSwitch from "./header/gameSwitch.vue";
41
45
 
42
46
  export default {
43
47
  name: "Header",
@@ -82,11 +86,12 @@ export default {
82
86
  mounted: function () {},
83
87
  components: {
84
88
  "header-logo": logo,
85
- clientSwitch,
89
+ // clientSwitch,
86
90
  "header-search": search,
87
91
  "header-nav": nav,
88
92
  "header-user": user,
89
93
  Box,
94
+ gameSwitch,
90
95
  },
91
96
  };
92
97
  </script>
@@ -88,7 +88,7 @@ export default {
88
88
  this.setDecoration(JSON.parse(decoration_sidebar))
89
89
  return;
90
90
  }
91
- getDecoration({using:1,user_id:this.user_id}).then(data=>{
91
+ getDecoration({using:1,user_id:this.user_id,type:'sidebar'}).then(data=>{
92
92
  let res=data.data.data
93
93
  if(res.length==0){
94
94
  //空 则为无主题,不再加载接口,界面设No
@@ -96,17 +96,19 @@ export default {
96
96
  this.bg =""
97
97
  return;
98
98
  }
99
- let decoration=res.filter(val => {
100
- return val.type === 'sidebar'
101
- })
102
- if(decoration.length>0){
103
- sessionStorage.setItem('decoration_sidebar'+this.user_id,JSON.stringify(decoration[0]))
104
- this.setDecoration(decoration[0])
105
- }else{
106
- //空 则为无主题,不再加载接口,界面设No
107
- sessionStorage.setItem('decoration_sidebar'+this.user_id,'no')
108
- this.bg =""
109
- }
99
+ sessionStorage.setItem('decoration_sidebar'+this.user_id,JSON.stringify(res[0]))
100
+ this.setDecoration(res[0])
101
+ // let decoration=res.filter(val => {
102
+ // return val.type === 'sidebar'
103
+ // })
104
+ // if(decoration.length>0){
105
+
106
+ // this.setDecoration(decoration[0])
107
+ // }else{
108
+ // //空 则为无主题,不再加载接口,界面设No
109
+ // sessionStorage.setItem('decoration_sidebar'+this.user_id,'no')
110
+ // this.bg =""
111
+ // }
110
112
  })
111
113
  },
112
114
  setDecoration(decoration_sidebar){
@@ -0,0 +1,227 @@
1
+ <template>
2
+ <div class="c-game-switch">
3
+ <div class="u-current on" @click.stop="onShow">
4
+ <span>{{ currentGame.name }}</span>
5
+ </div>
6
+
7
+ <div class="c-game-list" v-show="showMore">
8
+ <a
9
+ class="u-game-item"
10
+ v-for="item in games"
11
+ :key="item.key"
12
+ :class="{ active: current === item.key, disabled: item.disabled }"
13
+ :href="itemHref(item)"
14
+ @click.stop="handleClick(item)"
15
+ >
16
+ <img class="u-img" :src="item.img" alt="" />
17
+ <span>{{ item.name }}</span>
18
+ </a>
19
+ </div>
20
+ </div>
21
+ </template>
22
+
23
+ <script>
24
+ import { __imgPath } from "@jx3box/jx3box-common/data/jx3box.json";
25
+ export default {
26
+ name: "gameSwitch",
27
+ data() {
28
+ return {
29
+ games: [
30
+ {
31
+ name: "剑网3",
32
+ img: __imgPath + "image/xsj/jx3czb.png",
33
+ key: "jx3",
34
+ path: "https://www.jx3box.com",
35
+ disabled: false,
36
+ },
37
+ {
38
+ name: "剑网3缘起",
39
+ img: __imgPath + "image/xsj/jx3yq.png",
40
+ key: "jx3origin",
41
+ path: "https://origin.jx3box.com",
42
+ disabled: false,
43
+ },
44
+ {
45
+ name: "指尖江湖",
46
+ img: __imgPath + "image/xsj/zjjh.png",
47
+ key: "zjjh",
48
+ path: "https://zjjh.jx3box.com",
49
+ disabled: true,
50
+ },
51
+ {
52
+ name: "指尖对弈",
53
+ img: __imgPath + "image/xsj/zjdy.png",
54
+ key: "zjdy",
55
+ path: "https://zjdy.jx3box.com",
56
+ disabled: true,
57
+ },
58
+ {
59
+ name: "剑侠世界3",
60
+ img: __imgPath + "image/xsj/jxsj3.png",
61
+ key: "jxsj3",
62
+ path: "https://jxsj3.jx3box.com",
63
+ disabled: true,
64
+ },
65
+ {
66
+ name: "剑侠世界",
67
+ img: __imgPath + "image/xsj/jxsj.png",
68
+ key: "jxsj",
69
+ path: "https://jxsj.jx3box.com",
70
+ disabled: true,
71
+ },
72
+ {
73
+ name: "剑网1:归来",
74
+ img: __imgPath + "image/xsj/jx1gl.png",
75
+ key: "jx1",
76
+ path: "https://jx1.jx3box.com",
77
+ disabled: true,
78
+ },
79
+ {
80
+ name: "双生视界",
81
+ img: __imgPath + "image/xsj/sssj.png",
82
+ key: "sssj",
83
+ path: "https://sssj.jx3box.com",
84
+ disabled: true,
85
+ },
86
+ ],
87
+ current: "jx3",
88
+
89
+ showMore: false,
90
+ };
91
+ },
92
+ computed: {
93
+ currentGame() {
94
+ return this.games.find((item) => item.key == this.current);
95
+ },
96
+ },
97
+ mounted() {
98
+ const _host = window.location.host;
99
+ const _game = this.games.find((item) => item.path.indexOf(_host) > -1);
100
+ if (_game) {
101
+ this.current = _game.key;
102
+ }
103
+ this.close();
104
+ },
105
+ methods: {
106
+ handleClick(item) {
107
+ if (item.disabled) {
108
+ return;
109
+ }
110
+ this.current = item.key;
111
+ },
112
+ itemHref(item) {
113
+ if (item.disabled) {
114
+ return "javascript:;";
115
+ }
116
+ return item.path;
117
+ },
118
+ onShow() {
119
+ this.showMore = !this.showMore;
120
+ },
121
+ close() {
122
+ document.addEventListener("click", () => {
123
+ this.showMore = false;
124
+ });
125
+ },
126
+ },
127
+ };
128
+ </script>
129
+
130
+ <style lang="less">
131
+ .arrow(t,@width,@color,@x:50%) {
132
+ &:before {
133
+ bottom: 100%;
134
+ left: @x;
135
+ content: " ";
136
+ height: 0;
137
+ width: 0;
138
+ position: absolute;
139
+ pointer-events: none;
140
+ border-style: solid;
141
+ border-color: transparent;
142
+ border-bottom-color: @color;
143
+ border-width: unit(@width, px);
144
+ @margin: -@width;
145
+ margin-left: unit(@margin, px);
146
+ }
147
+ }
148
+ .c-game-switch {
149
+ .fl;
150
+ margin: 15px 0;
151
+ .mr(10px);
152
+ .pr;
153
+ .u-current {
154
+ .flex;
155
+ align-items: center;
156
+ .pointer;
157
+ .dbi;
158
+ .y(top);
159
+ font-size: 14px;
160
+ color: #fff;
161
+ padding: 5px 10px;
162
+ background-color: #7d7d7d;
163
+ border: 2px solid #303133;
164
+ border-radius: 4px;
165
+ .pr;
166
+ .z(1);
167
+ .u-img {
168
+ width: 20px;
169
+ height: 20px;
170
+ margin-right: 5px;
171
+ }
172
+
173
+ &.on {
174
+ background-color: @primary;
175
+ .pointer;
176
+ }
177
+ }
178
+ }
179
+ .c-game-list {
180
+ .arrow(t,5px,@bg-black,12%);
181
+ position: absolute;
182
+ top: calc(100% + 14px);
183
+ left: -10px;
184
+ width: 300px;
185
+ background-color: #24292e;
186
+ padding: 10px;
187
+ border: 1px solid rgba(27, 31, 35, 0.15);
188
+ border-radius: 4px;
189
+ box-shadow: 0 3px 12px rgba(27, 31, 35, 0.15);
190
+ margin-top: 6px;
191
+ display: grid;
192
+ grid-template-columns: repeat(2, 1fr);
193
+ // gap:10px;
194
+ grid-row-gap: 8px;
195
+ grid-column-gap: 10px;
196
+ .u-game-item {
197
+ .flex;
198
+ align-items: center;
199
+ padding: 6px;
200
+ .pointer;
201
+ border-radius: 4px;
202
+ color: #fff;
203
+ font-size: 14px;
204
+ .u-img {
205
+ width: 24px;
206
+ height: 24px;
207
+ margin-right: 5px;
208
+ border-radius: 4px;
209
+ }
210
+ &.active {
211
+ background-color: @primary;
212
+ color: #fff;
213
+ }
214
+ &:not(.disabled) {
215
+ &:hover {
216
+ background-color: @primary;
217
+ color: #fff;
218
+ }
219
+ }
220
+ &.disabled {
221
+ filter: grayscale(100%);
222
+ color: #c0c4cc;
223
+ cursor: not-allowed;
224
+ }
225
+ }
226
+ }
227
+ </style>