浏览代码

📦 增加分享好友奖励记录

快乐的梦鱼 1 月之前
父节点
当前提交
b08ca275f0
共有 4 个文件被更改,包括 100 次插入0 次删除
  1. 25 0
      src/api/light/TreeApi.ts
  2. 8 0
      src/pages.json
  3. 66 0
      src/pages/home/village/task/share-reward.vue
  4. 1 0
      src/pages/user/index.vue

+ 25 - 0
src/api/light/TreeApi.ts

@@ -964,6 +964,31 @@ export class TreeApi extends AppServerRequestModule<DataModel> {
     });
     return transformDataModel<FruitDepositOrderConfirm>(FruitDepositOrderConfirm, res.requireData());
   }
+
+  /** 分享奖励列表 */
+  async getShareRewardList(options?: {
+    page?: number;
+    pageSize?: number;
+    keywords?: string;
+    villageId?: number;
+  }) {
+    const res = await this.post<PagedGrowthResponse>(
+      '/village/growth/shareRewardList',
+      '分享奖励列表',
+      {
+        page: options?.page,
+        pageSize: options?.pageSize,
+        keywords: options?.keywords,
+        village_id: options?.villageId,
+      },
+    );
+    return this.parsePagedList<GrowthTaskItem>(
+      GrowthTaskItem,
+      res.requireData(),
+      '成长任务',
+    );
+  }
+
 }
 
 export default new TreeApi();

+ 8 - 0
src/pages.json

@@ -181,6 +181,14 @@
       }
     },
     {
+      "path": "pages/home/village/task/share-reward",
+      "style": {
+        "navigationBarTitleText": "分享好友奖励",
+        "navigationStyle": "custom",
+        "enablePullDownRefresh": true
+      }
+    },
+    {
       "path": "pages/home/village/task/archivement",
       "style": {
         "navigationBarTitleText": "我的成就",

+ 66 - 0
src/pages/home/village/task/share-reward.vue

@@ -0,0 +1,66 @@
+<template>
+  <CommonTopBanner title="分享好友奖励">
+    <FlexCol padding="padding.md">
+      <SimplePageListLoader :loader="listLoader">
+        <FlexCol gap="gap.md">
+          <BoxMid
+            v-for="item in listLoader.list.value"
+            :key="item.id" 
+            direction="row"
+            :padding="[16, 30]"
+          >
+            <Touchable
+              :gap="20"
+              :padding="[15,20]"
+              touchable
+              flex="1"
+              direction="row"
+              justify="space-between"
+              align="center"
+            >
+              <FlexRow gap="gap.md" align="center">
+                <Icon :icon="item.image || 'space'" :size="100" />
+                <Width :size="5" />
+                <FlexCol gap="gap.md">
+                  <Text fontConfig="lightImportantTitle" fontFamily="SongtiSCBlack">{{ item.name }}</Text>
+                  <Text fontSize="fontSize.sm" :text="item.desc" />
+                </FlexCol>
+              </FlexRow>
+              <FlexCol gap="gap.xl" align="center">
+                <Button v-if="item.rewardFruit > 0" icon="https://xy.wenlvti.net/app_static/images/village/IconFruit.png" size="mini" :text="`+${item.rewardFruit}乡源果`" />
+                <Button v-if="item.rewardLight > 0" icon="https://xy.wenlvti.net/app_static/images/village/IconLight.png" size="mini" :text="`+${item.rewardLight}乡源光`" />
+                <Button v-if="item.rewardWater > 0" icon="https://xy.wenlvti.net/app_static/images/village/IconWatering.png" size="mini" :text="`+${item.rewardWater}浇水次数`" />
+              </FlexCol>
+            </Touchable>
+          </BoxMid>
+        </FlexCol>
+      </SimplePageListLoader>
+    </FlexCol>
+  </CommonTopBanner>
+</template>
+
+<script setup lang="ts">
+import { useSimplePageListLoader } from '@/components/composeabe/loader/SimplePageListLoader';
+import SimplePageListLoader from '@/components/loader/SimplePageListLoader.vue';
+import FlexCol from '@/components/layout/FlexCol.vue';
+import Text from '@/components/basic/Text.vue';
+import CommonTopBanner from '@/common/components/CommonTopBanner.vue';
+import TreeApi from '@/api/light/TreeApi';
+import BoxMid from '@/common/components/box/BoxMid.vue';
+import Touchable from '@/components/feedback/Touchable.vue';
+import FlexRow from '@/components/layout/FlexRow.vue';
+import Button from '@/components/basic/Button.vue';
+import Icon from '@/components/basic/Icon.vue';
+import Width from '@/components/layout/space/Width.vue';
+
+const listLoader = useSimplePageListLoader(20, async (page, pageSize) => {
+  const res = await TreeApi.getTaskList({
+    page,
+    pageSize,
+  });
+  return {
+    list: res.list,
+    total: res.total,
+  };
+});
+</script>

+ 1 - 0
src/pages/user/index.vue

@@ -74,6 +74,7 @@
           villageVolunteerId: volunteerInfo?.id || 0 
         })" />
         <Cell icon="https://xy.wenlvti.net/app_static/images/mine/IconMyRecord.png" title="赐福记录" showArrow touchable @click="requireLogin(() => navTo('/pages/home/village/bless/my-orders'), '登录后查看我的福泽记录哦')" />
+        <Cell icon="share" :iconProps="{ color: '#833e27' }" title="分享记录" showArrow touchable @click="navTo('/pages/home/village/task/share-reward')" />
         <Cell icon="https://xy.wenlvti.net/app_static/images/mine/IconMyReward.png" title="兑换记录" showArrow touchable @click="goStoreList" />
         <Cell icon="https://xy.wenlvti.net/app_static/images/mine/IconAbout.png" title="关于我们" showArrow touchable @click="navTo('/pages/home/about/about')" />
         <button open-type="contact" class="remove-button-style">