mirror of
https://github.com/ialley-workshop-open/uni-halo.git
synced 2026-09-12 16:40:40 +08:00
refactor: 重构插件可用性检测逻辑,统一传参和状态管理
1. 抽离统一的插件ID枚举NeedPluginIds,替换硬编码的插件ID字符串 2. 修改usePluginAvailable调用方式,改为对象传参模式 3. 统一插件不可用页面的提示文本和刷新逻辑,新增检测状态绑定 4. 优化uh-plugin-unavailable组件的兜底数据和样式
This commit is contained in:
@@ -16,13 +16,7 @@
|
|||||||
|
|
||||||
/** 插件信息(未在清单中时兜底) */
|
/** 插件信息(未在清单中时兜底) */
|
||||||
const pluginInfo = computed(() => {
|
const pluginInfo = computed(() => {
|
||||||
const info = NeedPlugins.get(props.pluginId)
|
return NeedPlugins.get(props.pluginId) ?? {pluginId:props.pluginId, name: '未找到插件' }
|
||||||
return info || {
|
|
||||||
id: props.pluginId,
|
|
||||||
name: props.name,
|
|
||||||
desc: '',
|
|
||||||
url: '',
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
|
|
||||||
function handleRefresh() {
|
function handleRefresh() {
|
||||||
@@ -32,7 +26,7 @@
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<view v-if="pluginInfo" class="mx-auto my-auto box-border flex flex-col items-center justify-center gap-6 text-sm">
|
<view v-if="pluginInfo" class="max-w-3/5 mx-auto my-auto box-border flex flex-col items-center justify-center gap-6 text-sm">
|
||||||
|
|
||||||
<wd-icon class-prefix="uhemoji-icon" name="-cry" size="160rpx"></wd-icon>
|
<wd-icon class-prefix="uhemoji-icon" name="-cry" size="160rpx"></wd-icon>
|
||||||
|
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
import { onPullDownRefresh } from '@dcloudio/uni-app'
|
import { onPullDownRefresh } from '@dcloudio/uni-app'
|
||||||
import { getChartData } from '@/api/uni-halo'
|
import { getChartData } from '@/api/uni-halo'
|
||||||
import { DataLoadingStatusEnum, useDataLoadingStatus } from '@/hooks/useDataLoadingStatus'
|
import { DataLoadingStatusEnum, useDataLoadingStatus } from '@/hooks/useDataLoadingStatus'
|
||||||
|
import { NeedPluginIds } from '@/hooks/usePluginAvailable'
|
||||||
import type { IDataStatistics } from '@/api/uni-halo'
|
import type { IDataStatistics } from '@/api/uni-halo'
|
||||||
|
|
||||||
definePage({
|
definePage({
|
||||||
@@ -13,9 +14,17 @@
|
|||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
/** 依赖插件(plugin-data-statistics) */
|
/** 依赖插件(plugin-data-statistics,参考 gallery 对象传参模式) */
|
||||||
const uniHaloPluginId = 'plugin-data-statistics'
|
const { pluginId, checking, tips, available: uniHaloPluginAvailable, check: checkPluginAvailable } = usePluginAvailable({
|
||||||
const { available: uniHaloPluginAvailable, check: checkPluginAvailable } = usePluginAvailable(uniHaloPluginId)
|
pluginId: NeedPluginIds.PluginDataStatistics,
|
||||||
|
tips: '阿偶,检测到当前插件没有安装或者启用,无法使用功能哦,请联系管理员',
|
||||||
|
})
|
||||||
|
|
||||||
|
/** 重新检测插件:可用则拉取数据(供 uh-plugin-unavailable 刷新按钮) */
|
||||||
|
async function handlePluginRefresh() {
|
||||||
|
if (await checkPluginAvailable())
|
||||||
|
handleGetData()
|
||||||
|
}
|
||||||
|
|
||||||
/* ---------------- 状态 ---------------- */
|
/* ---------------- 状态 ---------------- */
|
||||||
const { loadingStatus, updateLoadingStatus } = useDataLoadingStatus()
|
const { loadingStatus, updateLoadingStatus } = useDataLoadingStatus()
|
||||||
@@ -163,8 +172,8 @@
|
|||||||
<!-- 自定义导航 -->
|
<!-- 自定义导航 -->
|
||||||
<uh-navbar default-title="数据看板" title-color="text-gray-900" />
|
<uh-navbar default-title="数据看板" title-color="text-gray-900" />
|
||||||
|
|
||||||
<uh-plugin-unavailable v-if="!uniHaloPluginAvailable" :plugin-id="uniHaloPluginId"
|
<uh-plugin-unavailable v-if="!uniHaloPluginAvailable" :plugin-id="pluginId" :error-text="tips"
|
||||||
error-text="阿偶,检测到当前插件没有安装或者启用,无法使用功能哦,请联系管理员" @on-refresh="handleGetData" />
|
:checking="checking" @on-refresh="handlePluginRefresh" />
|
||||||
<template v-else>
|
<template v-else>
|
||||||
<uh-data-loading v-if="loadingStatus !== 'success'" :loading-status="loadingStatus" empty-text="暂无统计数据" @refresh="handleGetData" />
|
<uh-data-loading v-if="loadingStatus !== 'success'" :loading-status="loadingStatus" empty-text="暂无统计数据" @refresh="handleGetData" />
|
||||||
|
|
||||||
|
|||||||
@@ -31,13 +31,29 @@ const settingStore = useSettingStore()
|
|||||||
const haloPluginConfigs = computed(() => appConfigStore.configs.pluginConfig)
|
const haloPluginConfigs = computed(() => appConfigStore.configs.pluginConfig)
|
||||||
const globalAppSettings = computed(() => settingStore.settings)
|
const globalAppSettings = computed(() => settingStore.settings)
|
||||||
|
|
||||||
/* ---------------- 依赖插件 ---------------- */
|
/* ---------------- 依赖插件(参考 gallery 对象传参模式) ---------------- */
|
||||||
/** 站点 tab:plugin-links */
|
/** 站点 tab:PluginLinks */
|
||||||
const sitePluginId = NeedPluginIds.PluginLinks
|
const { pluginId: sitePluginId, checking: siteChecking, tips: siteTips, available: sitePluginAvailable, check: checkSitePluginAvailable } = usePluginAvailable({
|
||||||
const { available: sitePluginAvailable, check: checkSitePluginAvailable } = usePluginAvailable(sitePluginId)
|
pluginId: NeedPluginIds.PluginLinks,
|
||||||
|
tips: '检测到当前插件没有安装或者启用,无法使用友情链接功能哦,请联系管理员',
|
||||||
|
})
|
||||||
/** 小程序 tab:plugin-uni-halo */
|
/** 小程序 tab:plugin-uni-halo */
|
||||||
const miniPluginId = NeedPluginIds.PluginUniHalo
|
const { pluginId: miniPluginId, checking: miniChecking, tips: miniTips, available: miniPluginAvailable, check: checkMiniPluginAvailable } = usePluginAvailable({
|
||||||
const { available: miniPluginAvailable, check: checkMiniPluginAvailable } = usePluginAvailable(miniPluginId)
|
pluginId: NeedPluginIds.PluginUniHalo,
|
||||||
|
tips: '检测到当前插件没有安装或者启用,无法使用小程序链接功能哦,请联系管理员',
|
||||||
|
})
|
||||||
|
|
||||||
|
/** 重新检测站点插件:可用则拉取友链数据(供 uh-plugin-unavailable 刷新按钮) */
|
||||||
|
async function handleSitePluginRefresh() {
|
||||||
|
if (await checkSitePluginAvailable())
|
||||||
|
handleGetLinkGroupData()
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 重新检测小程序插件:可用则拉取小程序链接数据(供 uh-plugin-unavailable 刷新按钮) */
|
||||||
|
async function handleMiniPluginRefresh() {
|
||||||
|
if (await checkMiniPluginAvailable())
|
||||||
|
handleGetMiniProgramLinks()
|
||||||
|
}
|
||||||
|
|
||||||
/* ---------------- tabs ---------------- */
|
/* ---------------- tabs ---------------- */
|
||||||
const activeTabIndex = ref(0)
|
const activeTabIndex = ref(0)
|
||||||
@@ -357,8 +373,9 @@ onReachBottom(() => {
|
|||||||
<uh-plugin-unavailable
|
<uh-plugin-unavailable
|
||||||
v-if="!sitePluginAvailable"
|
v-if="!sitePluginAvailable"
|
||||||
:plugin-id="sitePluginId"
|
:plugin-id="sitePluginId"
|
||||||
error-text="检测到当前插件没有安装或者启用,无法使用友情链接功能哦,请联系管理员"
|
:error-text="siteTips"
|
||||||
@on-refresh="handleGetLinkGroupData"
|
:checking="siteChecking"
|
||||||
|
@on-refresh="handleSitePluginRefresh"
|
||||||
/>
|
/>
|
||||||
<template v-else>
|
<template v-else>
|
||||||
<!-- 加载/错误/空占位(状态机) -->
|
<!-- 加载/错误/空占位(状态机) -->
|
||||||
@@ -455,8 +472,9 @@ onReachBottom(() => {
|
|||||||
<uh-plugin-unavailable
|
<uh-plugin-unavailable
|
||||||
v-if="!miniPluginAvailable"
|
v-if="!miniPluginAvailable"
|
||||||
:plugin-id="miniPluginId"
|
:plugin-id="miniPluginId"
|
||||||
error-text="检测到当前插件没有安装或者启用,无法使用小程序链接功能哦,请联系管理员"
|
:error-text="miniTips"
|
||||||
@on-refresh="handleGetMiniProgramLinks"
|
:checking="miniChecking"
|
||||||
|
@on-refresh="handleMiniPluginRefresh"
|
||||||
/>
|
/>
|
||||||
<template v-else>
|
<template v-else>
|
||||||
<!-- 加载/错误/空占位(状态机) -->
|
<!-- 加载/错误/空占位(状态机) -->
|
||||||
|
|||||||
@@ -8,8 +8,8 @@ import { onLoad, onPullDownRefresh } from '@dcloudio/uni-app'
|
|||||||
import { getPostListByKeyword } from '@/api/halo'
|
import { getPostListByKeyword } from '@/api/halo'
|
||||||
import { useAppConfigStore } from '@/store/appConfig'
|
import { useAppConfigStore } from '@/store/appConfig'
|
||||||
import { DataLoadingStatusEnum, useDataLoadingStatus } from '@/hooks/useDataLoadingStatus'
|
import { DataLoadingStatusEnum, useDataLoadingStatus } from '@/hooks/useDataLoadingStatus'
|
||||||
|
import { NeedPluginIds } from '@/hooks/usePluginAvailable'
|
||||||
import { markdownConfig } from '@/config/markdown'
|
import { markdownConfig } from '@/config/markdown'
|
||||||
import { formatTime as formatTimeUtil } from '@/utils/formatTime'
|
|
||||||
import { debounce } from '@/utils/debounce'
|
import { debounce } from '@/utils/debounce'
|
||||||
|
|
||||||
definePage({
|
definePage({
|
||||||
@@ -23,9 +23,17 @@ definePage({
|
|||||||
const appConfigStore = useAppConfigStore()
|
const appConfigStore = useAppConfigStore()
|
||||||
const calcAuditModeEnabled = computed(() => appConfigStore.auditModeEnabled)
|
const calcAuditModeEnabled = computed(() => appConfigStore.auditModeEnabled)
|
||||||
|
|
||||||
/** 依赖插件(plugin-search-widget) */
|
/** 依赖插件(plugin-search-widget,参考 gallery 对象传参模式) */
|
||||||
const uniHaloPluginId = 'plugin-search-widget'
|
const { pluginId, checking, tips, available: uniHaloPluginAvailable, check: checkPluginAvailable } = usePluginAvailable({
|
||||||
const { available: uniHaloPluginAvailable, check: checkPluginAvailable } = usePluginAvailable(uniHaloPluginId)
|
pluginId: NeedPluginIds.PluginSearchWidget,
|
||||||
|
tips: '检测到当前插件没有安装或者启用,无法使用搜索功能哦,请联系管理员',
|
||||||
|
})
|
||||||
|
|
||||||
|
/** 重新检测插件:可用则重新搜索(供 uh-plugin-unavailable 刷新按钮) */
|
||||||
|
async function handlePluginRefresh() {
|
||||||
|
if (await checkPluginAvailable())
|
||||||
|
handleOnSearch()
|
||||||
|
}
|
||||||
|
|
||||||
/* ---------------- 状态 ---------------- */
|
/* ---------------- 状态 ---------------- */
|
||||||
const { loadingStatus, updateLoadingStatus } = useDataLoadingStatus()
|
const { loadingStatus, updateLoadingStatus } = useDataLoadingStatus()
|
||||||
@@ -160,9 +168,10 @@ onPullDownRefresh(() => {
|
|||||||
|
|
||||||
<uh-plugin-unavailable
|
<uh-plugin-unavailable
|
||||||
v-if="!uniHaloPluginAvailable"
|
v-if="!uniHaloPluginAvailable"
|
||||||
:plugin-id="uniHaloPluginId"
|
:plugin-id="pluginId"
|
||||||
error-text="检测到当前插件没有安装或者启用,无法使用搜索功能哦,请联系管理员"
|
:error-text="tips"
|
||||||
@on-refresh="handleOnSearch"
|
:checking="checking"
|
||||||
|
@on-refresh="handlePluginRefresh"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<template v-else>
|
<template v-else>
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import { computed, ref } from 'vue'
|
|||||||
import { onLoad, onPullDownRefresh, onReachBottom } from '@dcloudio/uni-app'
|
import { onLoad, onPullDownRefresh, onReachBottom } from '@dcloudio/uni-app'
|
||||||
import { getVoteList } from '@/api/uni-halo'
|
import { getVoteList } from '@/api/uni-halo'
|
||||||
import { DataLoadingStatusEnum, useDataLoadingStatus } from '@/hooks/useDataLoadingStatus'
|
import { DataLoadingStatusEnum, useDataLoadingStatus } from '@/hooks/useDataLoadingStatus'
|
||||||
|
import { NeedPluginIds } from '@/hooks/usePluginAvailable'
|
||||||
import { useAppConfigStore } from '@/store/appConfig'
|
import { useAppConfigStore } from '@/store/appConfig'
|
||||||
import type { IVoteItem } from '@/api/types/uni-halo'
|
import type { IVoteItem } from '@/api/types/uni-halo'
|
||||||
|
|
||||||
@@ -21,9 +22,17 @@ definePage({
|
|||||||
const appConfigStore = useAppConfigStore()
|
const appConfigStore = useAppConfigStore()
|
||||||
const calcAuditModeEnabled = computed(() => appConfigStore.auditModeEnabled)
|
const calcAuditModeEnabled = computed(() => appConfigStore.auditModeEnabled)
|
||||||
|
|
||||||
/** 依赖插件(plugin-vote) */
|
/** 依赖插件(plugin-vote,参考 gallery 对象传参模式) */
|
||||||
const uniHaloPluginId = 'plugin-vote'
|
const { pluginId, checking, tips, available: uniHaloPluginAvailable, check: checkPluginAvailable } = usePluginAvailable({
|
||||||
const { available: uniHaloPluginAvailable, check: checkPluginAvailable } = usePluginAvailable(uniHaloPluginId)
|
pluginId: NeedPluginIds.PluginVote,
|
||||||
|
tips: '检测到当前插件没有安装或者启用,无法使用投票功能哦,请联系管理员',
|
||||||
|
})
|
||||||
|
|
||||||
|
/** 重新检测插件:可用则拉取数据(供 uh-plugin-unavailable 刷新按钮) */
|
||||||
|
async function handlePluginRefresh() {
|
||||||
|
if (await checkPluginAvailable())
|
||||||
|
handleGetData()
|
||||||
|
}
|
||||||
|
|
||||||
/* ---------------- 状态 ---------------- */
|
/* ---------------- 状态 ---------------- */
|
||||||
const { loadingStatus, updateLoadingStatus } = useDataLoadingStatus()
|
const { loadingStatus, updateLoadingStatus } = useDataLoadingStatus()
|
||||||
@@ -128,9 +137,10 @@ onReachBottom(() => {
|
|||||||
|
|
||||||
<uh-plugin-unavailable
|
<uh-plugin-unavailable
|
||||||
v-if="!uniHaloPluginAvailable"
|
v-if="!uniHaloPluginAvailable"
|
||||||
:plugin-id="uniHaloPluginId"
|
:plugin-id="pluginId"
|
||||||
error-text="检测到当前插件没有安装或者启用,无法使用投票功能哦,请联系管理员"
|
:error-text="tips"
|
||||||
@on-refresh="handleGetData"
|
:checking="checking"
|
||||||
|
@on-refresh="handlePluginRefresh"
|
||||||
/>
|
/>
|
||||||
<template v-else>
|
<template v-else>
|
||||||
<!-- 加载/错误/空占位(状态机) -->
|
<!-- 加载/错误/空占位(状态机) -->
|
||||||
|
|||||||
@@ -15,15 +15,16 @@
|
|||||||
type ViewState = 'loading' | 'normal' | 'error' | 'maintenance'
|
type ViewState = 'loading' | 'normal' | 'error' | 'maintenance'
|
||||||
type FromReason = 'plugin' | 'maintenance'
|
type FromReason = 'plugin' | 'maintenance'
|
||||||
|
|
||||||
const uniHaloPluginId = 'plugin-uni-halo'
|
|
||||||
/** 默认维护标题(拦截场景未配置维护信息时展示) */
|
/** 默认维护标题(拦截场景未配置维护信息时展示) */
|
||||||
const DEFAULT_MAINTENANCE_TITLE = '我们正在加油升级!'
|
const DEFAULT_MAINTENANCE_TITLE = '我们正在加油升级!'
|
||||||
/** 恢复检测轮询间隔(ms):插件激活/维护结束探测 */
|
/** 恢复检测轮询间隔(ms):插件激活/维护结束探测 */
|
||||||
const RECOVERY_POLL_INTERVAL = 30 * 1000
|
const RECOVERY_POLL_INTERVAL = 30 * 1000
|
||||||
|
|
||||||
const store = useAppConfigStore()
|
const store = useAppConfigStore()
|
||||||
/** 插件可用性(拦截恢复检测用) */
|
/** 插件可用性(拦截恢复检测用,参考 gallery 对象传参模式) */
|
||||||
const { check: checkPluginAvailable } = usePluginAvailable(uniHaloPluginId)
|
const { check: checkPluginAvailable } = usePluginAvailable({
|
||||||
|
pluginId: 'plugin-uni-halo',
|
||||||
|
})
|
||||||
|
|
||||||
const viewState = ref<ViewState>('loading')
|
const viewState = ref<ViewState>('loading')
|
||||||
const maintenance = ref<IPublicMaintenance | null>(null)
|
const maintenance = ref<IPublicMaintenance | null>(null)
|
||||||
|
|||||||
@@ -9,6 +9,7 @@
|
|||||||
import { getBlogStatistics } from '@/api/halo'
|
import { getBlogStatistics } from '@/api/halo'
|
||||||
import { useAppConfigStore } from '@/store/appConfig'
|
import { useAppConfigStore } from '@/store/appConfig'
|
||||||
import { useFavoritesStore } from '@/store/favorites'
|
import { useFavoritesStore } from '@/store/favorites'
|
||||||
|
import { NeedPluginIds } from '@/hooks/usePluginAvailable'
|
||||||
import { checkAvatarUrl, checkImageUrl } from '@/utils/url'
|
import { checkAvatarUrl, checkImageUrl } from '@/utils/url'
|
||||||
import { checkHasAdminLogin } from '@/utils/auth'
|
import { checkHasAdminLogin } from '@/utils/auth'
|
||||||
import { t } from '@/locale'
|
import { t } from '@/locale'
|
||||||
@@ -28,8 +29,10 @@
|
|||||||
const calcAuditModeEnabled = computed(() => appConfigStore.auditModeEnabled)
|
const calcAuditModeEnabled = computed(() => appConfigStore.auditModeEnabled)
|
||||||
const calcVotePluginEnabled = computed(() => !!haloConfigs.value.pluginConfig?.votePlugin?.enabled)
|
const calcVotePluginEnabled = computed(() => !!haloConfigs.value.pluginConfig?.votePlugin?.enabled)
|
||||||
const calcLinksPluginEnabled = computed(() => !!haloConfigs.value.pluginConfig?.linksPlugin?.enabled)
|
const calcLinksPluginEnabled = computed(() => !!haloConfigs.value.pluginConfig?.linksPlugin?.enabled)
|
||||||
/** 数据看板插件可用性(供导航项显隐判断) */
|
/** 数据看板插件可用性(供导航项显隐判断,参考 gallery 对象传参模式) */
|
||||||
const { check: checkDataVisualPlugin } = usePluginAvailable('plugin-data-statistics')
|
const { check: checkDataVisualPlugin } = usePluginAvailable({
|
||||||
|
pluginId: NeedPluginIds.PluginDataStatistics,
|
||||||
|
})
|
||||||
|
|
||||||
/* ---------------- 计算属性 ---------------- */
|
/* ---------------- 计算属性 ---------------- */
|
||||||
const bloggerInfo = computed(() => {
|
const bloggerInfo = computed(() => {
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
import { onLoad, onPullDownRefresh, onReachBottom } from '@dcloudio/uni-app'
|
import { onLoad, onPullDownRefresh, onReachBottom } from '@dcloudio/uni-app'
|
||||||
import { getMomentList } from '@/api/halo'
|
import { getMomentList } from '@/api/halo'
|
||||||
import { useAppConfigStore } from '@/store/appConfig'
|
import { useAppConfigStore } from '@/store/appConfig'
|
||||||
|
import { NeedPluginIds } from '@/hooks/usePluginAvailable'
|
||||||
import { useFavoritesStore } from '@/store/favorites'
|
import { useFavoritesStore } from '@/store/favorites'
|
||||||
import { checkAvatarUrl, checkThumbnailUrl } from '@/utils/url'
|
import { checkAvatarUrl, checkThumbnailUrl } from '@/utils/url'
|
||||||
import { buildMomentFavoriteItem } from '@/utils/favorite'
|
import { buildMomentFavoriteItem } from '@/utils/favorite'
|
||||||
@@ -46,9 +47,17 @@
|
|||||||
return appInfo?.name || bloggerInfo.value.nickname || 'uni-halo'
|
return appInfo?.name || bloggerInfo.value.nickname || 'uni-halo'
|
||||||
})
|
})
|
||||||
|
|
||||||
/** 依赖插件(plugin-moments) */
|
/** 依赖插件(plugin-moments,参考 gallery 对象传参模式) */
|
||||||
const uniHaloPluginId = 'plugin-moments'
|
const { pluginId, checking, tips, available: uniHaloPluginAvailable, check: checkPluginAvailable } = usePluginAvailable({
|
||||||
const { available: uniHaloPluginAvailable, check: checkPluginAvailable } = usePluginAvailable(uniHaloPluginId)
|
pluginId: NeedPluginIds.PluginMoments,
|
||||||
|
tips: '检测到当前插件没有安装或者启用,无法使用瞬间功能哦,请联系管理员',
|
||||||
|
})
|
||||||
|
|
||||||
|
/** 重新检测插件:可用则拉取数据(供 uh-plugin-unavailable 刷新按钮) */
|
||||||
|
async function handlePluginRefresh() {
|
||||||
|
if (await checkPluginAvailable())
|
||||||
|
handleGetData()
|
||||||
|
}
|
||||||
|
|
||||||
/* ---------------- 状态 ---------------- */
|
/* ---------------- 状态 ---------------- */
|
||||||
const { loadingStatus, updateLoadingStatus } = useDataLoadingStatus()
|
const { loadingStatus, updateLoadingStatus } = useDataLoadingStatus()
|
||||||
@@ -279,8 +288,8 @@
|
|||||||
|
|
||||||
<template>
|
<template>
|
||||||
<view class="box-border min-h-screen w-screen flex flex-col bg-page py-3">
|
<view class="box-border min-h-screen w-screen flex flex-col bg-page py-3">
|
||||||
<uh-plugin-unavailable v-if="!uniHaloPluginAvailable" :plugin-id="uniHaloPluginId"
|
<uh-plugin-unavailable v-if="!uniHaloPluginAvailable" :plugin-id="pluginId" :error-text="tips"
|
||||||
error-text="检测到当前插件没有安装或者启用,无法使用瞬间功能哦,请联系管理员" @on-refresh="handleGetData" />
|
:checking="checking" @on-refresh="handlePluginRefresh" />
|
||||||
<template v-else>
|
<template v-else>
|
||||||
<!-- 加载失败(可重试) -->
|
<!-- 加载失败(可重试) -->
|
||||||
<uh-data-loading v-if="loadingStatus !== DataLoadingStatusEnum.Success" :loading-status="loadingStatus"
|
<uh-data-loading v-if="loadingStatus !== DataLoadingStatusEnum.Success" :loading-status="loadingStatus"
|
||||||
|
|||||||
Reference in New Issue
Block a user