diff --git a/src/components/uh-links-actions/uh-links-actions.vue b/src/components/uh-links-actions/uh-links-actions.vue
new file mode 100644
index 0000000..b7c10a8
--- /dev/null
+++ b/src/components/uh-links-actions/uh-links-actions.vue
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
+ 提交申请
+
+
+
+ 友链信息
+
+
+
+
diff --git a/src/components/uh-links-mini-info/uh-links-mini-info.vue b/src/components/uh-links-mini-info/uh-links-mini-info.vue
new file mode 100644
index 0000000..9d2772d
--- /dev/null
+++ b/src/components/uh-links-mini-info/uh-links-mini-info.vue
@@ -0,0 +1,208 @@
+
+
+
+
+
+
+ 小程序友链信息
+ 本站小程序申请提交的信息,欢迎互换
+
+
+
+
+
+
+
+
+
+ 暂未配置小程序申请信息
+
+
+
+
+
+
+
+
+ 点击预览太阳码
+
+
+
+
+
+ {{ miniInfo.displayName }}
+
+
+
+
+ {{ miniInfo.description }}
+
+
+
+
+
+
+
+ {{ miniInfo.authorName }}
+
+
+ 网站:{{ miniInfo.website }}
+
+
+
+
+
+
+
+ {{ miniInfo.link }}
+
+ 复制
+
+
+
+
+
+
+
+ 复制小程序申请信息
+
+
+
+
+
+
diff --git a/src/components/uh-links-site-apply/uh-links-site-apply.vue b/src/components/uh-links-site-apply/uh-links-site-apply.vue
new file mode 100644
index 0000000..2825f2a
--- /dev/null
+++ b/src/components/uh-links-site-apply/uh-links-site-apply.vue
@@ -0,0 +1,231 @@
+
+
+
+
+
+
+ 申请友链
+ 提交后等待站长审核,通过后展示在「站点」列表中
+
+
+
+
+
+
+
+ 名称 *
+
+
+
+
+ 网址 *
+
+
+
+
+ Logo
+
+
+
+
+ 邮箱
+
+
+
+
+ 友链页面
+
+
+
+ (即包含本站链接的页面)
+
+
+
+ RSS地址
+
+
+
+
+ 网站描述
+
+
+
+
+
+ 提交申请
+
+
+
+
+
diff --git a/src/components/uh-links-site-info/uh-links-site-info.vue b/src/components/uh-links-site-info/uh-links-site-info.vue
new file mode 100644
index 0000000..dcefa3b
--- /dev/null
+++ b/src/components/uh-links-site-info/uh-links-site-info.vue
@@ -0,0 +1,121 @@
+
+
+
+
+
+
+ 友链信息
+ 本站友链交换信息,欢迎申请互换友链
+
+
+
+
+
+
+
+
+
+
+
+ {{ blogDetail.blogName || '未命名博客' }}
+
+
+ {{ blogDetail.blogDesc || '这个博主很懒,没写简介~' }}
+
+
+
+
+
+
+ {{ calcBlogContent }}
+
+
+
+
+
+
+
+ 复制友链交换信息
+
+
+
+
+
diff --git a/src/pages-blog/friend-links/friend-links.vue b/src/pages-blog/friend-links/friend-links.vue
index fe0d71c..6a3ecc8 100644
--- a/src/pages-blog/friend-links/friend-links.vue
+++ b/src/pages-blog/friend-links/friend-links.vue
@@ -1,595 +1,711 @@
-
-
-
+
+
+
-
-
-
-
-
- {{ tab.label }}
-
-
-
-
+
+
+
+
+
+ {{ tab.label }}
+
+
+
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
- {{ link.spec.groupName || '暂未分组' }}
- {{ link.spec.displayName }}
-
-
- 站点地址:{{ link.spec.url }}
-
-
- 博客简介:{{ link.spec.description || '这个博主很懒,没写简介~' }}
-
-
-
-
-
+
+
+
+
+
+
+ {{ group.groupName }}
+ ({{ group.links.length }})
+
+
+
+
+
+
+ {{ link.spec.displayName }}
+
+
+ 站点地址:{{ link.spec.url }}
+
+
+ 博客简介:{{ link.spec.description || '这个博主很懒,没写简介~' }}
+
+
+
+
+
+
-
-
-
-
-
-
+
+
-
-
-
-
- 站点详情
-
-
-
-
-
-
-
-
-
-
- {{ detail.data.spec.displayName }}
-
-
- {{ detail.data.spec.groupName }}
-
- 复制地址
-
-
-
- {{ detail.data.spec.url }}
-
-
-
-
- {{ detail.data.spec.description || '这个博主很懒,没写简介~' }}
-
-
-
+
+
+
+
+ 站点详情
+
+
+
+
+
+
+
+
+
+
+ {{ detail.data.spec.displayName }}
+
+
+
+ {{ detail.data.spec.groupName }}
+
+
+ 复制地址
+
+
+
+ {{ detail.data.spec.url }}
+
+
+
+
+ {{ detail.data.spec.description || '这个博主很懒,没写简介~' }}
+
+
+
-
- {{ loadMoreText }}
-
-
-
-
+
+ {{ loadMoreText }}
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
- {{ group.displayName || '未分组' }}
- ({{ group.links.length }})
-
-
-
-
-
-
- {{ link.spec?.displayName }}
-
-
- {{ link.spec.authorName }}
-
-
- {{ link.spec?.description || '暂无简介~' }}
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ group.displayName || '未分组' }}
+
+ ({{ group.links.length }})
+
+
+
+
+
+
+ {{ link.spec?.displayName }}
+
+
+ {{ link.spec.authorName }}
+
+
+ {{ link.spec?.description || '暂无简介~' }}
+
+
+
+
+
+
+
-
-
-
- 申请
-
-
-
+
+
+
-
-
-
-
- 小程序详情
-
-
-
-
-
-
-
-
-
-
-
- 点击预览,长按保存太阳码
-
-
+
+
+
+
+ 小程序详情
+
+
+
+
+
+
+
+
+
+
+
+ 点击预览,长按保存太阳码
+
+
-
-
- {{ miniDetail.data.spec?.displayName }}
-
- {{ miniDetail.data.spec.groupName }}
-
-
+
+
+
+ {{ miniDetail.data.spec?.displayName }}
+
+
+ {{ miniDetail.data.spec.groupName }}
+
+
-
-
- {{ miniDetail.data.spec.description }}
-
+
+
+ {{ miniDetail.data.spec.description }}
+
-
-
-
-
- {{ miniDetail.data.spec.authorName }}
-
- 网站:{{ miniDetail.data.spec.website }}
-
-
-
+
+
+
+
+
+ {{ miniDetail.data.spec.authorName }}
+
+
+ 网站:{{ miniDetail.data.spec.website }}
+
+
+
-
-
-
- {{ miniDetail.data.spec.link }}
-
- 复制
-
+
+
+
+ {{ miniDetail.data.spec.link }}
+
+
+ 复制
+
+
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
\ No newline at end of file
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pages-blog/votes/votes.vue b/src/pages-blog/votes/votes.vue
index af0646b..f50c206 100644
--- a/src/pages-blog/votes/votes.vue
+++ b/src/pages-blog/votes/votes.vue
@@ -6,6 +6,7 @@
import { NeedPluginIds } from '@/hooks/usePluginAvailable'
import { useAppConfigStore } from '@/store/appConfig'
import { debounce } from '@/utils/debounce'
+ import { sleep } from '@/utils/common'
import { calcVoteState, VOTE_TYPES, voteCacheUtil } from '@/utils/vote'
import type { IVoteItem } from '@/api/types/uni-halo'
@@ -20,16 +21,22 @@
const appConfigStore = useAppConfigStore()
const calcAuditModeEnabled = computed(() => appConfigStore.auditModeEnabled)
- /** 依赖插件(plugin-vote,参考 gallery 对象传参模式) */
const { pluginId, checking, tips, available: uniHaloPluginAvailable, check: checkPluginAvailable } = usePluginAvailable({
pluginId: NeedPluginIds.PluginVote,
- tips: '检测到当前插件没有安装或者启用,无法使用投票功能哦,请联系管理员',
+ tips: '啊偶,功能正在维护中...',
+ callback: (isAvailable) => {
+ if (!isAvailable) { return }
+ uni.pageScrollTo({
+ scrollTop: 0,
+ duration: 0,
+ })
+ handleGetData()
+ }
})
/** 重新检测插件:可用则拉取数据(供 uh-plugin-unavailable 刷新按钮) */
async function handlePluginRefresh() {
- if (await checkPluginAvailable())
- handleGetData()
+ if (await checkPluginAvailable()) { handleGetData() }
}
/* ---------------- 状态 ---------------- */
@@ -38,7 +45,6 @@
const hasNext = ref(false)
const isLoadMore = ref(false)
const loadMoreText = ref('加载中...')
- /** 是否已投过滤(前端过滤,接口无此参数) */
const filterIsVoted = ref(undefined)
const queryParams = ref>({
keyword: '',
@@ -124,8 +130,7 @@
function handleSelectFilter(option : IFilterOption) {
const item = filterPopup.value.item
- if (!item)
- return
+ if (!item) { return }
filterValues.value[item.key] = option.value
filterPopup.value.show = false
@@ -169,7 +174,6 @@
return
}
- uni.showLoading({ mask: true, title: '加载中...' })
if (!isLoadMore.value) {
updateLoadingStatus(DataLoadingStatusEnum.Loading)
}
@@ -179,7 +183,6 @@
const res = await getVoteList({ ...queryParams.value })
hasNext.value = res.data.hasNext || false
- // 加工列表数据(与旧项目一致):isVoted/_uh_state/_uh_type
const tempItems = res.data.items.map((item) => {
item.spec = item.spec || {}
item.spec.disabled = true
@@ -202,7 +205,7 @@
if (filterIsVoted.value !== undefined) {
dataList.value = dataList.value.filter(x => x.spec?.isVoted === filterIsVoted.value)
}
-
+ await sleep(600)
updateLoadingStatus(
dataList.value.length === 0 ? DataLoadingStatusEnum.Empty : DataLoadingStatusEnum.Success,
)
@@ -214,10 +217,7 @@
loadMoreText.value = '加载失败,请下拉刷新!'
}
finally {
- setTimeout(() => {
- uni.hideLoading()
- uni.stopPullDownRefresh()
- }, 500)
+ uni.stopPullDownRefresh()
}
}
@@ -281,18 +281,16 @@
-
-
+
-
-
-
+ :class="[filterValues[f.key]?'bg-secondary text-gray-900 font-bold':'bg-white/80 text-gray-600']"
+ @click="handleOpenFilter(f)">
+
{{ filterLabels[f.key] }}
-
+
-
-
+
@@ -335,7 +334,7 @@
{{ opt.label }}