ブログ一時保存

This commit is contained in:
simple321vip
2022-04-24 23:13:47 +08:00
parent e966d15e5e
commit 6e5d90d613
9 changed files with 306 additions and 99 deletions
+130
View File
@@ -343,6 +343,15 @@
"integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
"dev": true "dev": true
}, },
"ansi-styles": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
"requires": {
"color-convert": "^2.0.1"
}
},
"asap": { "asap": {
"version": "2.0.6", "version": "2.0.6",
"resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
@@ -394,6 +403,16 @@
"get-intrinsic": "^1.0.2" "get-intrinsic": "^1.0.2"
} }
}, },
"chalk": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"dev": true,
"requires": {
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
}
},
"character-parser": { "character-parser": {
"version": "2.2.0", "version": "2.2.0",
"resolved": "https://registry.npmjs.org/character-parser/-/character-parser-2.2.0.tgz", "resolved": "https://registry.npmjs.org/character-parser/-/character-parser-2.2.0.tgz",
@@ -413,6 +432,21 @@
"tiny-emitter": "^2.0.0" "tiny-emitter": "^2.0.0"
} }
}, },
"color-convert": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dev": true,
"requires": {
"color-name": "~1.1.4"
}
},
"color-name": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"dev": true
},
"constantinople": { "constantinople": {
"version": "4.0.1", "version": "4.0.1",
"resolved": "https://registry.npmjs.org/constantinople/-/constantinople-4.0.1.tgz", "resolved": "https://registry.npmjs.org/constantinople/-/constantinople-4.0.1.tgz",
@@ -441,6 +475,15 @@
"resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.0.tgz", "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.0.tgz",
"integrity": "sha512-JLC809s6Y948/FuCZPm5IX8rRhQwOiyMb2TfVVQEixG7P8Lm/gt5S7yoQZmC8x1UehI9Pb7sksEt4xx14m+7Ug==" "integrity": "sha512-JLC809s6Y948/FuCZPm5IX8rRhQwOiyMb2TfVVQEixG7P8Lm/gt5S7yoQZmC8x1UehI9Pb7sksEt4xx14m+7Ug=="
}, },
"debug": {
"version": "4.3.4",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
"integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
"dev": true,
"requires": {
"ms": "2.1.2"
}
},
"delegate": { "delegate": {
"version": "3.2.0", "version": "3.2.0",
"resolved": "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz", "resolved": "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz",
@@ -502,6 +545,15 @@
"resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz",
"integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==" "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg=="
}, },
"echarts": {
"version": "5.3.2",
"resolved": "https://registry.npmjs.org/echarts/-/echarts-5.3.2.tgz",
"integrity": "sha512-LWCt7ohOKdJqyiBJ0OGBmE9szLdfA9sGcsMEi+GGoc6+Xo75C+BkcT/6NNGRHAWtnQl2fNow05AQjznpap28TQ==",
"requires": {
"tslib": "2.3.0",
"zrender": "5.3.1"
}
},
"element-plus": { "element-plus": {
"version": "2.1.7", "version": "2.1.7",
"resolved": "https://registry.npmjs.org/element-plus/-/element-plus-2.1.7.tgz", "resolved": "https://registry.npmjs.org/element-plus/-/element-plus-2.1.7.tgz",
@@ -740,6 +792,17 @@
"resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz", "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz",
"integrity": "sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4=" "integrity": "sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4="
}, },
"fs-extra": {
"version": "10.1.0",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
"integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
"dev": true,
"requires": {
"graceful-fs": "^4.2.0",
"jsonfile": "^6.0.1",
"universalify": "^2.0.0"
}
},
"fsevents": { "fsevents": {
"version": "2.3.2", "version": "2.3.2",
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
@@ -770,6 +833,12 @@
"delegate": "^3.1.2" "delegate": "^3.1.2"
} }
}, },
"graceful-fs": {
"version": "4.2.10",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz",
"integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==",
"dev": true
},
"has": { "has": {
"version": "1.0.3", "version": "1.0.3",
"resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
@@ -778,6 +847,12 @@
"function-bind": "^1.1.1" "function-bind": "^1.1.1"
} }
}, },
"has-flag": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"dev": true
},
"has-symbols": { "has-symbols": {
"version": "1.0.3", "version": "1.0.3",
"resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
@@ -856,6 +931,16 @@
"integrity": "sha512-H8jvkz1O50L3dMZCsLqiuB2tA7muqbSg1AtGEkN0leAqGjsUzDJir3Zwr02BhqdcITPg3ei3mZ+HjMocAknhhg==", "integrity": "sha512-H8jvkz1O50L3dMZCsLqiuB2tA7muqbSg1AtGEkN0leAqGjsUzDJir3Zwr02BhqdcITPg3ei3mZ+HjMocAknhhg==",
"dev": true "dev": true
}, },
"jsonfile": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
"integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
"dev": true,
"requires": {
"graceful-fs": "^4.1.6",
"universalify": "^2.0.0"
}
},
"jstransformer": { "jstransformer": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "https://registry.npmjs.org/jstransformer/-/jstransformer-1.0.0.tgz", "resolved": "https://registry.npmjs.org/jstransformer/-/jstransformer-1.0.0.tgz",
@@ -928,6 +1013,12 @@
"resolved": "https://registry.npmjs.org/moment/-/moment-2.29.2.tgz", "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.2.tgz",
"integrity": "sha512-UgzG4rvxYpN15jgCmVJwac49h9ly9NurikMWGPdVxm8GZD6XjkKPxDTjQQ43gtGgnV3X0cAyWDdP2Wexoquifg==" "integrity": "sha512-UgzG4rvxYpN15jgCmVJwac49h9ly9NurikMWGPdVxm8GZD6XjkKPxDTjQQ43gtGgnV3X0cAyWDdP2Wexoquifg=="
}, },
"ms": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
"dev": true
},
"nanoid": { "nanoid": {
"version": "3.3.2", "version": "3.3.2",
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.2.tgz", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.2.tgz",
@@ -1221,6 +1312,15 @@
"through": "~2.3.4" "through": "~2.3.4"
} }
}, },
"supports-color": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
"requires": {
"has-flag": "^4.0.0"
}
},
"supports-preserve-symlinks-flag": { "supports-preserve-symlinks-flag": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
@@ -1254,6 +1354,11 @@
"integrity": "sha1-zCAOqyYT9BZtJ/+a/HylbUnfbrQ=", "integrity": "sha1-zCAOqyYT9BZtJ/+a/HylbUnfbrQ=",
"dev": true "dev": true
}, },
"tslib": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz",
"integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg=="
},
"type-fest": { "type-fest": {
"version": "2.12.2", "version": "2.12.2",
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.12.2.tgz", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.12.2.tgz",
@@ -1265,6 +1370,12 @@
"integrity": "sha512-yNIatDa5iaofVozS/uQJEl3JRWLKKGJKh6Yaiv0GLGSuhpFJe7P3SbHZ8/yjAHRQwKRoA6YZqlfjXWmVzoVSMw==", "integrity": "sha512-yNIatDa5iaofVozS/uQJEl3JRWLKKGJKh6Yaiv0GLGSuhpFJe7P3SbHZ8/yjAHRQwKRoA6YZqlfjXWmVzoVSMw==",
"dev": true "dev": true
}, },
"universalify": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
"integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
"dev": true
},
"upath": { "upath": {
"version": "2.0.1", "version": "2.0.1",
"resolved": "https://registry.npmjs.org/upath/-/upath-2.0.1.tgz", "resolved": "https://registry.npmjs.org/upath/-/upath-2.0.1.tgz",
@@ -1284,6 +1395,17 @@
"rollup": "^2.59.0" "rollup": "^2.59.0"
} }
}, },
"vite-plugin-compression": {
"version": "0.5.1",
"resolved": "https://registry.npmjs.org/vite-plugin-compression/-/vite-plugin-compression-0.5.1.tgz",
"integrity": "sha512-5QJKBDc+gNYVqL/skgFAP81Yuzo9R+EAf19d+EtsMF/i8kFUpNi3J/H01QD3Oo8zBQn+NzoCIFkpPLynoOzaJg==",
"dev": true,
"requires": {
"chalk": "^4.1.2",
"debug": "^4.3.3",
"fs-extra": "^10.0.0"
}
},
"void-elements": { "void-elements": {
"version": "3.1.0", "version": "3.1.0",
"resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz", "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz",
@@ -1512,6 +1634,14 @@
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
"dev": true "dev": true
},
"zrender": {
"version": "5.3.1",
"resolved": "https://registry.npmjs.org/zrender/-/zrender-5.3.1.tgz",
"integrity": "sha512-7olqIjy0gWfznKr6vgfnGBk7y4UtdMvdwFmK92vVQsQeDPyzkHW1OlrLEKg6GHz1W5ePf0FeN1q2vkl/HFqhXw==",
"requires": {
"tslib": "2.3.0"
}
} }
} }
} }
+2
View File
@@ -14,6 +14,7 @@
"axios": "^0.26.1", "axios": "^0.26.1",
"clipboard": "^2.0.10", "clipboard": "^2.0.10",
"copy-to-clipboard": "^3.3.1", "copy-to-clipboard": "^3.3.1",
"echarts": "^5.3.2",
"element-plus": "^2.1.7", "element-plus": "^2.1.7",
"js-cookie": "^3.0.1", "js-cookie": "^3.0.1",
"lodash": "^4.17.21", "lodash": "^4.17.21",
@@ -35,6 +36,7 @@
"@vitejs/plugin-vue": "^2.3.0", "@vitejs/plugin-vue": "^2.3.0",
"typescript": "^4.5.4", "typescript": "^4.5.4",
"vite": "^2.9.0", "vite": "^2.9.0",
"vite-plugin-compression": "^0.5.1",
"vue-tsc": "^0.29.8" "vue-tsc": "^0.29.8"
} }
} }
+50 -9
View File
@@ -18,20 +18,19 @@ const get_blog = (params: any) => {
}) })
} }
const get_user_blogs = (params: Object) => { const listAll = () => {
return request({ return request({
url: '/blog', url: '/author/blog/list',
method: 'get', method: 'get',
params: params, headers: {
paramsSerializer: (params) => { 'Content-Type': 'application/json;charsetset=UTF-8'
return Qs.stringify(params, { arrayFormat: 'repeat' }) }
},
}) })
} }
const update_blog_type = (params: Object) => { const updateBtName = (params: Object) => {
return request({ return request({
url: '/blog/update_blog_type', url: '/author/blog/update_blog_type',
method: 'post', method: 'post',
headers: { headers: {
'Content-Type': 'application/json;charsetset=UTF-8' 'Content-Type': 'application/json;charsetset=UTF-8'
@@ -51,5 +50,47 @@ const insert_blog_type = (params: Object) => {
}) })
} }
const getContent = (id: string) => {
return request({
url: '/author/blog/' + id + '/content',
method: 'get',
headers: {
'Content-Type': 'application/json;charsetset=UTF-8'
}
})
}
export { get_blogs, get_blog, get_user_blogs, update_blog_type, insert_blog_type } const newBlog = (params: Object) => {
return request({
url: '/author/blog/createContent',
method: 'post',
headers: {
'Content-Type': 'application/json;charsetset=UTF-8'
},
data: params
})
}
const updateContent = (params: Object) => {
return request({
url: '/author/blog/updateContent',
method: 'post',
headers: {
'Content-Type': 'application/json;charsetset=UTF-8'
},
data: params
})
}
const deleteContent = (params: string) => {
return request({
url: '/author/blog/delete/' + params,
method: 'get',
headers: {
'Content-Type': 'application/json;charsetset=UTF-8'
}
})
}
export { get_blogs, get_blog, listAll, updateBtName, insert_blog_type, getContent, newBlog, updateContent, deleteContent }
+8 -7
View File
@@ -1,14 +1,15 @@
type Blog = { type Blog = {
blog_id: string, bid: string,
blog_type_id: string, btId: string,
blog_type_name: string, btName: string,
blog_title: string, title: string,
blog_prex: string blog_prex: string,
content: string
} }
type BlogType = { type BlogType = {
blog_type_id: string, btId: string,
blog_type_name: string, btName: string,
blog_list: Blog[] blog_list: Blog[]
} }
+26 -38
View File
@@ -16,51 +16,40 @@ import { getToken, getUser } from './utils/auth'
import { User } from './entity/index' import { User } from './entity/index'
const whiteList = ['/login'] const whiteList = ['/login']
let url = window.location.href let url = window.location.href
console.log(url)
if (url != 'http://localhost:3000/') {
// if(url.search("blog=") != -1) {
// let blog = {
// blog_id: url.split("=")[1]
// }
// router.push({
// path: '/feedback',
// query: blog
// })
// }
if (url.search("edit_blog=") != -1) {
let blog = {
blog_id: url.split("=")[1]
}
router.push({
path: '/BlogEditer',
query: blog
})
}
} /**
* ルーター監視
* 1、トーケン取得
* 2、トーケンなし場合はログイン画面に遷移
* 3、トーケンあり場合:
*  既にログイン場合はデフォルト /  に遷移
*  
*/
router.beforeEach((to, from, next) => { router.beforeEach((to, from, next) => {
console.log(from.path, to.path) console.log(from.path, to.path)
const token = getToken() const token = getToken()
if (typeof token === 'string') { if (typeof token === 'string') {
if (to.path === '/login') { switch (to.path) {
if (token) { case '/login':
next('/') next('/')
} break;
} else if (to.path === '/') { case '/':
const user = <User>(JSON.parse(getUser() as string)) const user = <User>(JSON.parse(getUser() as string))
console.log(user) if (url.search("edit_blog") != -1) {
if (user) { next('/BlogEditer')
router.push({ } else {
path: '/home', router.push({
query: user path: '/home',
}) query: user
} })
} else { }
next() break;
default:
next()
} }
} else { } else {
if (whiteList.includes(to.path)) { if (whiteList.includes(to.path)) {
next() next()
@@ -69,7 +58,6 @@ router.beforeEach((to, from, next) => {
} }
} }
}) })
+1 -2
View File
@@ -3,8 +3,7 @@ import { getToken } from '../utils/auth'
const service = axios.create( const service = axios.create(
{ {
baseURL: 'http://localhost:8081', baseURL: import.meta.env.VITE_APP_URL as string,
// baseURL: 'http://49.233.4.79:8081',
timeout: 5000 timeout: 5000
} }
) )
+47 -35
View File
@@ -1,31 +1,29 @@
<template> <template>
<div class="blog_editer"> <div class="blog_editer">
<div class="tab_list"> <div class="tab_list">
<Tab :row_key="item.blog_type_id" :checked="handleCheck(item.blog_type_id)" :tab_text="item.blog_type_name" <Tab :row_key="item.btId" :checked="handleCheck(item.btId)" :tab_text="item.btName" checked_color="" over_color=""
checked_color="" over_color="" leave_color="" @on-click="saveType" leave_color="" @on-click="saveType" @click="onclickTypeTab(item.btId, index)"
@click="onclickTypeTab(item.blog_type_id, index)" v-for="(item, index) in data_type_list"> v-for="(item, index) in blog_type_list">
</Tab> </Tab>
</div> </div>
<div> <div>
<Tab :row_key="item.blog_type_id" :checked="handleCheck(item.blog_type_id)" :tab_text="item.blog_type_name" <Tab :row_key="item.bid" :checked="handleCheck(item.bid)" :tab_text="item.title" checked_color="" over_color=""
checked_color="" over_color="" leave_color="" @on-click="saveBlog" leave_color="" @on-click="saveTitle" @click="onclickBlogTab(item.bid, index)"
@click="onclickBlogTab(item.blog_type_id, index)" v-for="(item, index) in blog_type_list[checkedIndex].blog_list">
v-for="(item, index) in data_type_list[checkedIndex].blog_list">
</Tab> </Tab>
</div> </div>
<div> <div>
<md-editor v-model="text" /> <md-editor v-model="blog_type_list[checkedIndex].blog_list[checkedBlogIndex].content" @save="saveContent" />
</div> </div>
</div> </div>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { reactive, ref } from 'vue'; import { reactive, ref } from 'vue'
import MdEditor from 'md-editor-v3'; import MdEditor from 'md-editor-v3'
import 'md-editor-v3/lib/style.css'; import 'md-editor-v3/lib/style.css'
import { get_user_blogs } from '../../api/blog'
import { Blog, BlogType } from '../../entity/index' import { Blog, BlogType } from '../../entity/index'
import { update_blog_type, insert_blog_type } from '../../api/blog' import { updateBtName, updateContent, insert_blog_type, listAll } from '../../api/blog'
import Tab from '../../components/common/Tab.vue' import Tab from '../../components/common/Tab.vue'
let text = ref<string>("") let text = ref<string>("")
@@ -36,34 +34,35 @@ type Tab = {
let type_tab = reactive<Tab>(<Tab>{ let type_tab = reactive<Tab>(<Tab>{
id: '1' id: '1'
}) })
let blog_tab = reactive<Tab>(<Tab>{ let bid = ref("")
id: '1'
})
const data_type_list = reactive<BlogType[]>([])
let checkedIndex = ref<number>(0) let checkedIndex = ref<number>(0)
let checkedBlogIndex = ref<number>(0)
const blog_type_list = reactive<BlogType[]>([]) const blog_type_list = reactive<BlogType[]>([])
get_user_blogs({}).then(response => { listAll().then(response => {
console.log(response)
response.data.forEach((element: any) => { response.data.forEach((element: any) => {
const blog_type: BlogType = { const blog_type: BlogType = {
blog_type_id: element.blog_type_id, btId: element.btId,
blog_type_name: element.blog_type_id, btName: element.btName,
blog_list: [] blog_list: []
} }
element.blog_list.forEach((item: any) => { element.blog_list.forEach((item: any) => {
const blog: Blog = { const blog: Blog = {
blog_id: item.blog_id, bid: item.bid,
blog_type_id: item.blog_type_id, btId: item.btId,
blog_type_name: item.blog_type_name, btName: item.btName,
blog_title: item.blog_title, title: item.title,
blog_prex: item.blog_prex blog_prex: item.blog_prex,
content: item.content
} }
blog_type.blog_list.push(blog) blog_type.blog_list.push(blog)
}); });
blog_type_list.push(blog_type) blog_type_list.push(blog_type)
}); });
bid.value = blog_type_list[0].blog_list[0].bid
text.value = blog_type_list[0].blog_list[0].content
}).then(() => { }).then(() => {
if (blog_type_list.length == 0) { if (blog_type_list.length == 0) {
const data = { const data = {
@@ -72,8 +71,8 @@ get_user_blogs({}).then(response => {
insert_blog_type(data).then(response => { insert_blog_type(data).then(response => {
if (response.data) { if (response.data) {
blog_type_list.push({ blog_type_list.push({
blog_type_id: response.data.blog_type_id, btId: response.data.btId,
blog_type_name: response.data.blog_type_id, btName: response.data.btNmae,
blog_list: [] blog_list: []
}) })
} }
@@ -85,16 +84,28 @@ const handleCheck = (id: string) => {
} }
const saveType = (params: any) => { const saveType = (params: any) => {
const query = { const query = {
blog_type_id: params.id, btId: params.id,
blog_type_name: params.name btName: params.name
} }
update_blog_type(query).then(response => { updateBtName(query).then(response => {
}) })
} }
const saveBlog = (params: any) => { const saveTitle = (params: any) => {
console.log(params) const query = {
update_blog_type(1).then(response => { bid: params.id,
title: params.name
}
updateContent(query).then(response => {
})
}
const saveContent = () => {
const query = {
bid: bid.value,
content: text.value
}
updateContent(query).then(response => {
}) })
} }
@@ -103,7 +114,8 @@ const onclickTypeTab = (id: string, index: number) => {
type_tab.id = id type_tab.id = id
} }
const onclickBlogTab = (id: string, index: number) => { const onclickBlogTab = (id: string, index: number) => {
blog_tab.id = id bid.value = id
checkedBlogIndex.value = index
} }
</script> </script>
+38 -3
View File
@@ -1,7 +1,12 @@
<template> <template>
<el-button @click="openBlogEditer">++++++</el-button> <el-button @click="openBlogEditer">进入博客小作坊</el-button>
<el-button @click="test">获取博客内容</el-button>
<el-button @click="test1">新增博客</el-button>
<el-button @click="test2">更新博客</el-button>
<el-button @click="test3">削除博客</el-button>
<div class="blog_list" v-for="item in data_list"> <div class="blog_list" v-for="item in data_list">
<h3 style="cursor: pointer;" @click="openBlog">{{ item.blog_title }}</h3> <h3 style="cursor: pointer;" @click="openBlog">{{ item.title }}</h3>
<span style="font-size: 12px;">{{ item.blog_prex }}</span> <span style="font-size: 12px;">{{ item.blog_prex }}</span>
</div> </div>
@@ -10,7 +15,7 @@
<script setup lang="ts"> <script setup lang="ts">
import { reactive, ref } from 'vue'; import { reactive, ref } from 'vue';
import { get_blogs } from '../../api/blog' import { get_blogs, getContent, newBlog, updateContent, deleteContent } from '../../api/blog'
import router from '../../router/index' import router from '../../router/index'
import { Blog, BlogType } from '../../entity/index' import { Blog, BlogType } from '../../entity/index'
@@ -42,6 +47,36 @@ const openBlogEditer = () => {
}); });
window.open(href, '_blank'); window.open(href, '_blank');
} }
const test = () => {
getContent('123456').then(response => {
console.log(response)
})
}
const test1 = () => {
const params = {
blog_type_id: "2808000",
title: "dddddddd"
}
newBlog(params).then(response => {
console.log(response)
})
}
const test2 = () => {
const params = {
bid: "22222",
title: "22222222222",
content: "dddddddddddddddddddddddddddd"
}
updateContent(params).then(response => {
console.log(response)
})
}
const test3 = () => {
deleteContent('22222').then(response => {
console.log(response)
})
}
</script> </script>
<style> <style>
+4 -5
View File
@@ -1,16 +1,15 @@
import { defineConfig, loadEnv } from 'vite' import { defineConfig, loadEnv } from 'vite'
import vue from '@vitejs/plugin-vue' import vue from '@vitejs/plugin-vue'
import viteCompression from 'vite-plugin-compression';
// https://vitejs.dev/config/ // https://vitejs.cn/guide/env-and-mode.html#env-files
// export default defineConfig({
// plugins: [vue()]
// })
export default defineConfig(({ mode }) => { export default defineConfig(({ mode }) => {
const env = loadEnv(mode, __dirname) const env = loadEnv(mode, __dirname)
return { return {
plugins: [ plugins: [
vue(), vue(),
// this is a gzip plugin to generate the .js.gz file
viteCompression()
], ],
base: env.VITE_RES_URL base: env.VITE_RES_URL
} }