修复typescript类型错误

This commit is contained in:
2024-09-06 16:10:46 +08:00
parent 01a049ef9e
commit 2248b60e2d
10 changed files with 110 additions and 69 deletions

View File

@@ -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);

View File

@@ -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(),

View File

@@ -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
}) })

View File

@@ -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>

View File

@@ -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();

View File

@@ -1,5 +1,9 @@
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";
@@ -20,4 +24,5 @@ axios.interceptors.request.use((request) => {
return request; return request;
}) })
export type { BaseResponseData };
export { axios as request }; export { axios as request };

View File

@@ -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;

View File

@@ -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;

View File

@@ -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)

View File

@@ -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)