import { defineStore, storeToRefs } from 'pinia'; import http from './http'; import { ref, watch } from 'vue'; import { Response } from '@/types'; // import { RouteOption } from '@/router/interface'; // import { addRoutes, removeRoute } from '@/router/dynamicRoutes'; // import { useSettingStore } from './setting'; // import { RouteRecordRaw, RouteMeta } from 'vue-router'; // import { useAuthStore } from '@/plugins'; // import router from '@/router'; // export interface MenuProps { // id?: number; // name: string; // path: string; // title?: string; // icon?: string; // badge?: number | string; // target?: '_self' | '_blank'; // link?: string; // component: string; // renderMenu?: boolean; // permission?: string; // parent?: string; // children?: MenuProps[]; // cacheable?: boolean; // view?: string; // } export const useApiStore = defineStore('coreapi', () => { //检查是否已经初始化过了 async function apiCheckInitStatus() { return { code: 0 } // const initStatus = localStorage.getItem('ddns-init'); // if (initStatus && initStatus === '1') { // return { code: 0 } // } else { // return http // .request>('/api/init/Check', 'GET') // .then((res) => { // // console.log(res) // if (res.data.code === 0) { // // localStorage.setItem('ddns-init', '1') // } // return res.data; // }) // .finally(() => { // }); // } } //初始化系统配置 async function apiInit(request: object) { console.log(request) return http .request>('/api/init/Init', 'post_json', request) .then((res) => { // console.log(res) return res.data; }) .finally(() => { }); } //获取配置 async function apiGetConfig() { return http .request>('/api/config/GetConfig', 'GET') .then((res) => { console.log(res) return res.data; }) .finally(() => { }); } //修改配置 async function apiUpdateConfig(request: object) { return http .request>('/api/config/UpdateConfig', 'post_json', request) .then((res) => { console.log(res) return res.data; }) .finally(() => { }); } //后台日志 async function apiGetLogs(param: string) { return http.request>('/api/logs/GetLog?' + param, 'get').then(r => { // console.log(r) return r.data; }).finally(() => { }); } //用户信息-头像 async function apiUserInfo() { return http.request>('/api/auth/GetUserAvatar', 'get').then(r => { return r.data; }).finally(() => { }); } //密码修改 async function apiChangePwd(param: object) { return http.request>('/api/auth/UpdatePwd', 'post_json', param).then(r => { return r.data; }).finally(() => { }); } //StartJobNow async function StartJobNow() { return http.request>('/api/config/ExecuteJobNow', 'get').then(r => { return r.data; }).finally(() => { }); } async function VideoStatics() { return http.request>('/api/video/statics', 'get').then(r => { return r.data; }).finally(() => { }); } //视频查询 async function VideoPageList(param: object) { return http.request>('/api/video/paged', 'post_json', param).then(r => { return r.data; }).finally(() => { }); } // 清理数据库中文件不存在的视频记录 async function VideoCleanup() { return http.request>('/api/video/cleanup', 'post_json').then(r => { return r.data; }).finally(() => { }); } // 获取所有视频类型列表 async function VideoCategories() { return http.request>('/api/video/categories', 'get').then(r => { console.log('VideoCategories 原始响应:', r); // 响应拦截器已经处理了 code === 0 的情况,直接返回 data // 如果 r 本身就是 Response 对象,返回 r.data // 如果 r 已经是 data(拦截器处理后的结果),直接返回 if (r && typeof r === 'object' && 'code' in r && 'data' in r) { return r.data; } return r; }).catch(err => { console.error('VideoCategories API 错误:', err); throw err; }).finally(() => { }); } //cookies async function CookiePageList(param: object) { return http.request>('/api/config/paged', 'post_json', param).then(r => { return r.data; }).finally(() => { }); } async function UpdateConfig(param: object) { return http.request>('/api/config/update', 'post_json', param).then(r => { return r.data; }).finally(() => { }); } async function deleteCookie(id: string) { return http.request>('/api/config/delete?id=' + id, 'get').then(r => { return r.data; }).finally(() => { }); } // 删除指定作者的所有视频数据 async function DeleteAuthorVideos(authorName: string) { return http.request>('/api/video/delete-author', 'post_json', { authorName }).then(r => { return r.data; }).finally(() => { }); } // 获取抖音扫码登录二维码 async function QrCodeGet() { return http.request>('/api/config/qrcode', 'get').then(r => { return r.data; }); } // 轮询扫码状态 async function QrCodeStatus(token: string) { return http.request>('/api/config/qrstatus?token=' + token, 'get').then(r => { return r.data; }); } // 扫码成功后绑定到账号 async function QrCodeBind(token: string, id: string) { return http.request>(`/api/config/qrbind?token=${token}&id=${id}`, 'post_json').then(r => { return r.data; }); } return { deleteCookie, UpdateConfig, apiCheckInitStatus, apiInit, apiGetConfig, apiUpdateConfig, apiGetLogs, apiUserInfo, apiChangePwd, StartJobNow, VideoStatics, VideoPageList, VideoCategories, VideoCleanup, CookiePageList, DeleteAuthorVideos, QrCodeGet, QrCodeStatus, QrCodeBind }; });