修复typescript类型错误
This commit is contained in:
@@ -1,12 +1,12 @@
|
|||||||
<script setup>
|
<script setup lang='ts'>
|
||||||
import { request } from '@/lib/request';
|
import { request, type BaseResponseData } from '@/lib/request';
|
||||||
import { computed, onMounted, reactive, ref, watch } from 'vue';
|
import { computed, onMounted, reactive, ref, watch } from 'vue';
|
||||||
import { useRoute } from 'vue-router';
|
import { useRoute } from 'vue-router';
|
||||||
import { timestampToString } from '@/lib/timestampToString';
|
import { timestampToString } from '@/lib/timestampToString';
|
||||||
const model = defineModel();
|
const model = defineModel();
|
||||||
const route = useRoute()
|
const route = useRoute()
|
||||||
const bloguuid = route.params.uuid;
|
const bloguuid = route.params.uuid;
|
||||||
const blogCommentList = reactive([]);
|
const blogCommentList: any[] = reactive([]);
|
||||||
const loadStatus = ref(0)// 0加载中 1已加载全部评论 -1加载失败
|
const loadStatus = ref(0)// 0加载中 1已加载全部评论 -1加载失败
|
||||||
onMounted(async () => {
|
onMounted(async () => {
|
||||||
await loadComment();
|
await loadComment();
|
||||||
@@ -25,7 +25,7 @@ const getStatusText = computed(() => {
|
|||||||
|
|
||||||
const loadComment = async () => {
|
const loadComment = async () => {
|
||||||
try {
|
try {
|
||||||
let commentRes = await request.get(`/blogComment?bloguuid=${bloguuid}`);
|
let commentRes:BaseResponseData = await request.get(`/blogComment?bloguuid=${bloguuid}`);
|
||||||
if (commentRes.code == 0) {
|
if (commentRes.code == 0) {
|
||||||
blogCommentList.splice(0, blogCommentList.length);
|
blogCommentList.splice(0, blogCommentList.length);
|
||||||
blogCommentList.push(...commentRes.data);
|
blogCommentList.push(...commentRes.data);
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
<script setup>
|
<script setup lang='ts'>
|
||||||
import { Star, Edit, StarFilled } from '@element-plus/icons-vue'
|
import { Star, Edit, StarFilled } from '@element-plus/icons-vue'
|
||||||
import { ElMessage } from 'element-plus';
|
import { ElMessage, ElMessageBox } from 'element-plus';
|
||||||
import { ref, onMounted, onUnmounted } from 'vue';
|
import { ref, onMounted, onUnmounted } from 'vue';
|
||||||
import { useRoute } from 'vue-router';
|
import { useRoute } from 'vue-router';
|
||||||
import { request } from '@/lib/request';
|
import { request, type BaseResponseData } from '@/lib/request';
|
||||||
import RotationVerification from '../Common/RotationVerification.vue';
|
import RotationVerification from '../Common/RotationVerification.vue';
|
||||||
const route = useRoute()
|
const route = useRoute()
|
||||||
const bloguuid = route.params.uuid;
|
const bloguuid = route.params.uuid;
|
||||||
@@ -28,7 +28,7 @@ const likeBlog = async () => {
|
|||||||
return ElMessage.success('已经点过赞啦~')
|
return ElMessage.success('已经点过赞啦~')
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
let likeRes = await request.post('/blogLike?bloguuid=' + bloguuid)
|
let likeRes: BaseResponseData = await request.post('/blogLike?bloguuid=' + bloguuid)
|
||||||
if (likeRes.code == 0) {
|
if (likeRes.code == 0) {
|
||||||
isLiked.value = true;
|
isLiked.value = true;
|
||||||
return ElMessage.success('点赞成功~')
|
return ElMessage.success('点赞成功~')
|
||||||
@@ -65,7 +65,7 @@ const submitComment = async () => {
|
|||||||
isCaptchaViewShow.value = false;
|
isCaptchaViewShow.value = false;
|
||||||
ElMessage.info('正在提交,请稍后')
|
ElMessage.info('正在提交,请稍后')
|
||||||
try {
|
try {
|
||||||
let commentRes = await request.post('blogComment', {
|
let commentRes: BaseResponseData = await request.post('blogComment', {
|
||||||
session: localStorage.getItem('captcha-session'),
|
session: localStorage.getItem('captcha-session'),
|
||||||
bloguuid: bloguuid,
|
bloguuid: bloguuid,
|
||||||
content: inputComment.value.trim(),
|
content: inputComment.value.trim(),
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
<script setup>
|
<script setup lang='ts'>
|
||||||
/**
|
/**
|
||||||
* 旋转图像验证码组件
|
* 旋转图像验证码组件
|
||||||
* @event success 验证成功
|
* @event success 验证成功
|
||||||
* @event fail 验证失败
|
* @event fail 验证失败
|
||||||
* @requires ServerSDK
|
* @requires ServerSDK
|
||||||
* @since 1.0.1
|
* @since 1.0.2
|
||||||
*/
|
*/
|
||||||
import { request } from '@/lib/request';
|
import { request, type BaseResponseData } from '@/lib/request';
|
||||||
import { onBeforeMount, onMounted, ref } from 'vue';
|
import { onBeforeMount, onMounted, ref } from 'vue';
|
||||||
let imageBase64 = ref('');
|
let imageBase64 = ref('');
|
||||||
const emit = defineEmits(['fail', 'success'])
|
const emit = defineEmits(['fail', 'success'])
|
||||||
@@ -14,7 +14,7 @@ let onVerifying = ref(false);
|
|||||||
let onVerifyFail = ref(false);
|
let onVerifyFail = ref(false);
|
||||||
onBeforeMount(async () => {
|
onBeforeMount(async () => {
|
||||||
try {
|
try {
|
||||||
let res = await request.get('captcha')
|
let res: BaseResponseData = await request.get('captcha')
|
||||||
localStorage.setItem('captcha-session', res.data.session)
|
localStorage.setItem('captcha-session', res.data.session)
|
||||||
imageBase64.value = res.data.imgPreStr + res.data.img;
|
imageBase64.value = res.data.imgPreStr + res.data.img;
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
@@ -27,8 +27,11 @@ onMounted(() => {
|
|||||||
let imageEle = document.getElementById('RV-image');
|
let imageEle = document.getElementById('RV-image');
|
||||||
let isDragging = false;// 正在移动标志位
|
let isDragging = false;// 正在移动标志位
|
||||||
let silderMoveable = true;// 是否可以开始移动标识位
|
let silderMoveable = true;// 是否可以开始移动标识位
|
||||||
let startX;
|
let startX: number;
|
||||||
let deltaX;// 拖动距离
|
let deltaX: number;// 拖动距离
|
||||||
|
if(!slider || !imageEle){
|
||||||
|
throw new Error('element is null')
|
||||||
|
}
|
||||||
slider.addEventListener('mousedown', function (e) {
|
slider.addEventListener('mousedown', function (e) {
|
||||||
if (silderMoveable) {
|
if (silderMoveable) {
|
||||||
isDragging = true;
|
isDragging = true;
|
||||||
@@ -83,7 +86,7 @@ onMounted(() => {
|
|||||||
} else {
|
} else {
|
||||||
try {
|
try {
|
||||||
onVerifying.value = true;
|
onVerifying.value = true;
|
||||||
let res = await request.post('checkCaptcha', {
|
let res: BaseResponseData = await request.post('checkCaptcha', {
|
||||||
session: localStorage.getItem('captcha-session'),
|
session: localStorage.getItem('captcha-session'),
|
||||||
rotateDeg: deltaX * 9 / 5
|
rotateDeg: deltaX * 9 / 5
|
||||||
})
|
})
|
||||||
@@ -129,7 +132,7 @@ onMounted(() => {
|
|||||||
} else {
|
} else {
|
||||||
try {
|
try {
|
||||||
onVerifying.value = true;
|
onVerifying.value = true;
|
||||||
let res = await request.post('checkCaptcha', {
|
let res: BaseResponseData = await request.post('checkCaptcha', {
|
||||||
session: localStorage.getItem('captcha-session'),
|
session: localStorage.getItem('captcha-session'),
|
||||||
rotateDeg: deltaX * 9 / 5
|
rotateDeg: deltaX * 9 / 5
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -1,14 +1,27 @@
|
|||||||
<script setup>
|
<script setup lang='ts'>
|
||||||
import { onMounted, reactive, ref } from 'vue';
|
import { onMounted, reactive, ref, type Ref } from 'vue';
|
||||||
import { request } from '../../lib/request'
|
import { request, type BaseResponseData } from '../../lib/request'
|
||||||
import { ElMessage } from 'element-plus';
|
import { ElMessage } from 'element-plus';
|
||||||
import { timestampToString } from '@/lib/timestampToString';
|
import { timestampToString } from '@/lib/timestampToString';
|
||||||
|
const tableData: Ref<any[]> = ref([])
|
||||||
|
const dialogEditFormVisible = ref(false);
|
||||||
|
type BlogContentData = {
|
||||||
|
id: string,
|
||||||
|
uuid: string,
|
||||||
|
title: string,
|
||||||
|
description: string,
|
||||||
|
publish_time: Date,
|
||||||
|
src: string,
|
||||||
|
access_level: number,
|
||||||
|
visit_count: number,
|
||||||
|
like_count: number
|
||||||
|
}
|
||||||
onMounted(async () => {
|
onMounted(async () => {
|
||||||
await loadTableData();
|
await loadTableData();
|
||||||
})
|
})
|
||||||
const loadTableData = async () => {
|
const loadTableData = async () => {
|
||||||
try {
|
try {
|
||||||
let resourcesRes = await request.get('/console/blogs')
|
let resourcesRes: BaseResponseData = await request.get('/console/blogs')
|
||||||
if (resourcesRes.code == 0) {
|
if (resourcesRes.code == 0) {
|
||||||
tableData.value = [];
|
tableData.value = [];
|
||||||
tableData.value.push(...resourcesRes.data);
|
tableData.value.push(...resourcesRes.data);
|
||||||
@@ -19,20 +32,18 @@ const loadTableData = async () => {
|
|||||||
ElMessage.error(`加载失败 ${error}`)
|
ElMessage.error(`加载失败 ${error}`)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
const tableData = ref([])
|
const editForm: BlogContentData = reactive({
|
||||||
const dialogEditFormVisible = ref(false);
|
|
||||||
const editForm = reactive({
|
|
||||||
id: '',
|
id: '',
|
||||||
uuid: '',
|
uuid: '',
|
||||||
title: '',
|
title: '',
|
||||||
description: '',
|
description: '',
|
||||||
publish_time: '',
|
publish_time: new Date(),
|
||||||
src: '',
|
src: '',
|
||||||
access_level: '',
|
access_level: 0,
|
||||||
visit_count: '',
|
visit_count: 0,
|
||||||
like_count: ''
|
like_count: 0
|
||||||
})
|
})
|
||||||
const editHandle = (data) => {
|
const editHandle = (data: any) => {
|
||||||
editForm.id = data.id;
|
editForm.id = data.id;
|
||||||
editForm.uuid = data.uuid;
|
editForm.uuid = data.uuid;
|
||||||
editForm.title = data.title;
|
editForm.title = data.title;
|
||||||
@@ -48,7 +59,7 @@ const addHandle = () => {
|
|||||||
editForm.uuid = '';
|
editForm.uuid = '';
|
||||||
editForm.title = '';
|
editForm.title = '';
|
||||||
editForm.description = '';
|
editForm.description = '';
|
||||||
editForm.publish_time = '';
|
editForm.publish_time = new Date();
|
||||||
editForm.src = '';
|
editForm.src = '';
|
||||||
editForm.access_level = 10;
|
editForm.access_level = 10;
|
||||||
editForm.visit_count = 0;
|
editForm.visit_count = 0;
|
||||||
@@ -61,7 +72,7 @@ const saveHandle = async () => {
|
|||||||
return ElMessage.warning('请先完成表单')
|
return ElMessage.warning('请先完成表单')
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
let res = await request.post('/console/saveBlog', {
|
let res: BaseResponseData = await request.post('/console/saveBlog', {
|
||||||
id: editForm.id,
|
id: editForm.id,
|
||||||
uuid: editForm.uuid,
|
uuid: editForm.uuid,
|
||||||
title: editForm.title,
|
title: editForm.title,
|
||||||
@@ -81,10 +92,10 @@ const saveHandle = async () => {
|
|||||||
return ElMessage.error(`保存失败 ${error}`);
|
return ElMessage.error(`保存失败 ${error}`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
const delHandle = async (data) => {
|
const delHandle = async (data: { id: string, [key: string]: any }) => {
|
||||||
let { id } = data;
|
let { id } = data;
|
||||||
try {
|
try {
|
||||||
let res = await request.delete('/console/blog?id=' + id);
|
let res: BaseResponseData = await request.delete('/console/blog?id=' + id);
|
||||||
if (res.code == 0) {
|
if (res.code == 0) {
|
||||||
ElMessage.success('删除成功');
|
ElMessage.success('删除成功');
|
||||||
loadTableData();
|
loadTableData();
|
||||||
@@ -95,7 +106,7 @@ const delHandle = async (data) => {
|
|||||||
return ElMessage.error(`删除失败 ${error}`);
|
return ElMessage.error(`删除失败 ${error}`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
const formatTime = (row, column, cellValue, index) => {
|
const formatTime = (row: any, _column: any, _cellValue: any, _index: any) => {
|
||||||
return timestampToString(row.publish_time);
|
return timestampToString(row.publish_time);
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
@@ -146,10 +157,10 @@ const formatTime = (row, column, cellValue, index) => {
|
|||||||
<el-text style="margin-left: 20px;" size="small">默认可访问大于6的项</el-text>
|
<el-text style="margin-left: 20px;" size="small">默认可访问大于6的项</el-text>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="访问量">
|
<el-form-item label="访问量">
|
||||||
<el-input-number v-model="editForm.visit_count" :min="0" disabled/>
|
<el-input-number v-model="editForm.visit_count" :min="0" disabled />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="点赞量">
|
<el-form-item label="点赞量">
|
||||||
<el-input-number v-model="editForm.like_count" :min="0" disabled/>
|
<el-input-number v-model="editForm.like_count" :min="0" disabled />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
<template #footer>
|
<template #footer>
|
||||||
|
|||||||
@@ -1,13 +1,25 @@
|
|||||||
<script setup>
|
<script setup lang='ts'>
|
||||||
import { onMounted, reactive, ref } from 'vue';
|
import { onMounted, reactive, ref, type Ref } from 'vue';
|
||||||
import { request } from '../../lib/request'
|
import { request, type BaseResponseData } from '../../lib/request'
|
||||||
import { ElMessage } from 'element-plus';
|
import { ElMessage } from 'element-plus';
|
||||||
|
type ResourceData = {
|
||||||
|
id: string,
|
||||||
|
type: string,
|
||||||
|
recommand: number,
|
||||||
|
title: string,
|
||||||
|
describe: string,
|
||||||
|
icon_src: string,
|
||||||
|
addition: string,
|
||||||
|
src: string,
|
||||||
|
}
|
||||||
onMounted(async () => {
|
onMounted(async () => {
|
||||||
await loadTableData();
|
await loadTableData();
|
||||||
})
|
})
|
||||||
|
const tableData: Ref<any[]> = ref([])
|
||||||
|
const dialogEditFormVisible = ref(false);
|
||||||
const loadTableData = async () => {
|
const loadTableData = async () => {
|
||||||
try {
|
try {
|
||||||
let resourcesRes = await request.get('/console/resources')
|
let resourcesRes: BaseResponseData = await request.get('/console/resources')
|
||||||
if (resourcesRes.code == 0) {
|
if (resourcesRes.code == 0) {
|
||||||
tableData.value = [];
|
tableData.value = [];
|
||||||
tableData.value.push(...resourcesRes.data);
|
tableData.value.push(...resourcesRes.data);
|
||||||
@@ -18,9 +30,7 @@ const loadTableData = async () => {
|
|||||||
ElMessage.error(`加载失败 ${error}`)
|
ElMessage.error(`加载失败 ${error}`)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
const tableData = ref([])
|
const editForm: ResourceData = reactive({
|
||||||
const dialogEditFormVisible = ref(false);
|
|
||||||
const editForm = reactive({
|
|
||||||
id: '',
|
id: '',
|
||||||
type: '',
|
type: '',
|
||||||
recommand: 1,
|
recommand: 1,
|
||||||
@@ -30,7 +40,7 @@ const editForm = reactive({
|
|||||||
addition: '',
|
addition: '',
|
||||||
src: '',
|
src: '',
|
||||||
})
|
})
|
||||||
const editHandle = (data) => {
|
const editHandle = (data: ResourceData) => {
|
||||||
editForm.id = data.id;
|
editForm.id = data.id;
|
||||||
editForm.type = data.type;
|
editForm.type = data.type;
|
||||||
editForm.recommand = +data.recommand;
|
editForm.recommand = +data.recommand;
|
||||||
@@ -58,7 +68,7 @@ const saveHandle = async () => {
|
|||||||
return ElMessage.warning('请先完成表单')
|
return ElMessage.warning('请先完成表单')
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
let res = await request.post('/console/saveResource', {
|
let res: BaseResponseData = await request.post('/console/saveResource', {
|
||||||
id: editForm.id,
|
id: editForm.id,
|
||||||
type: editForm.type,
|
type: editForm.type,
|
||||||
recommand: editForm.recommand,
|
recommand: editForm.recommand,
|
||||||
@@ -79,10 +89,10 @@ const saveHandle = async () => {
|
|||||||
return ElMessage.error(`保存失败 ${error}`);
|
return ElMessage.error(`保存失败 ${error}`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
const delHandle = async (data) => {
|
const delHandle = async (data: { id: string, [key: string]: any }) => {
|
||||||
let { id } = data;
|
let { id } = data;
|
||||||
try {
|
try {
|
||||||
let res = await request.delete('/console/resource?id=' + id);
|
let res: BaseResponseData = await request.delete('/console/resource?id=' + id);
|
||||||
if (res.code == 0) {
|
if (res.code == 0) {
|
||||||
ElMessage.success('删除成功');
|
ElMessage.success('删除成功');
|
||||||
loadTableData();
|
loadTableData();
|
||||||
|
|||||||
@@ -1,10 +1,14 @@
|
|||||||
import axios from "axios";
|
import axios from "axios";
|
||||||
|
type BaseResponseData = {
|
||||||
|
code: number,
|
||||||
|
message: string,
|
||||||
|
data: any
|
||||||
|
};
|
||||||
// axios.defaults.baseURL = "http://localhost:23500";
|
// axios.defaults.baseURL = "http://localhost:23500";
|
||||||
axios.defaults.baseURL = "https://tonesc.cn/apis";
|
axios.defaults.baseURL = "https://tonesc.cn/apis";
|
||||||
|
|
||||||
axios.interceptors.response.use((response) => {
|
axios.interceptors.response.use((response) => {
|
||||||
if(response.data && response.data.code == -5){
|
if (response.data && response.data.code == -5) {
|
||||||
// auth error
|
// auth error
|
||||||
localStorage.removeItem('jwtToken');
|
localStorage.removeItem('jwtToken');
|
||||||
window.location.reload()
|
window.location.reload()
|
||||||
@@ -20,4 +24,5 @@ axios.interceptors.request.use((request) => {
|
|||||||
return request;
|
return request;
|
||||||
})
|
})
|
||||||
|
|
||||||
|
export type { BaseResponseData };
|
||||||
export { axios as request };
|
export { axios as request };
|
||||||
@@ -1,14 +1,14 @@
|
|||||||
<script setup>
|
<script setup lang='ts'>
|
||||||
import { request } from '@/lib/request';
|
import { request, type BaseResponseData } from '@/lib/request';
|
||||||
import { onMounted, reactive, ref } from 'vue';
|
import { onMounted, reactive, ref } from 'vue';
|
||||||
import { timestampToString } from '../lib/timestampToString'
|
import { timestampToString } from '../lib/timestampToString'
|
||||||
import { formateTimes } from '@/lib/formateTimes';
|
import { formateTimes } from '@/lib/formateTimes';
|
||||||
const loadStatus = ref(0);
|
const loadStatus = ref(0);
|
||||||
const blogList = reactive([]);
|
const blogList: any[] = reactive([]);
|
||||||
|
|
||||||
onMounted(async () => {
|
onMounted(async () => {
|
||||||
try {
|
try {
|
||||||
const blogListRes = await request.get('/blogList');
|
const blogListRes:BaseResponseData = await request.get('/blogList');
|
||||||
if (blogListRes.code == 0) {
|
if (blogListRes.code == 0) {
|
||||||
blogList.push(...blogListRes.data);
|
blogList.push(...blogListRes.data);
|
||||||
loadStatus.value = 1;
|
loadStatus.value = 1;
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<script setup>
|
<script setup lang='ts'>
|
||||||
import { request } from '@/lib/request';
|
import { request, type BaseResponseData } from '@/lib/request';
|
||||||
import { onMounted, onUnmounted, ref } from 'vue';
|
import { onMounted, onUnmounted, ref, type Ref } from 'vue';
|
||||||
import { timestampToString } from '../lib/timestampToString'
|
import { timestampToString } from '../lib/timestampToString'
|
||||||
import { useRoute } from 'vue-router'
|
import { useRoute } from 'vue-router'
|
||||||
import { Marked } from 'marked';
|
import { Marked } from 'marked';
|
||||||
@@ -9,11 +9,23 @@ import hljs from 'highlight.js';
|
|||||||
import "highlight.js/styles/xcode.css";
|
import "highlight.js/styles/xcode.css";
|
||||||
import BlogContentToolBar from '@/components/Blog/BlogContentToolBar.vue';
|
import BlogContentToolBar from '@/components/Blog/BlogContentToolBar.vue';
|
||||||
import BlogComment from '@/components/Blog/BlogComment.vue';
|
import BlogComment from '@/components/Blog/BlogComment.vue';
|
||||||
|
type BlogInfo = {
|
||||||
|
visit_count: number,
|
||||||
|
title: string,
|
||||||
|
publish_time: string,
|
||||||
|
like_count: number,
|
||||||
|
description: string
|
||||||
|
}
|
||||||
const loadStatus = ref(0);// 0加载中 -1加载失败 -2文章不存在或不可见 1加载成功
|
const loadStatus = ref(0);// 0加载中 -1加载失败 -2文章不存在或不可见 1加载成功
|
||||||
const route = useRoute();
|
const route = useRoute();
|
||||||
const blogContent = ref('');
|
const blogContent = ref('');
|
||||||
const blogInfo = ref({});
|
const blogInfo: Ref<BlogInfo> = ref({
|
||||||
|
visit_count: 0,
|
||||||
|
title: '',
|
||||||
|
publish_time: '',
|
||||||
|
like_count: 0,
|
||||||
|
description: ''
|
||||||
|
});
|
||||||
const blogCommentReload = ref(false);
|
const blogCommentReload = ref(false);
|
||||||
|
|
||||||
const marked = new Marked(
|
const marked = new Marked(
|
||||||
@@ -32,10 +44,10 @@ onMounted(async () => {
|
|||||||
return loadStatus.value = -1;
|
return loadStatus.value = -1;
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
let blogContentRes = await request.get(`/blogContent?bloguuid=${bloguuid}`);
|
let blogContentRes: BaseResponseData = await request.get(`/blogContent?bloguuid=${bloguuid}`);
|
||||||
if (blogContentRes.code == 0) {
|
if (blogContentRes.code == 0) {
|
||||||
try {
|
try {
|
||||||
blogContent.value = marked.parse(decodeURIComponent(escape(atob(blogContentRes.data.data))))
|
blogContent.value = await marked.parse(decodeURIComponent(escape(atob(blogContentRes.data.data))))
|
||||||
blogInfo.value = blogContentRes.data.info;
|
blogInfo.value = blogContentRes.data.info;
|
||||||
loadStatus.value = 1;
|
loadStatus.value = 1;
|
||||||
|
|
||||||
@@ -55,7 +67,7 @@ onMounted(async () => {
|
|||||||
loadStatus.value = -1;
|
loadStatus.value = -1;
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
onUnmounted(()=>{
|
onUnmounted(() => {
|
||||||
document.title = '特恩(TONE)';
|
document.title = '特恩(TONE)';
|
||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
@@ -73,9 +85,9 @@ onUnmounted(()=>{
|
|||||||
<div v-html="blogContent" id="blogContentContainer"></div>
|
<div v-html="blogContent" id="blogContentContainer"></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<BlogComment v-if="loadStatus == 1" v-model="blogCommentReload"/>
|
<BlogComment v-if="loadStatus == 1" v-model="blogCommentReload" />
|
||||||
</div>
|
</div>
|
||||||
<BlogContentToolBar @comment-success="blogCommentReload = true;"/>
|
<BlogContentToolBar @comment-success="blogCommentReload = true;" />
|
||||||
</template>
|
</template>
|
||||||
<style scoped>
|
<style scoped>
|
||||||
.bcc {
|
.bcc {
|
||||||
@@ -125,12 +137,12 @@ onUnmounted(()=>{
|
|||||||
color: #888;
|
color: #888;
|
||||||
}
|
}
|
||||||
|
|
||||||
#blogContentContainer pre{
|
#blogContentContainer pre {
|
||||||
border-radius: 5px;
|
border-radius: 5px;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
}
|
}
|
||||||
|
|
||||||
#blogContentContainer pre code{
|
#blogContentContainer pre code {
|
||||||
overflow-x: scroll;
|
overflow-x: scroll;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { request } from '@/lib/request';
|
import { request, type BaseResponseData } from '@/lib/request';
|
||||||
import Agreement from '@/components/Common/Agreement.vue';
|
import Agreement from '@/components/Common/Agreement.vue';
|
||||||
import { ref, onMounted, reactive } from 'vue';
|
import { ref, onMounted, reactive } from 'vue';
|
||||||
let showAgreement = ref(false);
|
let showAgreement = ref(false);
|
||||||
@@ -8,7 +8,7 @@ let ResourceDatas: any[] = reactive([])
|
|||||||
onMounted(async () => {
|
onMounted(async () => {
|
||||||
// 用于获取数据的函数
|
// 用于获取数据的函数
|
||||||
try {
|
try {
|
||||||
let res: any = await request.get('/resourceList?type=download');
|
let res: BaseResponseData = await request.get('/resourceList?type=download');
|
||||||
if (res && res.code == 0) {
|
if (res && res.code == 0) {
|
||||||
loadStatus.value = 1;
|
loadStatus.value = 1;
|
||||||
ResourceDatas.push(...res.data)
|
ResourceDatas.push(...res.data)
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { request } from '@/lib/request';
|
import { request, type BaseResponseData } from '@/lib/request';
|
||||||
import Agreement from '@/components/Common/Agreement.vue';
|
import Agreement from '@/components/Common/Agreement.vue';
|
||||||
import { ref, onMounted, reactive } from 'vue';
|
import { ref, onMounted, reactive } from 'vue';
|
||||||
let showAgreement = ref(false);
|
let showAgreement = ref(false);
|
||||||
@@ -8,7 +8,7 @@ let ResourceDatas: any[] = reactive([])
|
|||||||
onMounted(async () => {
|
onMounted(async () => {
|
||||||
// 用于获取数据的函数
|
// 用于获取数据的函数
|
||||||
try {
|
try {
|
||||||
let res: any = await request.get('/resourceList?type=resource');
|
let res: BaseResponseData = await request.get('/resourceList?type=resource');
|
||||||
if (res && res.code == 0) {
|
if (res && res.code == 0) {
|
||||||
loadStatus.value = 1;
|
loadStatus.value = 1;
|
||||||
ResourceDatas.push(...res.data)
|
ResourceDatas.push(...res.data)
|
||||||
|
|||||||
Reference in New Issue
Block a user