Переглянути джерело

📦 按要求增加推广亮乡源任务

快乐的梦鱼 1 місяць тому
батько
коміт
c3316786fa

+ 5 - 0
src/api/system/ConfigurationApi.ts

@@ -29,6 +29,11 @@ export interface IConfigurationItem {
     dig: IBannerItem;
     discover: IBannerItem;
   },
+  ShareAppTempEntranceContent: {
+    content: string;
+    images: string[];
+    title: string;
+  },
   tree: {
     fruitImage: string;
     backgroundImage: string;

+ 37 - 4
src/pages/home/village/task/index.vue

@@ -19,7 +19,7 @@
               align="center"
             >
               <FlexRow gap="gap.md" align="center">
-                <Icon :icon="item.image" :size="100" />
+                <Icon :icon="item.image || 'space'" :size="100" />
                 <Width :size="5" />
                 <FlexCol gap="gap.md">
                   <Text fontConfig="lightImportantTitle" fontFamily="SongtiSCBlack">{{ item.name }}</Text>
@@ -50,8 +50,24 @@
                     width="100rpx"
                     size="midium"
                   />
-                  <Text v-if="item.limitType === 'day' && item.limitNum > 0" fontConfig="subText">今日可完成{{ item.limitNum }}次</Text>
-                  <Text v-else-if="item.limitType === 'total' && item.limitNum > 0" fontConfig="subText">还可完成{{ item.limitNum }}次</Text>
+                  <Text 
+                    v-if="item.limitType === 'day' && item.limitNum > 0" 
+                    fontConfig="subText" 
+                    fontSize="fontSize.sm"
+                    textAlign="right"
+                    :wrap="false"
+                  >
+                    今日可做{{ item.limitNum }}次
+                  </Text>
+                  <Text 
+                    v-else-if="item.limitType === 'total' && item.limitNum > 0" 
+                    fontConfig="subText" 
+                    fontSize="fontSize.sm"
+                    textAlign="right"
+                    :wrap="false"
+                  >
+                    还可完成{{ item.limitNum }}次
+                  </Text>
                 </FlexCol>
               </FlexRow>
             </Touchable>
@@ -65,6 +81,8 @@
 <script setup lang="ts">
 import { useLoadQuerys } from '@/components/composeabe/LoadQuerys';
 import { useSimplePageListLoader } from '@/components/composeabe/loader/SimplePageListLoader';
+import { backAndCallOnPageBack, navTo } from '@/components/utils/PageAction';
+import { injectAppConfiguration } from '@/api/system/useAppConfiguration';
 import SimplePageListLoader from '@/components/loader/SimplePageListLoader.vue';
 import FlexCol from '@/components/layout/FlexCol.vue';
 import Text from '@/components/basic/Text.vue';
@@ -75,7 +93,6 @@ import Touchable from '@/components/feedback/Touchable.vue';
 import FlexRow from '@/components/layout/FlexRow.vue';
 import FrameButton from '@/common/components/FrameButton.vue';
 import Button from '@/components/basic/Button.vue';
-import { backAndCallOnPageBack } from '@/components/utils/PageAction';
 import Icon from '@/components/basic/Icon.vue';
 import Width from '@/components/layout/space/Width.vue';
 
@@ -85,6 +102,8 @@ const { querys } = useLoadQuerys({
   listLoader.load();
 });
 
+const appConfiguration = injectAppConfiguration();
+
 const listLoader = useSimplePageListLoader(20, async (page, pageSize) => {
   const res = await TreeApi.getTaskList({
     page,
@@ -107,6 +126,20 @@ function handleDoTask(item: GrowthTaskItem) {
         taskType: item.taskType,
       });
       break;
+    default: 
+      switch (item.taskKey) {
+        case 'share_app':
+          uni.setStorageSync('ShareAppTempEntranceContent', {
+            content: appConfiguration.value.ShareAppTempEntranceContent.content || '',
+            images: appConfiguration.value.ShareAppTempEntranceContent.images || [],
+            title: appConfiguration.value.ShareAppTempEntranceContent.title || '',
+          });
+          navTo('/pages/home/chat/dependent/post/publish', {
+            entranceContent: 'ShareAppTempEntranceContent',
+          });
+          break;
+      }
+      break;
   }
 }
 </script>

+ 10 - 6
src/pages/index.vue

@@ -56,6 +56,7 @@ import { useTheme } from '@/components/theme/ThemeDefine';
 import { useLoadQuerys } from '@/components/composeabe/LoadQuerys';
 import { useVillageStore } from '@/store/village';
 import { useAuthStore } from '@/store/auth';
+import { useShareLink } from './home/composeabe/ShareLink';
 import { isDevEnv } from '@/common/config/AppCofig';
 import { navTo } from '@/components/utils/PageAction';
 import { waitTimeOut } from '@imengyu/imengyu-utils';
@@ -79,6 +80,7 @@ const themeContext = useTheme();
 const villageStore = useVillageStore();
 const authStore = useAuthStore();
 const appConfiguration = injectAppConfiguration();
+const { recommendUserId, setRecommendUserId } = useShareLink();
 const currentScrollTop = ref(0);
 
 const backToTop = ref<InstanceType<typeof BackToTop>>();
@@ -98,23 +100,25 @@ const { querys } = useLoadQuerys({
     switch (sp[0]) {
       case 'invg':
         //处理从二维码进入村社情况
-        if (sp.length > 1) {
+        if (sp.length >= 2)
           querys.value.villageId = Number(sp[1]);
-        }
+        if (sp.length >= 3)
+          setRecommendUserId(Number(sp[2]));
         break;
       case 'offical':
         //处理从推广文章返回跳转小程序点击量情况
-        if (sp.length >= 2) {
+        if (sp.length >= 3) {
           OfficialApi.traceOfficalLogApi('offical_card_clickback', {
             user_id: Number(sp[1]),
             wechat_content_id: Number(sp[2]),
           });
+          setRecommendUserId(Number(sp[1]));
         }
         break;
     }
   }
   if (_querys.userId) {
-    villageStore.setShareFromVillageUserId(_querys.userId);
+    setRecommendUserId(Number(_querys.userId));
   }
   //普通分享进入村社情况
   if (querys.value.villageId) {
@@ -139,13 +143,13 @@ function getShareVillageInfo() {
     const myNickName = villageInfoInList?.villageNickname || authStore.userInfo?.nickname || authStore.userInfo?.username || '老友';
     return {
       title: `同乡 ${myNickName} 邀您回 ${villageStore.currentVillage.name} 看看,心系故土,携手共建美好家乡`,
-      path: `/pages/index?villageId=${villageStore.currentVillage.id}&userId=${authStore.userInfo?.id || 0}`,
+      path: `/pages/index?scene=invg:${villageStore.currentVillage.id}:${authStore.userInfo?.id || 0}`,
       imageUrl: villageStore.currentVillage.image || appConfiguration.value.sharePost.villageDefault,
     }
   }
   return {
     title: '村社文化资源挖掘平台',
-    path: '/pages/index',
+    path: '/pages/index?userId=' + (authStore.userId || 0),
     imageUrl: appConfiguration.value.sharePost.default,
   };
 }