1010 v-contextmenu =" { type: ContextmenuEnum.img, img: imageObj }"
1111 ref =" imageCardRef"
1212 >
13+ <!-- 图片 -->
1314 <div class =" image-card-top border-box" >
1415 <el-image
1516 :src =" imgUrl"
1617 fit =" cover"
1718 loading =" lazy"
18- @error =" isSync = false"
1919 lazy
2020 :hide-on-click-modal =" true"
2121 :preview-src-list =" store.getters.getUploadAreaState.pressShiftKey ? [] : [imgUrl!]"
22+ @error =" setDeployStatus(false)"
23+ @load =" setDeployStatus(true)"
2224 />
2325 </div >
26+
27+ <!-- 图片名称 & 复制链接 -->
2428 <div class =" image-card-bottom border-box" >
2529 <!-- 文件名 -->
2630 <div class =" filename text-ellipsis border-box" >
2731 {{ imageObj.name }}
2832 </div >
2933
3034 <!-- 复制图片链接 -->
31- <div class =" copy-link text-ellipsis border-box" @click =" copyImage(imageObj)" >
35+ <div
36+ class =" copy-link text-ellipsis border-box"
37+ :class =" { disabled: noneDeployed }"
38+ @click =" copyImageLink(imageObj)"
39+ >
3240 {{ $t('copy_link') }}
3341 </div >
3442 </div >
4149 >
4250 <el-icon :size =" 14" v-if =" imageObj.checked" ><IEpSelect /></el-icon >
4351 </div >
52+
53+ <!-- 部署状态 -->
54+ <div class =" deploy-status-box" v-if =" noneDeployed" >
55+ <el-tag type =" danger" disable-transitions >
56+ {{ $t('settings_page.image_hosting_deploy.not_deployed') }}
57+ </el-tag >
58+ </div >
4459 </div >
4560</template >
4661
4762<script setup lang="ts">
4863import { computed , ref } from ' vue'
4964import { store } from ' @/stores'
50- import { UploadedImageModel } from ' @/common/model'
65+ import { ImageLinkTypeEnum , UploadedImageModel } from ' @/common/model'
5166import { copyImageLink , generateImageLink } from ' @/utils'
5267import { ContextmenuEnum } from ' @/common/directive/types'
5368
@@ -61,25 +76,32 @@ const props = defineProps({
6176 default: false
6277 }
6378})
64- const isShowOperateBtn = ref <boolean >(false )
65- const isSync = ref <boolean >(true )
6679
67- const imgUrl = computed (() => generateImageLink (props .imageObj , isSync .value ))
80+ const userSettings = computed (() => store .getters .getUserSettings ).value
81+ const imgUrl = computed (() => generateImageLink (props .imageObj ))
6882
69- const copyImage = (imageObj : UploadedImageModel ) => {
70- imageObj .sync = isSync .value
71- copyImageLink (imageObj )
72- }
83+ const noneDeployed = computed (() => {
84+ return (
85+ userSettings .imageLinkType .selected === ImageLinkTypeEnum .GitHubPages &&
86+ props .imageObj .deployed === false
87+ )
88+ })
89+
90+ const isShowOperateBtn = ref <boolean >(false )
7391
7492const togglePick = (imageObj : UploadedImageModel ) => {
7593 imageObj .checked = ! imageObj .checked
76- imageObj .sync = isSync .value
7794 store .commit (' IMAGE_CARD' , { imageObj })
7895}
7996
8097const onShiftClick = (imageObj : UploadedImageModel ) => {
8198 togglePick (imageObj )
8299}
100+
101+ const setDeployStatus = (status : boolean ) => {
102+ // eslint-disable-next-line vue/no-mutating-props
103+ props .imageObj .deployed = status
104+ }
83105 </script >
84106
85107<style scoped lang="stylus">
0 commit comments