@jx3box/jx3box-common-ui 7.4.9 → 7.5.1

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.4.9",
3
+ "version": "7.5.1",
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/service/cms.js CHANGED
@@ -32,11 +32,12 @@ function checkTeamMember() {
32
32
  return $cms().get(`/api/cms/config/teammates/check`);
33
33
  }
34
34
 
35
- function getSliders(source_type, source_ids) {
35
+ function getSliders(source_type, source_ids, client="std") {
36
36
  let _params = {
37
37
  type: "slider",
38
38
  source_type,
39
39
  per: 10,
40
+ client,
40
41
  };
41
42
 
42
43
  if (source_ids) {
@@ -43,6 +43,7 @@
43
43
  <span>反馈</span>
44
44
  </a>
45
45
  <Adminbutton v-if="adminEnable" class="u-admin" />
46
+ <ListAdmin v-if="adminEnable" />
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";
@@ -121,6 +123,7 @@ export default {
121
123
  Admin,
122
124
  Crumb,
123
125
  Adminbutton,
126
+ ListAdmin,
124
127
  },
125
128
  };
126
129
  </script>
@@ -0,0 +1,191 @@
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>
46
+ </el-drawer>
47
+ </div>
48
+ </template>
49
+
50
+ <script>
51
+ import { addTopicBucket, deleteTopicBucket, updateTopicBucket, getTopicBucket } from "../../service/admin";
52
+ import User from "@jx3box/jx3box-common/js/user";
53
+ export default {
54
+ name: "ListAdmin",
55
+ props: {
56
+ type: {
57
+ type: String,
58
+ default: "bbs",
59
+ },
60
+ buttonSize: {
61
+ type: String,
62
+ default: "medium",
63
+ },
64
+ },
65
+ data() {
66
+ return {
67
+ show: false,
68
+ list: [],
69
+ loading: false,
70
+ currentStatus: "",
71
+ };
72
+ },
73
+ computed: {
74
+ hasRight() {
75
+ return User.isEditor();
76
+ },
77
+ // 上架主题
78
+ upList() {
79
+ return this.list.filter((item) => item.status == 1);
80
+ },
81
+ // 下架主题
82
+ downList() {
83
+ return this.list.filter((item) => item.status == 0);
84
+ },
85
+ },
86
+ watch: {
87
+ show(val) {
88
+ val && this.loadData();
89
+ },
90
+ },
91
+ methods: {
92
+ close() {
93
+ this.show = false;
94
+ },
95
+ loadData() {
96
+ const params = {
97
+ type: this.type,
98
+ };
99
+ this.loading = true;
100
+ getTopicBucket(params)
101
+ .then((res) => {
102
+ this.list = res.data.data;
103
+ })
104
+ .finally(() => {
105
+ this.loading = false;
106
+ });
107
+ },
108
+ del(id) {
109
+ this.$confirm("此操作将删除该主题, 是否继续?", "提示", {
110
+ confirmButtonText: "确定",
111
+ cancelButtonText: "取消",
112
+ type: "warning",
113
+ })
114
+ .then(() => {
115
+ deleteTopicBucket(id).then((res) => {
116
+ this.$message({
117
+ type: "success",
118
+ message: "删除成功!",
119
+ });
120
+ this.loadData();
121
+ });
122
+ })
123
+ .catch(() => {});
124
+ },
125
+ update(id, status) {
126
+ const params = {
127
+ status: status ? 0 : 1,
128
+ };
129
+ updateTopicBucket(id, params).then((res) => {
130
+ this.$message({
131
+ type: "success",
132
+ message: "更新成功!",
133
+ });
134
+ this.loadData();
135
+ });
136
+ },
137
+ add() {
138
+ this.$prompt("请输入主题名称", "提示", {
139
+ confirmButtonText: "确定",
140
+ cancelButtonText: "取消",
141
+ inputPattern: /\S+/,
142
+ inputErrorMessage: "主题名称不能为空",
143
+ })
144
+ .then(({ value }) => {
145
+ const data = {
146
+ type: this.type,
147
+ name: value,
148
+ };
149
+ addTopicBucket(data).then((res) => {
150
+ this.$message({
151
+ type: "success",
152
+ message: "添加成功!",
153
+ });
154
+ this.loadData();
155
+ });
156
+ })
157
+ .catch(() => {});
158
+ },
159
+ },
160
+ };
161
+ </script>
162
+
163
+ <style lang="less">
164
+ .u-admin-button {
165
+ padding: 0;
166
+ float: right;
167
+ }
168
+ .c-admin-wrapper {
169
+ .u-admin-setting {
170
+ .pointer;
171
+ }
172
+ .m-bucket-list {
173
+ .m-bucket-item {
174
+ .flex;
175
+ align-items: center;
176
+ justify-content: space-between;
177
+ padding: 0 5px;
178
+ border-radius: 3px;
179
+
180
+ // odd
181
+ &:nth-child(odd) {
182
+ background-color: #f7f7f7;
183
+ }
184
+ }
185
+ }
186
+ .u-bucket-add {
187
+ margin-top: 20px;
188
+ width: 100%;
189
+ }
190
+ }
191
+ </style>
@@ -38,6 +38,9 @@ export default {
38
38
  topicImage() {
39
39
  return this.topicInfo ? getThumbnail(this.topicInfo.img, [260*2, 78*2]) : ''
40
40
  },
41
+ client() {
42
+ return location.href.includes("origin") ? "origin" : "std";
43
+ },
41
44
  },
42
45
  watch: {
43
46
  id: {
@@ -50,7 +53,7 @@ export default {
50
53
  },
51
54
  methods: {
52
55
  loadData() {
53
- getSliders(this.type, this.id).then((res) => {
56
+ getSliders(this.type, this.id, this.client).then((res) => {
54
57
  if (res.data.data?.list) {
55
58
  // 取创建时间最新的一条
56
59
  const list = res.data.data.list.sort((a, b) => dayjs(b.created_at).isAfter(dayjs(a.created_at)) ? 1 : -1);