diff --git a/src/api/base/model/uploadModel.ts b/src/api/base/model/uploadModel.ts index 4d1698f..b39272a 100644 --- a/src/api/base/model/uploadModel.ts +++ b/src/api/base/model/uploadModel.ts @@ -3,3 +3,9 @@ export interface UploadApiResult { code: number url: string } + +export interface UploadFullApiResult { + msg: string + code: number + data: T +} diff --git a/src/api/base/upload.ts b/src/api/base/upload.ts index 9fdb525..dfe1092 100644 --- a/src/api/base/upload.ts +++ b/src/api/base/upload.ts @@ -1,10 +1,10 @@ import type { AxiosProgressEvent } from 'axios' -import type { UploadApiResult } from './model/uploadModel' +import type { UploadApiResult, UploadFullApiResult } from './model/uploadModel' import { defHttp } from '@/utils/http/axios' -import type { UploadFileParams } from '@/types/axios' +import type { FileDO, UploadFileParams } from '@/types/axios' import { useGlobSetting } from '@/hooks/setting' -const { uploadUrl = '' } = useGlobSetting() +const { uploadUrl = '', uploadUrlFull } = useGlobSetting() /** * @description: Upload interface @@ -18,3 +18,12 @@ export function uploadApi(params: UploadFileParams, onUploadProgress: (progressE params, ) } + +export function uploadOneFile(params: UploadFileParams) { + return defHttp.uploadFile>( + { + url: uploadUrlFull, + }, + params, + ) +} diff --git a/src/components/IFrame/src/IFrame.vue b/src/components/IFrame/src/IFrame.vue index 48fb240..16f64a5 100644 --- a/src/components/IFrame/src/IFrame.vue +++ b/src/components/IFrame/src/IFrame.vue @@ -8,6 +8,7 @@ const props = defineProps({ type: [String, Number], }, }) + const loading = ref(true) const height = ref('') const frameRef = ref(null) @@ -25,22 +26,8 @@ onMounted(() => { }, 300) }) -function sendMessageToIframe(message) { - if (frameRef.value && frameRef.value.contentWindow) - frameRef.value.contentWindow.postMessage(message, '*') -} - defineExpose({ - sendMessageToIframe, -}) - -onMounted(() => { - // 监听响应 - window.addEventListener('message', (event) => { - // 处理响应 - if (event.data) - console.log(event.data) - }) + frameRef, }) diff --git a/src/hooks/setting/index.ts b/src/hooks/setting/index.ts index 6193701..fac0270 100644 --- a/src/hooks/setting/index.ts +++ b/src/hooks/setting/index.ts @@ -26,6 +26,7 @@ export function useGlobSetting(): Readonly { shortName: VITE_GLOB_APP_SHORT_NAME, urlPrefix: VITE_GLOB_API_URL_PREFIX, uploadUrl: `${VITE_GLOB_API_URL}/infra/file/upload`, + uploadUrlFull: `${VITE_GLOB_API_URL}/infra/file/upload-full`, tenantEnable: VITE_GLOB_APP_TENANT_ENABLE, captchaEnable: VITE_GLOB_APP_CAPTCHA_ENABLE, } diff --git a/src/logics/initAppConfig.ts b/src/logics/initAppConfig.ts index fce0fe3..92d6aa8 100644 --- a/src/logics/initAppConfig.ts +++ b/src/logics/initAppConfig.ts @@ -50,8 +50,8 @@ export function initAppConfigStore() { } // 如果当前界面被当作iframe使用,设置页面全屏显示 - console.warn(`${isInIframe()}__isInIframe`) projCfg.fullContent = isInIframe() + projCfg.showSettingButton = !isInIframe() appStore.setProjectConfig(projCfg) diff --git a/src/settings/projectSetting.ts b/src/settings/projectSetting.ts index 6454922..38f84b5 100644 --- a/src/settings/projectSetting.ts +++ b/src/settings/projectSetting.ts @@ -116,7 +116,7 @@ const setting: ProjectConfig = { // 多标签 multiTabsSetting: { // 刷新后是否保留已经打开的标签页 - cache: true, + cache: false, // 开启 show: true, // 显示图标 diff --git a/src/types/axios.d.ts b/src/types/axios.d.ts index 5b5be70..6e6a2d9 100644 --- a/src/types/axios.d.ts +++ b/src/types/axios.d.ts @@ -54,3 +54,21 @@ export interface UploadFileParams { filename?: string [key: string]: any } + +// 文件完整信息 +export interface FileDO { + // 编号,数据库自增 + id: string + // 配置编号 关联 FileConfigDO. getId() + configId: string + // 原文件名 + name: string + // 路径,即文件名 + path: string + // 访问地址 + url: string + // 文件的 MIME 类型,例如 "application/ octet-stream" + type: string + // 文件大小 + size: string +} diff --git a/src/types/config.d.ts b/src/types/config.d.ts index ab98534..8df14aa 100644 --- a/src/types/config.d.ts +++ b/src/types/config.d.ts @@ -157,6 +157,8 @@ export interface GlobConfig { apiUrl: string // Upload url uploadUrl?: string + // Upload url 返回完整文件信息 + uploadUrlFull?: string // Service interface url prefix urlPrefix?: string // Project abbreviation diff --git a/src/utils/file/preview.ts b/src/utils/file/preview.ts index a4c5cbf..9c42e96 100644 --- a/src/utils/file/preview.ts +++ b/src/utils/file/preview.ts @@ -4,10 +4,14 @@ import { getAccessToken } from '@/utils/auth' /** * 获取文件预览地址 * @param fileId + * @param wopi_client + * @param wopi_server */ -export async function initFilePreviewUrl(fileId: string | number): Promise { - const wopi_client = await getConfigKey('wopi_client_addr') - const wopi_server = await getConfigKey('wopi_server_ip_addr') +export async function initFilePreviewUrl(fileId: string | number, wopi_client?: string | undefined, wopi_server?: string | undefined): Promise { + if (!wopi_client || !wopi_server) { + wopi_client = await getConfigKey('wopi_client_addr') + wopi_server = await getConfigKey('wopi_server_ip_addr') + } const wopi = `${wopi_server}/admin-api/infra/file/preview/wopi/files/${fileId}?access_token=${getAccessToken()}` return `${wopi_client}?lang=zh-cn&WOPISrc=${encodeURIComponent(wopi)}` } diff --git a/src/views/infra/bookmark/index.vue b/src/views/infra/bookmark/index.vue index a73b030..da13e38 100644 --- a/src/views/infra/bookmark/index.vue +++ b/src/views/infra/bookmark/index.vue @@ -1,60 +1,70 @@