diff --git a/components.d.ts b/components.d.ts index 620fadb..d7ab081 100644 --- a/components.d.ts +++ b/components.d.ts @@ -31,6 +31,7 @@ declare module 'vue' { AInputGroup: typeof import('ant-design-vue/es')['InputGroup'] AInputNumber: typeof import('ant-design-vue/es')['InputNumber'] AInputPassword: typeof import('ant-design-vue/es')['InputPassword'] + AlbumShareModal: typeof import('./src/views/Album/Phoalbum/AlbumShareModal.vue')['default'] AllPhoto: typeof import('./src/views/Photograph/AllPhoto/AllPhoto.vue')['default'] AMenu: typeof import('ant-design-vue/es')['Menu'] AMenuItem: typeof import('ant-design-vue/es')['MenuItem'] @@ -42,6 +43,7 @@ declare module 'vue' { AProgress: typeof import('ant-design-vue/es')['Progress'] AQrcode: typeof import('ant-design-vue/es')['QRCode'] ARangePicker: typeof import('ant-design-vue/es')['RangePicker'] + ArrowDownOutlined: typeof import('@ant-design/icons-vue')['ArrowDownOutlined'] ASelect: typeof import('ant-design-vue/es')['Select'] ASelectOption: typeof import('ant-design-vue/es')['SelectOption'] ASpin: typeof import('ant-design-vue/es')['Spin'] @@ -70,6 +72,7 @@ declare module 'vue' { DownloadOutlined: typeof import('@ant-design/icons-vue')['DownloadOutlined'] DownOutlined: typeof import('@ant-design/icons-vue')['DownOutlined'] DynamicTitle: typeof import('./src/components/DynamicTitle/DynamicTitle.vue')['default'] + EditOutlined: typeof import('@ant-design/icons-vue')['EditOutlined'] EyeInvisibleOutlined: typeof import('@ant-design/icons-vue')['EyeInvisibleOutlined'] FileImageOutlined: typeof import('@ant-design/icons-vue')['FileImageOutlined'] Folder: typeof import('./src/components/Folder/Folder.vue')['default'] @@ -78,6 +81,7 @@ declare module 'vue' { ImageShare: typeof import('./src/views/Share/ImageShare/ImageShare.vue')['default'] ImageToolbar: typeof import('./src/views/Photograph/ImageToolbar/ImageToolbar.vue')['default'] ImageUpload: typeof import('./src/views/Photograph/ImageUpload/ImageUpload.vue')['default'] + ItalicOutlined: typeof import('@ant-design/icons-vue')['ItalicOutlined'] LandingPage: typeof import('./src/views/Landing/LandingPage.vue')['default'] LeftOutlined: typeof import('@ant-design/icons-vue')['LeftOutlined'] LinkOutlined: typeof import('@ant-design/icons-vue')['LinkOutlined'] diff --git a/public/provider_icon/ali.svg b/public/provider_icon/ali.svg new file mode 100644 index 0000000..5fc75e2 --- /dev/null +++ b/public/provider_icon/ali.svg @@ -0,0 +1 @@ + diff --git a/public/provider_icon/huawei.svg b/public/provider_icon/huawei.svg new file mode 100644 index 0000000..34771ec --- /dev/null +++ b/public/provider_icon/huawei.svg @@ -0,0 +1 @@ + diff --git a/public/provider_icon/minio.svg b/public/provider_icon/minio.svg new file mode 100644 index 0000000..2fd167b --- /dev/null +++ b/public/provider_icon/minio.svg @@ -0,0 +1 @@ + diff --git a/public/provider_icon/tencent.svg b/public/provider_icon/tencent.svg new file mode 100644 index 0000000..cd74b6e --- /dev/null +++ b/public/provider_icon/tencent.svg @@ -0,0 +1 @@ + diff --git a/src/api/upscale/index.ts b/src/api/phone/index.ts similarity index 86% rename from src/api/upscale/index.ts rename to src/api/phone/index.ts index 3641b8b..0d91686 100644 --- a/src/api/upscale/index.ts +++ b/src/api/phone/index.ts @@ -2,7 +2,7 @@ import {service} from "@/utils/alova/service.ts"; import {uploadImageRequest} from "@/types/upscale"; export const uploadImage = (data: uploadImageRequest) => { - return service.Post('/api/auth/upscale/phone/upload', { + return service.Post('/api/auth/phone/upload', { image: data.image, access_token: data.access_token, user_id: data.user_id, diff --git a/src/api/storage/index.ts b/src/api/storage/index.ts index 26956da..f6004c9 100644 --- a/src/api/storage/index.ts +++ b/src/api/storage/index.ts @@ -53,7 +53,7 @@ export const getFaceSamplesDetailList = (face_id: number, provider: string, buck ignoreToken: false, signature: false, }, - hitSource: ["modify-face-sample-name", "modify-face-sample-type"], + hitSource: ["modify-face-sample-name", "modify-face-sample-type", "delete-images"], }); }; /** @@ -123,7 +123,7 @@ export const albumListApi = (type: number, sort: boolean) => { ignoreToken: false, signature: false, }, - hitSource: ["create-album", "rename-album", "delete-album"], + hitSource: ["create-album", "rename-album", "delete-album", "album-share"], }); }; /** @@ -147,7 +147,7 @@ export const queryAlbumDetailListApi = (id: number, provider: string, bucket: st signature: false, }, name: "album-detail-list", - hitSource: ["upload-file", "delete-images"], + hitSource: ["upload-file", "delete-images", "album-share"], }); }; @@ -205,7 +205,7 @@ export const queryAllImagesApi = (type: string, sort: boolean, provider: string, ignoreToken: false, signature: false, }, - hitSource: ["upload-file", "delete-images"], + hitSource: ["upload-file", "delete-images", "album-share"], }); }; @@ -213,8 +213,11 @@ export const queryAllImagesApi = (type: string, sort: boolean, provider: string, /** * 获取最近照片列表 */ -export const queryRecentImagesApi = () => { - return service.Post('/api/auth/storage/image/recent/list', {}, { +export const queryRecentImagesApi = (provider: string, bucket: string) => { + return service.Post('/api/auth/storage/image/recent/list', { + provider: provider, + bucket: bucket, + }, { cacheFor: { expire: 60 * 60 * 24 * 7, mode: "restore", @@ -407,6 +410,31 @@ export const getBucketCapacityApi = (provider: string, bucket: string) => { ignoreToken: false, signature: false, }, - name: "delete-images", + name: "get-bucket-capacity", + }); +}; +/** + * 分享相册 + * @param id + * @param expire_date + * @param access_limit + * @param access_password + * @param provider + * @param bucket + */ +export const albumShareApi = (id: number, expire_date: string, access_limit: number, access_password: string, provider: string, bucket: string) => { + return service.Post('/api/auth/storage/album/share', { + id: id, + expire_date: expire_date, + access_limit: access_limit, + access_password: access_password, + provider: provider, + bucket: bucket, + }, { + meta: { + ignoreToken: false, + signature: false, + }, + name: "album-share", }); }; diff --git a/src/assets/styles/theme.scss b/src/assets/styles/theme.scss index b0d3c54..d2be188 100644 --- a/src/assets/styles/theme.scss +++ b/src/assets/styles/theme.scss @@ -80,3 +80,13 @@ html { .ant-table-wrapper .ant-table:not(.ant-table-bordered) .ant-table-tbody > tr:last-child > td { border-bottom: none !important; } + +// 空白内容样式 +.empty-content { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + height: 100%; + width: 100%; +} diff --git a/src/assets/svgs/oss.svg b/src/assets/svgs/oss.svg new file mode 100644 index 0000000..23dbeca --- /dev/null +++ b/src/assets/svgs/oss.svg @@ -0,0 +1 @@ + diff --git a/src/assets/svgs/wenhao.svg b/src/assets/svgs/wenhao.svg new file mode 100644 index 0000000..5cb5530 --- /dev/null +++ b/src/assets/svgs/wenhao.svg @@ -0,0 +1 @@ + diff --git a/src/constant/provider_icon.ts b/src/constant/provider_icon.ts new file mode 100644 index 0000000..55814eb --- /dev/null +++ b/src/constant/provider_icon.ts @@ -0,0 +1,6 @@ +export const ProviderIcon = { + "ali": "/provider_icon/ali.svg", + "tencent": "/provider_icon/tencent.svg", + "minio": "/provider_icon/minio.svg", + "huawei": "/provider_icon/huawei.svg", +}; diff --git a/src/layout/default/Header/Logo.vue b/src/layout/default/Header/Logo.vue index 8c3e51d..f9cbc03 100644 --- a/src/layout/default/Header/Logo.vue +++ b/src/layout/default/Header/Logo.vue @@ -58,10 +58,10 @@ -