diff --git a/src/utils/router.ts b/src/utils/router.ts
index 5a117357..5f104f56 100644
--- a/src/utils/router.ts
+++ b/src/utils/router.ts
@@ -205,9 +205,9 @@ export const loginCheck = () => {
* * 预览地址
* @returns
*/
- export const previewPath = () => {
+ export const previewPath = (id?: string | number) => {
const { origin, pathname } = document.location
const path = fetchPathByName(PreviewEnum.CHART_PREVIEW_NAME, 'href')
- const previewPath = `${origin}${pathname}${path}/${fetchRouteParamsLocation()}`
+ const previewPath = `${origin}${pathname}${path}/${id || fetchRouteParamsLocation()}`
return previewPath
}
\ No newline at end of file
diff --git a/src/views/preview/utils/storage.ts b/src/views/preview/utils/storage.ts
index b708488c..494315c7 100644
--- a/src/views/preview/utils/storage.ts
+++ b/src/views/preview/utils/storage.ts
@@ -16,7 +16,7 @@ export const getSessionStorageInfo = async () => {
)
// 是否本地预览
- if (!storageList) {
+ if (!storageList || storageList.findIndex(e => e.id === id.toString()) === -1) {
// 接口调用
const res = await fetchProjectApi({ projectId: id }) as unknown as MyResponseType
if (res.code === ResultEnum.SUCCESS) {
diff --git a/src/views/project/items/components/ProjectItemsCard/index.vue b/src/views/project/items/components/ProjectItemsCard/index.vue
index d9622c95..a0f847cf 100644
--- a/src/views/project/items/components/ProjectItemsCard/index.vue
+++ b/src/views/project/items/components/ProjectItemsCard/index.vue
@@ -7,7 +7,7 @@
@@ -98,7 +98,7 @@ const {
SendIcon
} = icon.ionicons5
-const emit = defineEmits(['delete', 'resize', 'edit', 'release'])
+const emit = defineEmits(['preview', 'delete', 'resize', 'edit', 'release'])
const props = defineProps({
cardData: Object as PropType
@@ -165,8 +165,11 @@ const selectOptions = ref([
const handleSelect = (key: string) => {
switch (key) {
+ case 'preview':
+ previewHandle()
+ break
case 'delete':
- deleteHanlde()
+ deleteHandle()
break
case 'release':
releaseHandle()
@@ -177,8 +180,13 @@ const handleSelect = (key: string) => {
}
}
+// 预览处理
+const previewHandle = () => {
+ emit('preview', props.cardData)
+}
+
// 删除处理
-const deleteHanlde = () => {
+const deleteHandle = () => {
emit('delete', props.cardData)
}
diff --git a/src/views/project/items/components/ProjectItemsList/hooks/useModal.hook.ts b/src/views/project/items/components/ProjectItemsList/hooks/useModal.hook.ts
index af74d44a..e28b1f91 100644
--- a/src/views/project/items/components/ProjectItemsList/hooks/useModal.hook.ts
+++ b/src/views/project/items/components/ProjectItemsList/hooks/useModal.hook.ts
@@ -1,6 +1,6 @@
import { ref } from 'vue'
import { ChartEnum } from '@/enums/pageEnum'
-import { fetchPathByName, routerTurnByPath } from '@/utils'
+import { fetchPathByName, routerTurnByPath, openNewWindow, previewPath } from '@/utils'
import { Chartype } from '../../../index.d'
export const useModalDataInit = () => {
const modalShow = ref(false)
@@ -12,25 +12,31 @@ export const useModalDataInit = () => {
modalData.value = null
}
- // 打开 modal
+ // 缩放处理
const resizeHandle = (cardData: Chartype) => {
if (!cardData) return
modalShow.value = true
modalData.value = cardData
}
- // 打开 modal
+ // 编辑处理
const editHandle = (cardData: Chartype) => {
if (!cardData) return
const path = fetchPathByName(ChartEnum.CHART_HOME_NAME, 'href')
routerTurnByPath(path, [cardData.id], undefined, true)
}
+ // 预览处理
+ const previewHandle = (cardData: Chartype) => {
+ openNewWindow(previewPath(cardData.id))
+ }
+
return {
modalData,
modalShow,
closeModal,
resizeHandle,
- editHandle
+ editHandle,
+ previewHandle
}
}
diff --git a/src/views/project/items/components/ProjectItemsList/index.vue b/src/views/project/items/components/ProjectItemsList/index.vue
index 73783e8a..2ce7145c 100644
--- a/src/views/project/items/components/ProjectItemsList/index.vue
+++ b/src/views/project/items/components/ProjectItemsList/index.vue
@@ -6,15 +6,11 @@