Skip to content

Commit f834ee3

Browse files
committed
优化标签防止标签中出现空格
1 parent 278cd0f commit f834ee3

File tree

8 files changed

+27
-10
lines changed

8 files changed

+27
-10
lines changed

admin/src/utils/utils.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -372,4 +372,9 @@ export const dataURLtoBlob = (dataurl) => {
372372
u8arr[n] = bstr.charCodeAt(n);
373373
}
374374
return new Blob([u8arr], { type: mime });
375+
}
376+
377+
// 文字中的空格和全角空格替换为下划线
378+
export const replaceSpacesWithUnderscores = (str) => {
379+
return str.replace(/[\s\u3000]/g, '-');
375380
}

admin/src/views/index/post/PostEditor.vue

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -408,7 +408,7 @@ import RichEditor5 from '@/components/RichEditor5'
408408
import draggable from 'vuedraggable'
409409
import EmojiTextarea from '@/components/EmojiTextarea.vue'
410410
import { onBeforeRouteLeave } from 'vue-router'
411-
import { loadAndOpenImg } from '@/utils/utils'
411+
import { loadAndOpenImg, replaceSpacesWithUnderscores } from '@/utils/utils'
412412
import store from '@/store'
413413
414414
export default {
@@ -633,13 +633,14 @@ export default {
633633
const list = res.data.list
634634
if (tagKeyword) {
635635
// 如果tagkeyword没有在list里面,就把tagkeyword push到list里面
636+
const formatTagKeyword = replaceSpacesWithUnderscores(tagKeyword)
636637
const hasTagKeyword = list.some(
637-
(item) => item.tagname === tagKeyword
638+
(item) => item.tagname === formatTagKeyword
638639
)
639640
if (!hasTagKeyword) {
640641
list.push({
641-
_id: tagKeyword,
642-
tagname: tagKeyword,
642+
_id: formatTagKeyword,
643+
tagname: formatTagKeyword,
643644
isNew: true,
644645
})
645646
}

admin/src/views/index/post/PostList.vue

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -205,13 +205,15 @@
205205

206206
<el-table-column prop="tags" label="标签" width="200">
207207
<template #default="{ row }">
208-
<el-tag
208+
<div
209+
class="postlist-content-item"
209210
v-for="tag in row.tags"
210211
:key="tag._id"
211212
size="small"
212213
style="margin-right: 5px"
213-
>{{ tag.tagname }}</el-tag
214214
>
215+
#{{ tag.tagname }}
216+
</div>
215217
</template>
216218
</el-table-column>
217219
<!-- 关联内容 -->

admin/src/views/index/tag/TagEditor.vue

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
<el-input
1616
v-model="form.tagname"
1717
placeholder="请输入标签名称"
18+
@blur="form.tagname = replaceSpacesWithUnderscores(form.tagname)"
1819
></el-input>
1920
</el-form-item>
2021
<el-form-item>
@@ -28,6 +29,7 @@
2829
import { useRouter, useRoute } from 'vue-router'
2930
import { onMounted, reactive, ref } from 'vue'
3031
import { authApi } from '@/api'
32+
import { replaceSpacesWithUnderscores } from '@/utils/utils'
3133
export default {
3234
setup() {
3335
const router = useRouter()
@@ -94,6 +96,7 @@ export default {
9496
}
9597
})
9698
return {
99+
replaceSpacesWithUnderscores,
97100
id,
98101
form,
99102
rules,

server/api/admin/post/updatePost.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -213,14 +213,15 @@ module.exports = async function (req, res, next) {
213213
let tagsIdArr = []
214214
for await (const tagId of tags_) {
215215
if (!validator.isMongoId(tagId)) {
216+
const tagname = utils.replaceSpacesWithUnderscores(tagId)
216217
// 不是id,创建tag
217218
// 校验tagname是否存在
218-
let tag = await tagUtils.findOne({ tagname: tagId }).catch((err) => {
219+
let tag = await tagUtils.findOne({ tagname: tagname }).catch((err) => {
219220
return null
220221
})
221222
if (!tag) {
222223
tag = await tagUtils.save({
223-
tagname: tagId
224+
tagname: tagname
224225
}).catch((err) => {
225226
return false
226227
})

server/api/admin/tag/createTag.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ module.exports = async function (req, res, next) {
88
const { tagname } = req.body
99
// 校验格式
1010
const params = {
11-
tagname: tagname,
11+
tagname: utils.replaceSpacesWithUnderscores(tagname),
1212
}
1313
const rule = [
1414
{

server/api/admin/tag/updateTag.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ module.exports = async function (req, res, next) {
2525
}
2626
// 校验格式
2727
const params = {
28-
tagname: tagname,
28+
tagname: utils.replaceSpacesWithUnderscores(tagname),
2929
}
3030
const rule = [
3131
{

server/utils/utils.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -789,6 +789,11 @@ exports.getCommentLikeLogsSize = async () => {
789789
}
790790
}
791791

792+
// 文字中的空格和全角空格替换为下划线
793+
exports.replaceSpacesWithUnderscores = (str) => {
794+
return str.replace(/[\s\u3000]/g, '-');
795+
}
796+
792797
// let reflushBlogCacheTimer = null
793798
// exports.reflushBlogCache = async () => {
794799
// if (reflushBlogCacheTimer) {

0 commit comments

Comments
 (0)