Browse Source

refactor(mine): 使用组合式请求获取任务数据

EvilDragon 5 months ago
parent
commit
9636acfeef

+ 11 - 0
packages/app/src/core/libs/requests.ts

@@ -251,6 +251,17 @@ export const getCircleReviewUpvotes = (query: { circleId: string; reviewId?: str
   httpGet('/app-api/member/circle-review-upvote/page', query)
 export const getReviewReplay = (query: { id: string }) =>
   httpGet('/app-api/member/circle-review/getReviewReplay', query)
+export const getTasks = (query) =>
+  httpGet<{
+    list: {
+      id: number
+      taskKey: string
+      taskValue: string
+      createTime: string
+      sort: number
+      status: number
+    }[]
+  }>('/app-api/basicsetting/set-task-center/page', query)
 export const refreshToken = (refreshToken: string) =>
   httpPost<any>('/app-api/member/auth/refresh-token', {}, { refreshToken })
 export const httpGetMock = <T>(data: T) =>

+ 8 - 0
packages/app/src/core/models/moment.ts

@@ -43,3 +43,11 @@ export interface Comment {
   upvote: boolean
   ownDel: boolean
 }
+export interface Task {
+  id: number
+  taskKey: string
+  taskValue: string
+  createTime: string
+  sort: number
+  status: number
+}

+ 1 - 1
packages/app/src/layouts/default.vue

@@ -1,5 +1,5 @@
 <script lang="ts" setup>
-import { defaultThemeVars } from '@/core/themes/default'
+import { defaultThemeVars } from '../core/themes/default'
 </script>
 <template>
   <wd-config-provider

+ 0 - 2
packages/app/src/pages/home/index.vue

@@ -13,8 +13,6 @@
 import Card from '@/components/card.vue'
 import HotActivity from '@/components/hot-activity.vue'
 import MomentItem from '@/components/moment-item.vue'
-import Scaner from '@/components/scaner.vue'
-import TiltedButton from '@/components/tilted-button.vue'
 import useRequest from '../../hooks/useRequest'
 import dayjs from 'dayjs'
 import Menus from './components/menus.vue'

+ 7 - 12
packages/app/src/pages/mine/components/tasks-card.vue

@@ -1,18 +1,13 @@
 <script setup lang="ts">
-import { taskCenterBg } from '@/core/libs/pngs'
+import { Task } from '../../../core/models/moment'
+import { taskCenterBg } from '../../../core/libs/pngs'
 defineProps({
   customClass: {
     type: String,
     default: '',
   },
   items: {
-    type: Array as PropType<
-      {
-        title: string
-        score: number
-        completed?: boolean
-      }[]
-    >,
+    type: Array as PropType<Task[]>,
     default: () => [],
   },
 })
@@ -41,18 +36,18 @@ const styles = ref({
           任务中心
         </div>
         <div class="flex-grow mt-4 overflow-auto">
-          <template v-for="({ title, score, completed }, i) in items" :key="i">
+          <template v-for="({ taskKey, taskValue, status }, i) in items" :key="i">
             <div class="flex items-center my-6">
               <div class="text-black/90 text-sm font-normal font-['PingFang SC'] leading-normal">
-                {{ title }}
+                {{ taskKey }}
               </div>
               <div
                 class="ml-1 text-[#dc753a] text-xs font-normal font-['PingFang SC'] leading-normal"
               >
-                +{{ score }}积分
+                +{{ taskValue }}积分
               </div>
               <div class="flex-1"></div>
-              <wd-button type="info" plain size="small" :disabled="completed">去完成</wd-button>
+              <wd-button type="info" plain size="small" :disabled="status">去完成</wd-button>
             </div>
           </template>
         </div>

+ 9 - 12
packages/app/src/pages/mine/index.vue

@@ -7,10 +7,10 @@ import { onMounted, ref } from 'vue'
 import CardMenu from '@/components/card-menu.vue'
 import SectionHeading from '@/components/section-heading.vue'
 import StartMenuButton from '@/components/start-menu-button.vue'
-import { designer, settled, treaty, vipBg } from '@/core/libs/pngs'
-import { integral, coupon, order, agent, setting, vip, scan } from '@/core/libs/svgs'
-import { getMemberUserInfo } from '@/core/libs/requests'
-import { useUserStore } from '@/store'
+import { designer, settled, treaty, vipBg } from '../../core/libs/pngs'
+import { integral, coupon, order, agent, setting, vip, scan } from '../../core/libs/svgs'
+import { getMemberUserInfo, getTasks } from '../../core/libs/requests'
+import { useUserStore } from '../../store'
 import { storeToRefs } from 'pinia'
 import { isEmpty } from 'radash'
 import TasksCard from './components/tasks-card.vue'
@@ -19,6 +19,9 @@ const userStore = useUserStore()
 const { isLogined, userInfo } = storeToRefs(userStore)
 const { setUserInfo } = userStore
 const { data, run } = useRequest(getMemberUserInfo)
+const { data: taskData, run: getTaskData } = useRequest(() => getTasks({}), {
+  initialData: { list: [] },
+})
 const menus = ref([
   { title: '积分明细', icon: integral },
   { title: '优惠券包', icon: coupon },
@@ -49,13 +52,6 @@ const pieces = ref([
     iconSize: 44,
   },
 ])
-const tasks = ref([
-  { title: '到店打卡获取积分', score: 150, completed: true },
-  { title: '到店打卡获取积分', score: 150 },
-  { title: '到店打卡获取积分', score: 150 },
-  { title: '到店打卡获取积分', score: 150 },
-  { title: '到店打卡获取积分', score: 150 },
-])
 const avatar = computed(() =>
   !isEmpty(userInfo.value.avatar) ? userInfo.value.avatar : 'https://via.placeholder.com/72x72',
 )
@@ -82,6 +78,7 @@ const handleToHomepage = () => {
 onMounted(async () => {
   // await run()
   // console.log(data.value)
+  await getTaskData()
 })
 </script>
 
@@ -208,7 +205,7 @@ onMounted(async () => {
           </div>
         </template>
       </div>
-      <TasksCard custom-class="my-6" :items="tasks"></TasksCard>
+      <TasksCard custom-class="my-6" :items="taskData.list"></TasksCard>
       <SectionHeading custom-class="my-6" title="和筑巢荟一起共同成长"></SectionHeading>
       <CardMenu :items="pieces" custom-class="grid-cols-2" />
     </view>