@jx3box/jx3box-common-ui 7.5.0 → 7.5.2

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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jx3box/jx3box-common-ui",
3
- "version": "7.5.0",
3
+ "version": "7.5.2",
4
4
  "description": "JX3BOX UI",
5
5
  "main": "index.js",
6
6
  "scripts": {
package/service/admin.js CHANGED
@@ -12,8 +12,31 @@ function postSetting(data) {
12
12
  return $cms().put(`/api/cms/post/${data.ID}/setting`, data);
13
13
  }
14
14
 
15
+ // 管理员发送私信
15
16
  function sendMessage(data){
16
17
  return $cms().post(`/api/cms/admin/direct-message`, data);
17
18
  }
18
19
 
19
- export { getSetting, postSetting, sendMessage };
20
+ // 管理员新增自定义主题
21
+ function addTopicBucket(data){
22
+ return $cms().post(`/api/cms/post/topic/bucket`, data);
23
+ }
24
+
25
+ // 管理员删除自定义主题
26
+ function deleteTopicBucket(id){
27
+ return $cms().delete(`/api/cms/post/topic/bucket/${id}`);
28
+ }
29
+
30
+ // 管理员修改自定义主题
31
+ function updateTopicBucket(id, data){
32
+ return $cms().put(`/api/cms/post/topic/bucket/${id}`, data);
33
+ }
34
+
35
+ // 管理员获取自定义主题
36
+ function getTopicBucket(params) {
37
+ return $cms().get(`/api/cms/post/topic/bucket/manage`, {
38
+ params: params,
39
+ });
40
+ }
41
+
42
+ export { getSetting, postSetting, sendMessage, addTopicBucket, deleteTopicBucket, updateTopicBucket, getTopicBucket };
package/src/App.vue CHANGED
@@ -9,6 +9,7 @@
9
9
  :feedbackEnable="true"
10
10
  :adminEnable="true"
11
11
  :crumb-enable="true"
12
+ :topicEnable="true"
12
13
  >
13
14
  <img slot="logo" svg-inline src="../assets/img/jx3.svg" />
14
15
  bread info
@@ -43,6 +43,7 @@
43
43
  <span>反馈</span>
44
44
  </a>
45
45
  <Adminbutton v-if="adminEnable" class="u-admin" />
46
+ <ListAdmin v-if="topicEnable" />
46
47
  <Admin v-if="adminEnable" :marksOptions="adminMarks" />
47
48
  <slot name="op-prepend"></slot>
48
49
  </div>
@@ -57,6 +58,7 @@ import User from "@jx3box/jx3box-common/js/user";
57
58
  import Admin from "./bread/Admin";
58
59
  import Crumb from "./bread/Crumb";
59
60
  import Adminbutton from "./bread/Adminbutton";
61
+ import ListAdmin from "./bread/ListAdmin";
60
62
 
61
63
  import { isApp } from "../assets/js/app.js";
62
64
  import Bus from "../service/bus";
@@ -69,6 +71,7 @@ export default {
69
71
  "root",
70
72
  "publishEnable",
71
73
  "adminEnable",
74
+ "topicEnable",
72
75
  "feedbackEnable",
73
76
  "overlayEnable",
74
77
  "crumbEnable",
@@ -121,6 +124,7 @@ export default {
121
124
  Admin,
122
125
  Crumb,
123
126
  Adminbutton,
127
+ ListAdmin,
124
128
  },
125
129
  };
126
130
  </script>
@@ -0,0 +1,195 @@
1
+ <template>
2
+ <div v-if="hasRight" class="u-admin-button">
3
+ <el-button
4
+ type="primary"
5
+ icon="el-icon-setting"
6
+ class="c-admin-button u-admin"
7
+ :size="buttonSize"
8
+ @click="show = true"
9
+ >管理</el-button
10
+ >
11
+ <el-drawer
12
+ class="c-admin"
13
+ title="管理主题"
14
+ :visible.sync="show"
15
+ :before-close="close"
16
+ :append-to-body="true"
17
+ :modal="false"
18
+ :withHeader="false"
19
+ >
20
+ <div class="c-admin-wrapper" v-loading="loading">
21
+ <el-divider content-position="left">当前主题</el-divider>
22
+ <div class="m-bucket-list" v-if="upList && upList.length">
23
+ <div v-for="item in upList" :key="item.id" class="m-bucket-item">
24
+ <el-tag size="medium">{{ item.name }}</el-tag>
25
+ <div class="m-bucket-op">
26
+ <el-button type="text" class="u-op-btn" icon="el-icon-download" @click="update(item.id, item.status)">下架</el-button>
27
+ <el-button type="text" class="u-op-btn" icon="el-icon-delete" @click="del(item.id)">删除</el-button>
28
+ </div>
29
+ </div>
30
+ </div>
31
+ <el-empty v-else description="暂无主题"></el-empty>
32
+
33
+ <el-button class="u-bucket-add" icon="el-icon-plus" type="primary" @click="add">添加主题</el-button>
34
+
35
+ <el-divider content-position="left">下架主题</el-divider>
36
+ <div class="m-bucket-list">
37
+ <div v-for="item in downList" :key="item.id" class="m-bucket-item">
38
+ <el-tag size="medium">{{ item.name }}</el-tag>
39
+ <div class="m-bucket-op">
40
+ <el-button type="text" class="u-op-btn" icon="el-icon-upload2" @click="update(item.id, item.status)">上架</el-button>
41
+ <el-button type="text" class="u-op-btn" icon="el-icon-delete" @click="del(item.id)">删除</el-button>
42
+ </div>
43
+ </div>
44
+ </div>
45
+ <div class="c-admin-buttons">
46
+ <!-- <el-button type="primary" @click="submit" :loading="pushing">提交</el-button> -->
47
+ <el-button type="plain" @click="close">关闭</el-button>
48
+ </div>
49
+ </div>
50
+ </el-drawer>
51
+ </div>
52
+ </template>
53
+
54
+ <script>
55
+ import { addTopicBucket, deleteTopicBucket, updateTopicBucket, getTopicBucket } from "../../service/admin";
56
+ import User from "@jx3box/jx3box-common/js/user";
57
+ export default {
58
+ name: "ListAdmin",
59
+ props: {
60
+ type: {
61
+ type: String,
62
+ default: "bbs",
63
+ },
64
+ buttonSize: {
65
+ type: String,
66
+ default: "medium",
67
+ },
68
+ },
69
+ data() {
70
+ return {
71
+ show: false,
72
+ list: [],
73
+ loading: false,
74
+ currentStatus: "",
75
+ };
76
+ },
77
+ computed: {
78
+ hasRight() {
79
+ return User.isEditor();
80
+ },
81
+ // 上架主题
82
+ upList() {
83
+ return this.list.filter((item) => item.status == 1);
84
+ },
85
+ // 下架主题
86
+ downList() {
87
+ return this.list.filter((item) => item.status == 0);
88
+ },
89
+ },
90
+ watch: {
91
+ show(val) {
92
+ val && this.loadData();
93
+ },
94
+ },
95
+ methods: {
96
+ close() {
97
+ this.show = false;
98
+ },
99
+ loadData() {
100
+ const params = {
101
+ type: this.type,
102
+ };
103
+ this.loading = true;
104
+ getTopicBucket(params)
105
+ .then((res) => {
106
+ this.list = res.data.data;
107
+ })
108
+ .finally(() => {
109
+ this.loading = false;
110
+ });
111
+ },
112
+ del(id) {
113
+ this.$confirm("此操作将删除该主题, 是否继续?", "提示", {
114
+ confirmButtonText: "确定",
115
+ cancelButtonText: "取消",
116
+ type: "warning",
117
+ })
118
+ .then(() => {
119
+ deleteTopicBucket(id).then((res) => {
120
+ this.$message({
121
+ type: "success",
122
+ message: "删除成功!",
123
+ });
124
+ this.loadData();
125
+ });
126
+ })
127
+ .catch(() => {});
128
+ },
129
+ update(id, status) {
130
+ const params = {
131
+ status: status ? 0 : 1,
132
+ };
133
+ updateTopicBucket(id, params).then((res) => {
134
+ this.$message({
135
+ type: "success",
136
+ message: "更新成功!",
137
+ });
138
+ this.loadData();
139
+ });
140
+ },
141
+ add() {
142
+ this.$prompt("请输入主题名称", "提示", {
143
+ confirmButtonText: "确定",
144
+ cancelButtonText: "取消",
145
+ inputPattern: /\S+/,
146
+ inputErrorMessage: "主题名称不能为空",
147
+ })
148
+ .then(({ value }) => {
149
+ const data = {
150
+ type: this.type,
151
+ name: value,
152
+ };
153
+ addTopicBucket(data).then((res) => {
154
+ this.$message({
155
+ type: "success",
156
+ message: "添加成功!",
157
+ });
158
+ this.loadData();
159
+ });
160
+ })
161
+ .catch(() => {});
162
+ },
163
+ },
164
+ };
165
+ </script>
166
+
167
+ <style lang="less">
168
+ .u-admin-button {
169
+ padding: 0;
170
+ float: right;
171
+ }
172
+ .c-admin-wrapper {
173
+ .u-admin-setting {
174
+ .pointer;
175
+ }
176
+ .m-bucket-list {
177
+ .m-bucket-item {
178
+ .flex;
179
+ align-items: center;
180
+ justify-content: space-between;
181
+ padding: 0 5px;
182
+ border-radius: 3px;
183
+
184
+ // odd
185
+ &:nth-child(odd) {
186
+ background-color: #f7f7f7;
187
+ }
188
+ }
189
+ }
190
+ .u-bucket-add {
191
+ margin-top: 20px;
192
+ width: 100%;
193
+ }
194
+ }
195
+ </style>