|
|
@@ -3,14 +3,24 @@
|
|
|
<FlexCol v-if="showSwitch" position="absolute" :left="0" :top="0" :right="0" backgroundColor="rgba(255,255,255,0.5)">
|
|
|
<StatusBarSpace />
|
|
|
<FlexRow gap="gap.md">
|
|
|
- <Button
|
|
|
- icon="https://xy.wenlvti.net/app_static/images/home/IconSwitch.png"
|
|
|
- :text="villageStore.currentVillage?.name || '未选择村庄'"
|
|
|
- :textColor="topTab === 'village' ? 'text.titleLight' : 'text.content'"
|
|
|
- color="transparent"
|
|
|
- type="custom"
|
|
|
- @click="showMyFollowPopup = true"
|
|
|
- />
|
|
|
+ <BubbleTip
|
|
|
+ v-model:show="showFollowTip"
|
|
|
+ position="bottom"
|
|
|
+ crossPosition="left"
|
|
|
+ arrowOffsetX="-50rpx"
|
|
|
+ content="点此可以查看我关注的村社"
|
|
|
+ @contentClick="showMyFollowPopup = true;handleCloseFollowTip()"
|
|
|
+ @close="handleCloseFollowTip"
|
|
|
+ >
|
|
|
+ <Button
|
|
|
+ icon="https://xy.wenlvti.net/app_static/images/home/IconSwitch.png"
|
|
|
+ :text="villageStore.currentVillage?.name || '未选择村社'"
|
|
|
+ :textColor="topTab === 'village' ? 'text.titleLight' : 'text.content'"
|
|
|
+ color="transparent"
|
|
|
+ type="custom"
|
|
|
+ @click="showMyFollowPopup = true"
|
|
|
+ />
|
|
|
+ </BubbleTip>
|
|
|
<Button
|
|
|
type="custom"
|
|
|
color="transparent"
|
|
|
@@ -24,10 +34,10 @@
|
|
|
<FlexCol v-if="!isLight" center :padding="[60,0]" gap="gap.md">
|
|
|
<Image src="https://xy.wenlvti.net/app_static/images/home/BadgeNew.png" :width="320" mode="widthFix" />
|
|
|
<Text text="本村暂未点亮" fontConfig="primaryTitle" />
|
|
|
- <Text text="您可以申请成为志愿者,点亮村庄" fontConfig="contentText" />
|
|
|
+ <Text text="等你的加入,快来为家乡建设做贡献吧" fontConfig="contentText" />
|
|
|
<Height :height="20" />
|
|
|
<FlexRow gap="gap.lg">
|
|
|
- <FrameButton :text="isFollowed ? '已关注' : '先关注村庄'" @click="isFollowed ? onUnFollow() : onFollow()" />
|
|
|
+ <FrameButton :text="isFollowed ? '已关注' : '先关注村社'" @click="isFollowed ? onUnFollow() : onFollow()" />
|
|
|
<FrameButton text="去申请点亮" @click="handleLight" primary />
|
|
|
</FlexRow>
|
|
|
</FlexCol>
|
|
|
@@ -114,6 +124,8 @@ import HomeLargeTitle from '@/common/components/parts/HomeLargeTitle.vue';
|
|
|
import Around from './recommed/around.vue';
|
|
|
import FrameButton from '@/common/components/FrameButton.vue';
|
|
|
import JoinDialog from './dialogs/JoinDialog.vue';
|
|
|
+import BubbleTip from '@/components/feedback/BubbleTip.vue';
|
|
|
+import MemoryTimeOut from '@/components/composeabe/MemoryTimeOut';
|
|
|
|
|
|
const topTab = ref<'village' | 'around'>('village');
|
|
|
const tab = ref('card');
|
|
|
@@ -137,6 +149,18 @@ const isLight = computed(() => {
|
|
|
return villageStore.currentVillage?.isLight ?? false;
|
|
|
});
|
|
|
|
|
|
+const showFollowTipTimeout = new MemoryTimeOut('FollowTip', 1000 * 3600 * 2);//2h
|
|
|
+const showFollowTip = ref(false);
|
|
|
+
|
|
|
+function handleShowFollowTip() {
|
|
|
+ if (isFollowed.value && showFollowTipTimeout.isTimeout()) {
|
|
|
+ showFollowTip.value = true;
|
|
|
+ }
|
|
|
+}
|
|
|
+function handleCloseFollowTip() {
|
|
|
+ showFollowTipTimeout.recordTime();
|
|
|
+}
|
|
|
+
|
|
|
function handleLight() {
|
|
|
joinDialog.value?.show();
|
|
|
}
|
|
|
@@ -154,6 +178,10 @@ watch(() => villageStore.currentVillage, (newVal) => {
|
|
|
if (newVal && topTab.value === 'around')
|
|
|
topTab.value = 'village';
|
|
|
tab.value = 'card';
|
|
|
+ handleShowFollowTip();
|
|
|
+});
|
|
|
+watch(() => isFollowed.value, (newVal) => {
|
|
|
+ handleShowFollowTip();
|
|
|
});
|
|
|
|
|
|
onMounted(async () => {
|