Skip to content

Commit 2a0e9a4

Browse files
committed
feat: 使用 v-viewer 预览图片
1 parent 1a6a894 commit 2a0e9a4

File tree

6 files changed

+39
-22
lines changed

6 files changed

+39
-22
lines changed

package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@
2525
"pinia": "^2.2.1",
2626
"store": "^2.0.12",
2727
"uuid": "^10.0.0",
28+
"v-viewer": "^3.0.11",
29+
"viewerjs": "^1.11.6",
2830
"vue": "^3.3.4",
2931
"vue-router": "4",
3032
"vuetify": "^3.7.0"

pnpm-lock.yaml

Lines changed: 22 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src-tauri/tauri.conf.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
},
99
"package": {
1010
"productName": "note_gen",
11-
"version": "0.4.2"
11+
"version": "0.4.3"
1212
},
1313
"tauri": {
1414
"allowlist": {

src/main.ts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,14 @@ import { createVuetify } from 'vuetify'
44
import * as components from 'vuetify/components'
55
import * as directives from 'vuetify/directives'
66
import { aliases, mdi } from 'vuetify/iconsets/mdi'
7+
import { directive as viewer } from "v-viewer"
78
import App from "./App.vue";
89
import router from './router'
910
import './db'
1011
import "./tailwind.css";
1112
import 'vuetify/styles'
1213
import './style.scss'
14+
import 'viewerjs/dist/viewer.css'
1315
import '@mdi/font/css/materialdesignicons.css'
1416

1517
const pinia = createPinia()
@@ -26,4 +28,11 @@ const vuetify = createVuetify({
2628
directives,
2729
})
2830

29-
createApp(App).use(pinia).use(router).use(vuetify).mount("#app");
31+
const imageViewerDirective = viewer()
32+
33+
createApp(App)
34+
.use(pinia)
35+
.use(router)
36+
.use(vuetify)
37+
.directive("viewer", imageViewerDirective)
38+
.mount("#app");

src/pages/home/components/MarkManager/index.vue

Lines changed: 3 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,13 @@
66
<v-btn size="small" variant="text" icon="mdi-image-plus-outline" v-tooltip="'图片标记'"></v-btn>
77
</div>
88
</div>
9-
<div v-if="marks?.length || screenshotList.length" class="list-mark story-scroll border-e-thin">
9+
<div v-if="marks?.length || screenshotList.length" class="list-mark story-scroll border-e-thin" v-viewer>
1010
<div class="flex justify-between px-2 pt-3 items-end">
1111
<p class="text-md font-bold text-gray-700">Marks</p>
1212
<span class="text-xs text-gray-400">{{ statusTotoal }} / {{ total }}</span>
1313
</div>
1414
<MarkCreative />
15-
<div v-for="(item, index) in marks" :key="item.id">
15+
<div v-for="item in marks" :key="item.id">
1616
<v-card :loading="loading" class="m-2" :variant="item.status ? 'elevated' : 'plain'">
1717
<template v-slot:loader="{ isActive }">
1818
<v-progress-linear
@@ -25,7 +25,6 @@
2525
<div class="flex">
2626
<div class="overflow-hidden h-28 w-28 bg-gray-400">
2727
<v-img
28-
@click="showImageViewer(index)"
2928
class="h-28 w-28 cursor-zoom-in hover:scale-105 duration-1000 transition-transform"
3029
:src="item.imgPath"
3130
cover
@@ -93,21 +92,14 @@
9392
</div>
9493
<!-- 暂无记录 -->
9594
<Empty v-else-if="!screenshotStore.screenshotList.length" />
96-
<!-- 图片预览 -->
97-
<ImageViewer
98-
v-if="marks && marks[imageViewerMarkIndex]"
99-
:src="marks[imageViewerMarkIndex].imgPath"
100-
v-model:visible="isShowImageViewer"
101-
/>
10295
</template>
10396

10497
<script lang="ts" setup>
105-
import { computed, ref, watch} from 'vue';
98+
import { computed, watch} from 'vue';
10699
import dayjs from 'dayjs';
107100
import relativeTime from 'dayjs/plugin/relativeTime'
108101
import zh from 'dayjs/locale/zh-cn'
109102
import { db, Tab, type Mark } from '../../../../db.ts'
110-
import ImageViewer from '../../../../components/ImageViewer.vue';
111103
import MarkCreative from "./MarkCreative.vue";
112104
import useTabStore from "../../../../stores/tab.ts"
113105
import useMarkStore from '../../../../stores/marks.ts';
@@ -164,15 +156,6 @@ function timeAgo(time: number) {
164156
return dayjs(time).fromNow()
165157
}
166158
167-
// 图片预览
168-
const isShowImageViewer = ref(false)
169-
const imageViewerMarkIndex = ref(0)
170-
171-
function showImageViewer(index: number) {
172-
isShowImageViewer.value = true
173-
imageViewerMarkIndex.value = index
174-
}
175-
176159
// 计算数量
177160
const total = computed(() => {
178161
return marks.value.length

src/pages/trash/components/table/index.vue

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
:headers="headers"
88
:items="desserts"
99
:items-per-page="itemsPerPage"
10+
v-viewer
1011
>
1112
<template v-slot:item.index="{ index }">
1213
{{ index + 1 + (page - 1) * itemsPerPage }}

0 commit comments

Comments
 (0)