mirror of
https://github.com/jiangrui1994/CloudSaver.git
synced 2026-01-11 23:58:46 +08:00
fix:优化前端图片展示添加默认图片
This commit is contained in:
BIN
frontend/src/assets/images/default.png
Normal file
BIN
frontend/src/assets/images/default.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 6.1 KiB |
@@ -12,12 +12,8 @@
|
|||||||
<div class="detail-cover">
|
<div class="detail-cover">
|
||||||
<el-image
|
<el-image
|
||||||
class="cover-image"
|
class="cover-image"
|
||||||
:src="
|
:src="getProxyImageUrl(currentResource.image as string)"
|
||||||
userStore.imagesSource === 'proxy'
|
:fit="currentResource.image ? 'cover' : 'contain'"
|
||||||
? `/tele-images/?url=${encodeURIComponent(currentResource.image as string)}`
|
|
||||||
: currentResource.image
|
|
||||||
"
|
|
||||||
fit="cover"
|
|
||||||
/>
|
/>
|
||||||
<el-tag
|
<el-tag
|
||||||
class="cloud-type"
|
class="cloud-type"
|
||||||
@@ -78,14 +74,10 @@
|
|||||||
@click.stop
|
@click.stop
|
||||||
>
|
>
|
||||||
<el-image
|
<el-image
|
||||||
:src="
|
:src="getProxyImageUrl(group.channelInfo.channelLogo)"
|
||||||
userStore.imagesSource === 'proxy'
|
:fit="group.channelInfo.channelLogo ? 'cover' : 'contain'"
|
||||||
? `/tele-images/?url=${encodeURIComponent(group.channelInfo.channelLogo)}`
|
|
||||||
: group.channelInfo.channelLogo
|
|
||||||
"
|
|
||||||
class="channel-logo"
|
class="channel-logo"
|
||||||
scroll-container="#pc-resources-content"
|
scroll-container="#pc-resources-content"
|
||||||
fit="cover"
|
|
||||||
loading="lazy"
|
loading="lazy"
|
||||||
/>
|
/>
|
||||||
<span>{{ group.channelInfo.name }}</span>
|
<span>{{ group.channelInfo.name }}</span>
|
||||||
@@ -101,7 +93,7 @@
|
|||||||
</el-tooltip>
|
</el-tooltip>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div v-show="group.displayList" class="group-content">
|
<div v-if="group.displayList" class="group-content">
|
||||||
<div class="card-grid">
|
<div class="card-grid">
|
||||||
<el-card
|
<el-card
|
||||||
v-for="resource in group.list"
|
v-for="resource in group.list"
|
||||||
@@ -114,12 +106,8 @@
|
|||||||
<el-image
|
<el-image
|
||||||
loading="lazy"
|
loading="lazy"
|
||||||
class="cover-image"
|
class="cover-image"
|
||||||
:src="
|
:src="getProxyImageUrl(resource.image as string)"
|
||||||
userStore.imagesSource === 'proxy'
|
:fit="resource.image ? 'cover' : 'contain'"
|
||||||
? `/tele-images/?url=${encodeURIComponent(resource.image as string)}`
|
|
||||||
: resource.image
|
|
||||||
"
|
|
||||||
fit="cover"
|
|
||||||
:alt="resource.title"
|
:alt="resource.title"
|
||||||
@click="showResourceDetail(resource)"
|
@click="showResourceDetail(resource)"
|
||||||
/>
|
/>
|
||||||
@@ -194,9 +182,8 @@ import { useResourceStore } from "@/stores/resource";
|
|||||||
import { ref } from "vue";
|
import { ref } from "vue";
|
||||||
import type { ResourceItem, TagColor } from "@/types";
|
import type { ResourceItem, TagColor } from "@/types";
|
||||||
import { ArrowDown, Plus } from "@element-plus/icons-vue";
|
import { ArrowDown, Plus } from "@element-plus/icons-vue";
|
||||||
import { useUserSettingStore } from "@/stores/userSetting";
|
import { getProxyImageUrl } from "@/utils/image";
|
||||||
|
|
||||||
const userStore = useUserSettingStore();
|
|
||||||
const store = useResourceStore();
|
const store = useResourceStore();
|
||||||
|
|
||||||
const showDetail = ref(false);
|
const showDetail = ref(false);
|
||||||
|
|||||||
@@ -15,26 +15,14 @@
|
|||||||
<el-image
|
<el-image
|
||||||
v-if="row.image"
|
v-if="row.image"
|
||||||
class="table-item-image"
|
class="table-item-image"
|
||||||
:src="
|
:src="getProxyImageUrl(row.image as string)"
|
||||||
userStore.imagesSource === 'proxy'
|
:fit="row.image ? 'cover' : 'contain'"
|
||||||
? `/tele-images/?url=${encodeURIComponent(row.image as string)}`
|
|
||||||
: row.image
|
|
||||||
"
|
|
||||||
hide-on-click-modal
|
hide-on-click-modal
|
||||||
:preview-src-list="[
|
|
||||||
`${location.origin}${
|
|
||||||
userStore.imagesSource === 'proxy'
|
|
||||||
? '/tele-images/?url=' + encodeURIComponent(row.image as string)
|
|
||||||
: row.image
|
|
||||||
}`,
|
|
||||||
]"
|
|
||||||
:zoom-rate="1.2"
|
:zoom-rate="1.2"
|
||||||
:max-scale="7"
|
:max-scale="7"
|
||||||
:min-scale="0.2"
|
:min-scale="0.2"
|
||||||
:initial-index="4"
|
:initial-index="4"
|
||||||
preview-teleported
|
|
||||||
:z-index="999"
|
:z-index="999"
|
||||||
fit="cover"
|
|
||||||
width="60"
|
width="60"
|
||||||
height="90"
|
height="90"
|
||||||
/>
|
/>
|
||||||
@@ -94,13 +82,9 @@
|
|||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
<div class="group-header">
|
<div class="group-header">
|
||||||
<el-image
|
<el-image
|
||||||
:src="
|
:src="getProxyImageUrl(row.channelInfo.channelLogo as string)"
|
||||||
userStore.imagesSource === 'proxy'
|
|
||||||
? `/tele-images/?url=${encodeURIComponent(row.channelInfo.channelLogo as string)}`
|
|
||||||
: row.channelInfo.channelLogo
|
|
||||||
"
|
|
||||||
class="channel-logo"
|
class="channel-logo"
|
||||||
fit="cover"
|
:fit="row.channelInfo.channelLogo ? 'cover' : 'contain'"
|
||||||
lazy
|
lazy
|
||||||
/>
|
/>
|
||||||
<span>{{ row.channelInfo.name }}</span>
|
<span>{{ row.channelInfo.name }}</span>
|
||||||
@@ -115,8 +99,7 @@
|
|||||||
import { useResourceStore } from "@/stores/resource";
|
import { useResourceStore } from "@/stores/resource";
|
||||||
import type { Resource, TagColor } from "@/types";
|
import type { Resource, TagColor } from "@/types";
|
||||||
import { computed } from "vue";
|
import { computed } from "vue";
|
||||||
import { useUserSettingStore } from "@/stores/userSetting";
|
import { getProxyImageUrl } from "@/utils/image";
|
||||||
const userStore = useUserSettingStore();
|
|
||||||
|
|
||||||
const store = useResourceStore();
|
const store = useResourceStore();
|
||||||
const emit = defineEmits(["save", "loadMore", "searchMovieforTag", "jump"]);
|
const emit = defineEmits(["save", "loadMore", "searchMovieforTag", "jump"]);
|
||||||
|
|||||||
@@ -6,8 +6,8 @@
|
|||||||
<!-- 左侧图片 -->
|
<!-- 左侧图片 -->
|
||||||
<div class="content__image">
|
<div class="content__image">
|
||||||
<van-image
|
<van-image
|
||||||
:src="`/tele-images/?url=${encodeURIComponent(item.image as string)}`"
|
:src="getProxyImageUrl(item.image as string)"
|
||||||
fit="cover"
|
:fit="item.image ? 'cover' : 'contain'"
|
||||||
lazy-load
|
lazy-load
|
||||||
/>
|
/>
|
||||||
<!-- 来源标签移到图片左上角 -->
|
<!-- 来源标签移到图片左上角 -->
|
||||||
@@ -74,6 +74,7 @@ import { computed, ref } from "vue";
|
|||||||
import { useResourceStore } from "@/stores/resource";
|
import { useResourceStore } from "@/stores/resource";
|
||||||
import { showNotify } from "vant";
|
import { showNotify } from "vant";
|
||||||
import type { ResourceItem } from "@/types";
|
import type { ResourceItem } from "@/types";
|
||||||
|
import { getProxyImageUrl } from "@/utils/image";
|
||||||
|
|
||||||
// Props 定义
|
// Props 定义
|
||||||
const props = defineProps<{
|
const props = defineProps<{
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ import { createPinia } from "pinia";
|
|||||||
import ElementPlus from "element-plus";
|
import ElementPlus from "element-plus";
|
||||||
import "element-plus/dist/index.css";
|
import "element-plus/dist/index.css";
|
||||||
import * as ElementPlusIconsVue from "@element-plus/icons-vue";
|
import * as ElementPlusIconsVue from "@element-plus/icons-vue";
|
||||||
|
import zhCn from "element-plus/es/locale/lang/zh-cn";
|
||||||
import { isMobileDevice } from "@/utils/index";
|
import { isMobileDevice } from "@/utils/index";
|
||||||
import App from "./App.vue";
|
import App from "./App.vue";
|
||||||
import { Lazyload } from "vant";
|
import { Lazyload } from "vant";
|
||||||
@@ -22,7 +23,9 @@ for (const [key, component] of Object.entries(ElementPlusIconsVue)) {
|
|||||||
app.use(createPinia());
|
app.use(createPinia());
|
||||||
app.use(Lazyload);
|
app.use(Lazyload);
|
||||||
app.use(router);
|
app.use(router);
|
||||||
app.use(ElementPlus);
|
app.use(ElementPlus, {
|
||||||
|
locale: zhCn,
|
||||||
|
});
|
||||||
|
|
||||||
app.mount("#app");
|
app.mount("#app");
|
||||||
|
|
||||||
|
|||||||
@@ -250,6 +250,7 @@ export const useResourceStore = defineStore("resource", {
|
|||||||
cloudType: matchedDrive.type,
|
cloudType: matchedDrive.type,
|
||||||
channel: matchedDrive.name,
|
channel: matchedDrive.name,
|
||||||
pubDate: "",
|
pubDate: "",
|
||||||
|
isSupportSave: true,
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
@@ -281,6 +282,7 @@ export const useResourceStore = defineStore("resource", {
|
|||||||
const parsedCode = drive.parseShareCode(match);
|
const parsedCode = drive.parseShareCode(match);
|
||||||
this.setLoadTree(true);
|
this.setLoadTree(true);
|
||||||
let shareInfo = await drive.api.getShareInfo(parsedCode);
|
let shareInfo = await drive.api.getShareInfo(parsedCode);
|
||||||
|
console.log(shareInfo);
|
||||||
this.setLoadTree(false);
|
this.setLoadTree(false);
|
||||||
if (shareInfo) {
|
if (shareInfo) {
|
||||||
shareInfo = {
|
shareInfo = {
|
||||||
|
|||||||
10
frontend/src/utils/image.ts
Normal file
10
frontend/src/utils/image.ts
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
import { useUserSettingStore } from "@/stores/userSetting";
|
||||||
|
import defaultImage from "@/assets/images/default.png";
|
||||||
|
|
||||||
|
export const getProxyImageUrl = (originalUrl: string): string => {
|
||||||
|
const userStore = useUserSettingStore();
|
||||||
|
if (!originalUrl) return defaultImage;
|
||||||
|
return userStore.imagesSource === "proxy"
|
||||||
|
? `/tele-images/?url=${encodeURIComponent(originalUrl)}`
|
||||||
|
: originalUrl;
|
||||||
|
};
|
||||||
Reference in New Issue
Block a user