Explorar o código

feat(merchant/tasks): 渠道端任务列表页面

EvilDragon hai 5 meses
pai
achega
25cc824d6a
Modificáronse 24 ficheiros con 110 adicións e 1422 borrados
  1. 2 75
      packages/merchant/src/pages.json
  2. 0 22
      packages/merchant/src/pages/home/classmates-detail/index.vue
  3. 0 20
      packages/merchant/src/pages/home/classmates/index.vue
  4. 0 54
      packages/merchant/src/pages/home/components/article.vue
  5. 0 63
      packages/merchant/src/pages/home/components/class-item.vue
  6. 0 85
      packages/merchant/src/pages/home/components/comment-item.vue
  7. 0 60
      packages/merchant/src/pages/home/components/elegant-info-card.vue
  8. 0 20
      packages/merchant/src/pages/home/components/info-card.vue
  9. 0 60
      packages/merchant/src/pages/home/components/menus.vue
  10. 0 53
      packages/merchant/src/pages/home/components/offline-activity-item.vue
  11. 0 69
      packages/merchant/src/pages/home/components/register-card.vue
  12. 0 88
      packages/merchant/src/pages/home/components/schedule-card.vue
  13. 1 1
      packages/merchant/src/pages/home/index.vue
  14. 0 46
      packages/merchant/src/pages/home/mall/index.vue
  15. 0 220
      packages/merchant/src/pages/home/moment/index.vue
  16. 0 45
      packages/merchant/src/pages/home/offline-activity/index.vue
  17. 0 118
      packages/merchant/src/pages/home/schedule/index.vue
  18. 0 78
      packages/merchant/src/pages/home/spread/index.vue
  19. 0 89
      packages/merchant/src/pages/home/study-tour/components/study-tour-card.vue
  20. 0 12
      packages/merchant/src/pages/home/study-tour/detail.vue
  21. 0 105
      packages/merchant/src/pages/home/study-tour/index.vue
  22. 0 29
      packages/merchant/src/pages/home/study-tour/list.vue
  23. 106 0
      packages/merchant/src/pages/home/tasks/index.vue
  24. 1 10
      packages/merchant/src/types/uni-pages.d.ts

+ 2 - 75
packages/merchant/src/pages.json

@@ -107,83 +107,10 @@
       }
     },
     {
-      "path": "pages/home/classmates/index",
+      "path": "pages/home/tasks/index",
       "type": "page",
       "style": {
-        "navigationBarTitleText": "同学荟",
-        "navigationBarBackgroundColor": "#fff"
-      }
-    },
-    {
-      "path": "pages/home/classmates-detail/index",
-      "type": "page",
-      "style": {
-        "navigationBarTitleText": "详情",
-        "navigationBarBackgroundColor": "#fff"
-      }
-    },
-    {
-      "path": "pages/home/mall/index",
-      "type": "page",
-      "style": {
-        "navigationBarTitleText": "品质商城",
-        "navigationBarBackgroundColor": "#fff"
-      }
-    },
-    {
-      "path": "pages/home/moment/index",
-      "type": "page",
-      "style": {
-        "navigationBarTitleText": "详情",
-        "navigationBarBackgroundColor": "#fff"
-      }
-    },
-    {
-      "path": "pages/home/offline-activity/index",
-      "type": "page",
-      "style": {
-        "navigationBarTitleText": "线下活动",
-        "navigationBarBackgroundColor": "#fff"
-      }
-    },
-    {
-      "path": "pages/home/schedule/index",
-      "type": "page",
-      "style": {
-        "navigationStyle": "custom",
-        "navigationBarTitleText": "游学日程"
-      }
-    },
-    {
-      "path": "pages/home/spread/index",
-      "type": "page",
-      "style": {
-        "navigationBarTitleText": "设计传播",
-        "navigationBarBackgroundColor": "#fff"
-      }
-    },
-    {
-      "path": "pages/home/study-tour/detail",
-      "type": "page",
-      "style": {
-        "navigationBarTitleText": "游学计划",
-        "navigationBarBackgroundColor": "#fff",
-        "navigationStyle": "custom"
-      }
-    },
-    {
-      "path": "pages/home/study-tour/index",
-      "type": "page",
-      "style": {
-        "navigationBarTitleText": "设计游学",
-        "navigationBarBackgroundColor": "#fff"
-      }
-    },
-    {
-      "path": "pages/home/study-tour/list",
-      "type": "page",
-      "style": {
-        "navigationBarTitleText": "游学计划",
+        "navigationBarTitleText": "全部任务",
         "navigationBarBackgroundColor": "#fff"
       }
     },

+ 0 - 22
packages/merchant/src/pages/home/classmates-detail/index.vue

@@ -1,22 +0,0 @@
-<route lang="yaml">
-style:
-  navigationBarTitleText: '详情'
-  navigationBarBackgroundColor: '#fff'
-</route>
-<script setup lang="ts">
-import { getClassmate, getMoment } from '@/core/libs/requests'
-import Article from '../components/article.vue'
-// import { Article } from '@pandora/ui'
-
-const { data, run } = useRequest(getClassmate)
-onMounted(run)
-</script>
-<template>
-  <!-- <view> -->
-  <Article :title="data?.title" :content="data?.content">
-    <template #avatar>1111</template>
-  </Article>
-
-  <!-- <SButton></SButton> -->
-  <!-- </view> -->
-</template>

+ 0 - 20
packages/merchant/src/pages/home/classmates/index.vue

@@ -1,20 +0,0 @@
-<route lang="yaml">
-style:
-  navigationBarTitleText: 同学荟
-  navigationBarBackgroundColor: '#fff'
-</route>
-<script setup lang="ts">
-import { getClassmates } from '@/core/libs/requests'
-import ClassItem from '../components/class-item.vue'
-
-const { data, run } = useRequest(getClassmates)
-onMounted(run)
-</script>
-<template>
-  <view class="mx-3.5">
-    <template v-for="it of data" :key="it.id">
-      <ClassItem></ClassItem>
-    </template>
-    <wd-loadmore custom-class="loadmore" state="finished" />
-  </view>
-</template>

+ 0 - 54
packages/merchant/src/pages/home/components/article.vue

@@ -1,54 +0,0 @@
-<script setup lang="ts">
-import dayjs from 'dayjs'
-
-defineProps({
-  title: {
-    type: String,
-    default: '',
-  },
-  author: {
-    type: Object,
-    default: () => ({ name: '匿名' }),
-  },
-  createdAt: {
-    type: Date,
-    default: () => new Date(),
-  },
-  viewNum: {
-    type: Number,
-    default: 0,
-  },
-  content: {
-    type: String,
-    default: '<div>1111</div>',
-  },
-})
-</script>
-<template>
-  <div class="px-3.5 bg-white flex-grow">
-    <div class="text-black text-xl font-normal font-['PingFang SC'] leading-loose">
-      {{ title }}
-    </div>
-    <div class="flex items-center my-5">
-      <div class="w-7 h-7 overflow-hidden roudnded-full">
-        <slot name="avatar"></slot>
-      </div>
-      <div class="flex-1 ml-1">
-        <div class="text-black/90 text-sm font-normal font-['PingFang SC'] leading-normal">
-          {{ author.name }}
-        </div>
-        <div class="text-black/40 text-xs font-normal font-['PingFang SC'] leading-normal">
-          编辑于
-          {{ dayjs(createdAt).format('YYYY/MM/DD') }}
-        </div>
-      </div>
-      <div class="flex items-center">
-        <slot name="viewLeft"></slot>
-        <div class="text-black/40 text-xs font-normal font-['PingFang SC'] leading-normal">
-          {{ viewNum }}
-        </div>
-      </div>
-    </div>
-    <div v-html="content"></div>
-  </div>
-</template>

+ 0 - 63
packages/merchant/src/pages/home/components/class-item.vue

@@ -1,63 +0,0 @@
-<script lang="ts" setup>
-import { frame, peoples, polygon16 } from '@/core/libs/svgs'
-
-defineProps({
-  customClass: {
-    type: String,
-    default: () => '',
-  },
-  title: {
-    type: String,
-    default: () => '',
-  },
-})
-const handleClick = async () => {
-  await uni.navigateTo({ url: '/pages/home/classmates-detail/index' })
-}
-</script>
-<template>
-  <view class="my-6 relative h-43 flex items-end" :class="[customClass]" @click="handleClick">
-    <view class="absolute left-0 bottom-0 rounded-2xl overflow-hidden">
-      <wd-img
-        custom-class="vertical-bottom"
-        width="136"
-        height="172"
-        mode="scaleToFill"
-        src="https://via.placeholder.com/136x172"
-      />
-      <div
-        class="absolute left-2.5 bottom-2.5 px-2 py-1 bg-black/30 rounded-[20px] backdrop-blur-[10px]"
-      >
-        <div class="text-white text-[10px] font-normal font-['PingFang SC'] leading-relaxed">
-          米兰2班
-        </div>
-      </div>
-    </view>
-    <div
-      class="w-full h-[145px] pl-39 pt-6 pr-6 pb-6 flex flex-col box-border bg-white rounded-2xl shadow"
-    >
-      <div class="text-black/90 text-base font-normal font-['PingFang SC'] leading-normal">
-        2024届米兰国际家具展
-      </div>
-
-      <view
-        class="flex items-center justify-between text-black/60 text-sm font-normal font-['PingFang SC'] leading-[34px]"
-      >
-        <wd-img width="18" height="18" :src="frame"></wd-img>
-        <div class="">07.15</div>
-        <wd-img custom-class="mx-1" width="5" height="5" :src="polygon16" />
-        <div>08.10</div>
-        <view class="flex-1"></view>
-        <wd-img :src="peoples" width="16" height="16"></wd-img>
-        <div class="ml-1">45</div>
-      </view>
-      <view class="flex-1"></view>
-      <view
-        class="flex justify-between text-black/40 text-sm font-normal font-['PingFang SC'] leading-[34px]"
-      >
-        <div class="">班长:李威</div>
-        <div class="">领队:王艺臻</div>
-      </view>
-    </div>
-  </view>
-</template>

+ 0 - 85
packages/merchant/src/pages/home/components/comment-item.vue

@@ -1,85 +0,0 @@
-<script setup lang="ts">
-import { useUserStore } from '../../../store'
-import {
-  cancelCircleReviewUpvote,
-  createCircleReviewUpvote,
-  getReviewReplay,
-} from '../../../core/libs/requests'
-import { thumbsUp, thumbsUpActive } from '../../../core/libs/svgs'
-import { Comment } from '../../../core/models/moment'
-import { dayjs } from 'wot-design-uni'
-import { storeToRefs } from 'pinia'
-
-const props = defineProps({
-  options: {
-    type: Object as PropType<Comment>,
-    default: () => ({}),
-  },
-  isChild: {
-    type: Boolean,
-    default: false,
-  },
-})
-const emits = defineEmits<{ upvote: [] }>()
-const userStore = useUserStore()
-const { userInfo } = storeToRefs(userStore)
-const handleUpvote = async () => {
-  if (!props.options.upvote) {
-    const { code, msg } = await createCircleReviewUpvote({
-      circleId: props.options.circleId,
-      userId: userInfo.value.userId,
-      userName: userInfo.value.nickname,
-      reviewId: props.options.id,
-    })
-    code === 0 && uni.showToast({ title: '点赞成功', icon: 'none' })
-  } else {
-    const { code, msg } = await cancelCircleReviewUpvote({
-      circleId: props.options.circleId.toString(),
-      userId: userInfo.value.userId.toString(),
-      reviewId: props.options.id.toString(),
-    })
-    code === 0 && uni.showToast({ title: '取消点赞成功', icon: 'none' })
-  }
-  emits('upvote')
-}
-onMounted(async () => {
-  const { data } = await getReviewReplay({ id: props.options.id.toString() })
-  console.log(data)
-})
-</script>
-<template>
-  <view class="grid grid-cols-[28px_1fr_28px] gap-2.5" :class="isChild ? 'ml-9' : ''">
-    <wd-img
-      custom-class="rounded-full overflow-hidden col-start-1 row-start-1"
-      width="28"
-      height="28"
-      :src="''"
-    />
-    <view class="col-start-2 row-start-1">
-      <div class="text-black/40 text-xs font-normal font-['PingFang SC'] leading-[10.18px]">
-        {{ options.userName }}
-      </div>
-      <div class="my-3 text-black/90 text-sm font-normal font-['PingFang SC'] leading-[10.18px]">
-        {{ options.reviewContent }}
-      </div>
-      <view class="flex items-center mt--2">
-        <div class="text-black/30 text-[10px] font-normal font-['PingFang SC'] leading-[10.18px]">
-          {{ dayjs(options.reviewTime).format('YYYY/MM/DD') }}
-        </div>
-        <view class="ml-3">
-          <wd-button custom-class="text-2.5!" type="text">回复</wd-button>
-        </view>
-      </view>
-    </view>
-    <view class="col-start-3 row-start-1 flex flex-col items-center" @click="handleUpvote">
-      <div class="w-[18px] h-[18px] relative">
-        <wd-img :src="options.upvote ? thumbsUpActive : thumbsUp" width="18" height="18"></wd-img>
-      </div>
-      <div
-        class="mt-1.5 text-black/40 text-[10px] font-normal font-['PingFang SC'] leading-[10.18px]"
-      >
-        {{ options.upvoteCount || 0 }}
-      </div>
-    </view>
-  </view>
-</template>

+ 0 - 60
packages/merchant/src/pages/home/components/elegant-info-card.vue

@@ -1,60 +0,0 @@
-<script lang="ts" setup>
-import { frame, peoples, polygon16 } from '@/core/libs/svgs'
-
-defineProps({
-  customClass: {
-    type: String,
-    default: () => '',
-  },
-  title: {
-    type: String,
-    default: () => '',
-  },
-})
-</script>
-<template>
-  <view class="my-6 relative h-43 flex items-end" :class="[customClass]">
-    <view class="absolute left-0 bottom-0 rounded-2xl overflow-hidden">
-      <wd-img
-        custom-class="vertical-bottom"
-        width="136"
-        height="172"
-        mode="scaleToFill"
-        src="https://via.placeholder.com/136x172"
-      />
-      <div
-        class="absolute left-2.5 bottom-2.5 px-2 py-1 bg-black/30 rounded-[20px] backdrop-blur-[10px]"
-      >
-        <div class="text-white text-[10px] font-normal font-['PingFang SC'] leading-relaxed">
-          米兰2班
-        </div>
-      </div>
-    </view>
-    <div
-      class="w-full h-[145px] pl-39 pt-6 pr-6 pb-6 flex flex-col box-border bg-white rounded-2xl shadow"
-    >
-      <div class="text-black/90 text-base font-normal font-['PingFang SC'] leading-normal">
-        2024届米兰国际家具展
-      </div>
-
-      <view
-        class="flex items-center justify-between text-black/60 text-sm font-normal font-['PingFang SC'] leading-[34px]"
-      >
-        <wd-img width="18" height="18" :src="frame"></wd-img>
-        <div class="">07.15</div>
-        <wd-img custom-class="mx-1" width="5" height="5" :src="polygon16" />
-        <div>08.10</div>
-        <view class="flex-1"></view>
-        <wd-img :src="peoples" width="16" height="16"></wd-img>
-        <div class="ml-1">45</div>
-      </view>
-      <view class="flex-1"></view>
-      <view
-        class="flex justify-between text-black/40 text-sm font-normal font-['PingFang SC'] leading-[34px]"
-      >
-        <div class="">班长:李威</div>
-        <div class="">领队:王艺臻</div>
-      </view>
-    </div>
-  </view>
-</template>

+ 0 - 20
packages/merchant/src/pages/home/components/info-card.vue

@@ -1,20 +0,0 @@
-<script setup lang="ts">
-import Card from '@/components/card.vue'
-
-const props = defineProps<{
-  title: string
-  desc: string
-}>()
-</script>
-<template>
-  <card custom-class="my-6">
-    <div class="my-7.5 text-black text-xl font-normal font-['PingFang SC'] leading-[10.18px]">
-      {{ props.title }}
-    </div>
-    <div
-      class="w-[319px] h-[264px] text-justify text-black/40 text-base font-normal font-['PingFang SC'] leading-relaxed"
-    >
-      {{ props.desc }}
-    </div>
-  </card>
-</template>

+ 0 - 60
packages/merchant/src/pages/home/components/menus.vue

@@ -1,60 +0,0 @@
-<script lang="ts" setup>
-import Card from '@/components/card.vue'
-
-const items = [
-  {
-    id: 1,
-    title: '设计游学',
-    desc: '游学项目',
-    path: '/pages/home/study-tour/index',
-    icon: '/static/svgs/iconly-glass-edit.svg',
-  },
-  {
-    id: 2,
-    title: '线下活动',
-    desc: '骑行俱乐部',
-    path: '/pages/home/offline-activity/index',
-    icon: '/static/svgs/iconly-glass-star.svg',
-  },
-  {
-    id: 3,
-    title: '设计传播',
-    desc: '运营推广',
-    path: '/pages/home/spread/index',
-    icon: '/static/svgs/iconly-glass-play.svg',
-  },
-  {
-    id: 4,
-    title: '品质商城',
-    desc: '所需周边',
-    path: '/pages/home/mall/index',
-    icon: '/static/svgs/message.svg',
-  },
-]
-const handleClick = (path: string) => {
-  uni.navigateTo({ url: path })
-}
-</script>
-<template>
-  <view class="w-full px-3.5 box-border grid grid-cols-2 grid-gap-4 my-6">
-    <template v-for="it of items" :key="it.id">
-      <view class="" @click="handleClick(it.path)">
-        <Card>
-          <view class="flex justify-between">
-            <view class="text-[rgba(0,0,0,0.85)] text-4 font-400 line-height-2.5">
-              <view class="my-0.75">{{ it.title }}</view>
-              <view class="text-[rgba(0,0,0,0.45)] text-3.5 my-2.5">{{ it.desc }}</view>
-            </view>
-            <view class="">
-              <wd-img
-                custom-class="w-10.5 h-10.5 mt-3.5 vertical-bottom"
-                :src="it.icon"
-                mode="scaleToFill"
-              ></wd-img>
-            </view>
-          </view>
-        </Card>
-      </view>
-    </template>
-  </view>
-</template>

+ 0 - 53
packages/merchant/src/pages/home/components/offline-activity-item.vue

@@ -1,53 +0,0 @@
-<script setup lang="ts">
-import Card from '@/components/card.vue'
-import { frame } from '@/core/libs/svgs'
-
-defineProps({
-  customClass: {
-    type: String,
-    default: () => '',
-  },
-})
-</script>
-<template>
-  <card :custom-class="[customClass, 'p-0!']">
-    <view class="relative">
-      <img
-        class="w-[347px] h-[202px] rounded-tl-2xl rounded-tr-2xl vertical-bottom"
-        src="https://via.placeholder.com/347x202"
-      />
-      <div class="absolute top-4 right-4 px-2.5 bg-black/30 rounded-[20px] backdrop-blur-[15px]">
-        <div class="text-white text-xs font-normal font-['PingFang SC'] leading-relaxed">
-          已结束
-        </div>
-      </div>
-      <div
-        class="absolute top-4 left-4 px-2.5 rounded-md border border-solid border-white justify-center items-center gap-2.5 inline-flex"
-      >
-        <div class="text-white text-xs font-normal font-['PingFang SC'] leading-normal">第18期</div>
-      </div>
-    </view>
-    <div class="p-5 bg-white rounded-bl-[20px] rounded-br-[20px] shadow">
-      <div
-        class="w-[244px] text-black/40 text-base font-normal font-['PingFang SC'] leading-normal"
-      >
-        白衣剑客·这是格斗的“芭蕾”
-      </div>
-      <view class="flex items-center mb-4">
-        <wd-img custom-class="vertical-bottom" :src="frame" width="20" height="20"></wd-img>
-        <div class="text-black/60 text-sm font-normal font-['PingFang SC'] leading-[34px]">
-          07.15 14:20
-        </div>
-      </view>
-      <view class="flex">
-        <div
-          class="inline-block px-2.5 rounded-md border border-solid border-black/30 backdrop-blur-[6px] flex justify-center items-center"
-        >
-          <div class="text-black/60 text-xs font-normal font-['PingFang SC'] leading-normal">
-            举办方:筑巢荟
-          </div>
-        </div>
-      </view>
-    </div>
-  </card>
-</template>

+ 0 - 69
packages/merchant/src/pages/home/components/register-card.vue

@@ -1,69 +0,0 @@
-<script lang="ts" setup>
-import Card from '@/components/card.vue'
-
-defineProps({
-  customClass: {
-    type: String,
-    default: () => '',
-  },
-})
-</script>
-<template>
-  <card custom-class="my-6 p-0!">
-    <view class="relative">
-      <wd-img
-        custom-class="vertical-bottom"
-        width="100%"
-        height="275"
-        src="https://via.placeholder.com/347x464"
-      ></wd-img>
-      <div
-        class="w-[63px] h-[29px] bg-black/60 rounded-[20px] backdrop-blur-[15px] absolute top-5 right-3.5 flex items-center justify-center"
-      >
-        <div class="text-white text-sm font-normal font-['PingFang SC'] leading-relaxed">
-          报名中
-        </div>
-      </div>
-      <view class="absolute left-3.5 bottom-2.5 flex items-center">
-        <avatar-group-casual
-          :show-number="3"
-          :urls="[
-            'https://via.placeholder.com/20x20',
-            'https://via.placeholder.com/20x20',
-            'https://via.placeholder.com/20x20',
-          ]"
-        ></avatar-group-casual>
-        <div class="ml-1 text-white/60 text-sm font-normal font-['PingFang SC'] leading-[10.18px]">
-          40人已报名
-        </div>
-      </view>
-    </view>
-    <div class="bg-[#27130d]/50 rounded-bl-2xl rounded-br-2xl backdrop-blur-[20px] p-3.5">
-      <div class="w-[293px] text-white text-xl font-normal font-['PingFang SC'] leading-relaxed">
-        日本研学·东京艺术大学设计游学
-      </div>
-      <view class="flex items-center">
-        <div class="text-white/60 text-sm font-normal font-['PingFang SC'] leading-[34px]">
-          游学时间:
-        </div>
-        <div class="text-white/60 text-base font-normal font-['PingFang SC'] leading-[34px]">
-          07.15 08.10
-        </div>
-      </view>
-      <div
-        class="text-justify text-white/60 text-sm font-normal font-['PingFang SC'] leading-relaxed"
-      >
-        等级限制:黄金会员以上
-      </div>
-      <view class="flex items-center justify-between">
-        <view class="flex items-end">
-          <div class="text-white text-3xl font-bold font-['D-DIN Exp'] leading-normal">16000</div>
-          <div class="ml-1 text-white/60 text-sm font-normal font-['PingFang SC'] leading-[34px]">
-            积分
-          </div>
-        </view>
-        <tilted-button custom-class="" size="large" color="white">立即报名</tilted-button>
-      </view>
-    </div>
-  </card>
-</template>

+ 0 - 88
packages/merchant/src/pages/home/components/schedule-card.vue

@@ -1,88 +0,0 @@
-<script setup lang="ts">
-import SectionHeading from '@/components/section-heading.vue'
-import { scheduleCardBg } from '@/core/libs/pngs'
-
-const props = defineProps({
-  customClass: {
-    type: String,
-    default: () => '',
-  },
-  options: {
-    type: Object,
-    default: () => ({
-      items: [
-        { date: '9:00', title: '早稻田大学课程', desc: '学习灯光设计师课程' },
-        { date: '11:00', title: '早稻田大学博物馆参观', desc: '了解博物馆历史' },
-        { date: '15:00', title: '早稻田大学设计交流会', desc: '交流学习设计心得' },
-      ],
-    }),
-  },
-})
-const data = ref()
-const pull = () => {
-  data.value = props.options.items.slice(0, 3)
-}
-const push = () => {
-  data.value = props.options.items.slice(0, 2)
-}
-const handleClick = async () => {
-  uni.navigateTo({ url: '/pages/home/schedule/index' })
-}
-onMounted(() => {
-  push()
-})
-</script>
-<template>
-  <view class="flex flex-col items-center" :class="[customClass]">
-    <SectionHeading title="我的游学日程" custom-class="w-full"></SectionHeading>
-    <div
-      class="w-full my-3.5 text-[#acacac] text-sm font-normal font-['PingFang SC'] leading-normal"
-    >
-      6月26日 第二天
-    </div>
-    <div
-      class="w-80 bg-gradient-to-r from-[#141414] to-[#4b4949] rounded-tl-2xl rounded-tr-2xl p-6 box-border"
-    >
-      <template v-for="(it, index) in data" :key="index">
-        <view class="relative mb-4">
-          <view class="flex items-center">
-            <div class="w-2 h-2 left-0 top-0 rounded-full border-2 border-solid border-white"></div>
-
-            <div
-              class="w-12 ml-3.5 text-white text-base font-normal font-['PingFang SC'] leading-normal"
-            >
-              9:00
-            </div>
-            <div class="text-white text-base font-normal font-['PingFang SC'] leading-normal">
-              早稻田大学课程
-            </div>
-          </view>
-          <div class="ml-6.5 text-white/40 text-sm font-normal font-['PingFang SC'] leading-normal">
-            学习灯光设计师课程
-          </div>
-          <div
-            v-if="index !== data?.length - 1"
-            class="absolute left-1.25 top-6 bottom--4 border border-dashed border-gray bg-gray-500"
-          ></div>
-        </view>
-      </template>
-    </div>
-    <view class="w-full relative bottom-7 mb--9">
-      <wd-img :src="scheduleCardBg" width="100%" mode="widthFix"></wd-img>
-      <view class="absolute bottom-0 left-0 right-0 px-3.5 py-7 flex flex-col items-center">
-        <wd-icon
-          custom-class="relative bottom-6"
-          :name="data?.length > 2 ? 'arrow-up' : 'arrow-down'"
-          size="22px"
-          color="#4f4f4f"
-          @click="data?.length > 2 ? push() : pull()"
-        ></wd-icon>
-        <view class="w-full">
-          <wd-button block size="large" custom-class="rd!" @click="handleClick">
-            查看全部行程
-          </wd-button>
-        </view>
-      </view>
-    </view>
-  </view>
-</template>

+ 1 - 1
packages/merchant/src/pages/home/index.vue

@@ -129,7 +129,7 @@ onShareAppMessage(() => ({}))
       <div>
         <SectionHeading
           title="渠道任务"
-          path="/pages/home/index"
+          path="/pages/home/tasks/index"
           end-text="查看全部"
           custom-class="mb-5"
         ></SectionHeading>

+ 0 - 46
packages/merchant/src/pages/home/mall/index.vue

@@ -1,46 +0,0 @@
-<route lang="json5">
-{
-  style: {
-    navigationBarTitleText: '品质商城',
-    navigationBarBackgroundColor: '#fff',
-  },
-}
-</route>
-
-<script setup lang="ts">
-import TiltedButton from '@/components/tilted-button.vue'
-
-const data = ref(['https://via.placeholder.com/347x128'])
-</script>
-
-<template>
-  <view class="bg-white flex-grow px-3.5">
-    <wd-swiper :list="data" autoplay height="128px"></wd-swiper>
-    <div class="bg-black rounded-2xl pt-11 my-6">
-      <div class="bg-white rounded-2xl shadow p-3.5"></div>
-    </div>
-    <div class="inline-flex gap-2">
-      <wd-button type="primary" size="small">GELATO专区</wd-button>
-      <wd-button plain size="small">设计周边</wd-button>
-    </div>
-    <div class="h-16">
-      <div class="fixed bottom-0 left-0 right-0">
-        <div class="h-16 flex items-center justify-around">
-          <div><wd-button type="icon" icon="cart" size="small"></wd-button></div>
-          <div>
-            <TiltedButton custom-class="text-center">
-              <span>购物车</span>
-              <span
-                class="w-20 h-[22px] text-white text-sm font-normal font-['PingFang SC'] leading-tight"
-              >
-                (已选2件)
-              </span>
-            </TiltedButton>
-          </div>
-        </div>
-      </div>
-    </div>
-  </view>
-</template>
-
-<style scoped lang="scss"></style>

+ 0 - 220
packages/merchant/src/pages/home/moment/index.vue

@@ -1,220 +0,0 @@
-<route lang="yaml">
-style:
-  navigationBarTitleText: '详情'
-  navigationBarBackgroundColor: '#fff'
-</route>
-<script setup lang="ts">
-import Tag from '@/components/tag.vue'
-import {
-  createCircleReview,
-  getCircle,
-  getCircleReviews,
-  getMoment,
-} from '../../../core/libs/requests'
-import { handleUpvoteClick } from '../../../core/libs/actions'
-import { thumbsUp } from '../../../core/libs/svgs'
-import CommentItem from '../components/comment-item.vue'
-import AvatarGroupCasual from '@/components/avatar-group-casual/avatar-group-casual.vue'
-import { useUserStore } from '../../../store'
-import { storeToRefs } from 'pinia'
-
-const userStore = useUserStore()
-const { userInfo } = storeToRefs(userStore)
-const id = ref()
-const { data, run } = useRequest(() => getCircle(id.value), { initialData: {} })
-const { data: reviews, run: runGetReviews } = useRequest(
-  () => getCircleReviews({ circleId: id.value }),
-  {
-    initialData: {
-      list: [],
-    },
-  },
-)
-const current = ref(0)
-const swiperSizes = ref()
-const swiperStyle = ref()
-const reviewContent = ref('')
-const handleChange = ({ detail: { current } }) => {
-  swiperStyle.value = {
-    height: swiperSizes.value[current].height + 'px',
-  }
-}
-const setSwiperStyle = async () => {
-  const { screenWidth } = await uni.getSystemInfo()
-  swiperSizes.value = (
-    await Promise.all(data.value.bannerUrls.map((src) => uni.getImageInfo({ src })))
-  ).map(({ width, height }) => ({ width: screenWidth, height: height / (width / screenWidth) }))
-  swiperStyle.value = {
-    height: swiperSizes.value[0].height + 'px',
-  }
-}
-const handleSend = async () => {
-  const { code, msg } = await createCircleReview({
-    circleId: id.value,
-    userId: userInfo.value.userId,
-    userName: userInfo.value.nickname,
-    reviewContent: reviewContent.value,
-  })
-  if (code !== 0) {
-    uni.showToast({ title: msg, icon: 'none' })
-  } else {
-    reviewContent.value = ''
-    uni.showToast({ title: '评论成功', icon: 'none' })
-  }
-}
-onMounted(async () => {})
-onLoad(async (query: { id: string }) => {
-  id.value = query.id
-  await run()
-  await runGetReviews()
-  await setSwiperStyle()
-})
-</script>
-<template>
-  <view class="bg-white flex-grow">
-    <!-- <div class="my-4 text-black/90 text-lg font-normal font-['PingFang SC'] leading-[10.18px]">
-      {{ data?.content }}
-    </div> -->
-    <template v-if="swiperSizes">
-      <swiper :style="swiperStyle" @change="handleChange">
-        <template v-for="it of data?.bannerUrls" :key="it">
-          <swiper-item>
-            <wd-img width="100%" :src="it" mode="widthFix"></wd-img>
-          </swiper-item>
-        </template>
-      </swiper>
-    </template>
-    <!-- <wd-swiper
-      v-model="current"
-      custom-class="my-1"
-      autoplay="false"
-      :list="data?.images"
-      :indicator="{ type: 'fraction' }"
-      indicatorPosition="top-right"
-      imageMode="widthFix"
-    ></wd-swiper> -->
-    <view class="m-3.5">
-      <div class="text-black/90 text-base font-normal font-['PingFang SC'] leading-[10.18px]">
-        {{ data?.circleDesc }}
-      </div>
-      <view class="my-5.5 flex gap-3.5">
-        <!-- <TiltedButton>按钮</TiltedButton> -->
-        <template v-if="data?.tagName !== ''">
-          <template v-for="it of data?.tagName?.split(',')" :key="it">
-            <Tag>{{ it }}</Tag>
-          </template>
-        </template>
-      </view>
-      <div class="text-black/30 text-xs font-normal font-['PingFang SC'] leading-[10.18px]">
-        2024-5-31 10:06
-      </div>
-      <view class="flex items-center my-4">
-        <view class="flex items-center">
-          <avatar-group-casual
-            :show-number="3"
-            :urls="[
-              'https://via.placeholder.com/20x20',
-              'https://via.placeholder.com/20x20',
-              'https://via.placeholder.com/20x20',
-            ]"
-          ></avatar-group-casual>
-          <div
-            class="ml-1 text-black/60 text-sm font-normal font-['PingFang SC'] leading-[10.18px]"
-          >
-            40人赞过
-          </div>
-        </view>
-        <view class="flex-1"></view>
-        <view><wd-icon class="text-black/65" name="arrow-right" size="22px"></wd-icon></view>
-      </view>
-      <!-- <SectionHeading :title="`评论 ${data.comments}`"></SectionHeading> -->
-      <view class="flex items-center my-8">
-        <div class="text-black/90 text-base font-normal font-['PingFang SC'] leading-[10.18px]">
-          <span>评论</span>
-          <!-- <span v-if="data?.comments">{{ data?.comments }}</span> -->
-        </div>
-        <view class="flex-1"></view>
-        <view v-if="reviews?.list" class="flex">
-          <div class="text-black/90 text-xs font-normal font-['PingFang SC'] leading-[10.18px]">
-            按热度
-          </div>
-          <div
-            class="mx-2 text-black/40 text-xs font-normal font-['PingFang SC'] leading-[10.18px]"
-          >
-            |
-          </div>
-          <div class="text-black/40 text-xs font-normal font-['PingFang SC'] leading-[10.18px]">
-            按时间
-          </div>
-        </view>
-      </view>
-
-      <view>
-        <template v-if="reviews?.list.length">
-          <template v-for="it of reviews?.list" :key="it.id">
-            <CommentItem :options="it" :isChild="false" @upvote="runGetReviews()"></CommentItem>
-            <template v-for="child of it.childrens" :key="child.id">
-              <CommentItem :options="child" :isChild="true"></CommentItem>
-            </template>
-          </template>
-        </template>
-        <template v-else>
-          <view class="flex items-center justify-center mt-26 mb-36">
-            <div class="text-black/40 text-xs font-normal font-['PingFang SC'] leading-[10.18px]">
-              这里空空的
-            </div>
-            <div
-              class="ml-1.5 text-[#2f4471]/90 text-xs font-normal font-['PingFang SC'] leading-[10.18px]"
-            >
-              点击评论~
-            </div>
-          </view>
-        </template>
-      </view>
-    </view>
-    <div
-      class="fixed bottom-0 left-0 right-0 border-t border-t-solid border-[#ececec] h-[54px] bg-white flex items-center px-3.5"
-    >
-      <div class="w-[168px] bg-[#f6f6f6] rounded-[60px] px-3.5 py-2 flex items-center">
-        <wd-input
-          custom-class="bg-transparent!"
-          no-border
-          confirm-type="send"
-          v-model="reviewContent"
-          @confirm="handleSend"
-        ></wd-input>
-      </div>
-      <view class="flex justify-around flex-1">
-        <view
-          class="flex flex-col items-center text-[rgba(0,0,0,0.85)] text-3.5 font-400 line-height-5.5"
-        >
-          <wd-img width="15" height="15" src="/static/svgs/share.svg"></wd-img>
-          <view class="">{{ data?.shareCount }}</view>
-        </view>
-        <view
-          class="flex flex-col items-center text-[rgba(0,0,0,0.85)] text-3.5 font-400 line-height-5.5"
-        >
-          <wd-img width="15" height="15" src="/static/svgs/comment.svg"></wd-img>
-          <view class="">{{ data?.reviewCount }}</view>
-        </view>
-        <view
-          class="flex flex-col items-center text-[rgba(0,0,0,0.85)] text-3.5 font-400 line-height-5.5"
-          @click="
-            handleUpvoteClick(
-              {
-                upvote: data.ownUpvote,
-                circleId: data.id,
-                userId: userInfo.userId,
-                userName: userInfo.nickname,
-              },
-              () => run(),
-            )
-          "
-        >
-          <wd-img width="15" height="15" :src="thumbsUp"></wd-img>
-          <view>{{ data.upvoteCount }}</view>
-        </view>
-      </view>
-    </div>
-  </view>
-</template>

+ 0 - 45
packages/merchant/src/pages/home/offline-activity/index.vue

@@ -1,45 +0,0 @@
-<route lang="json5">
-{
-  style: {
-    navigationBarTitleText: '线下活动',
-    navigationBarBackgroundColor: '#fff',
-  },
-}
-</route>
-
-<script setup lang="ts">
-import SectionHeading from '@/components/section-heading.vue'
-import Card from '@/components/card.vue'
-import RegisterCard from '../components/register-card.vue'
-import OfflineActivityItem from '../components/offline-activity-item.vue'
-
-const tab = ref<number>(0)
-</script>
-
-<template>
-  <view class="px-3.5">
-    <section-heading custom-class="my-6" title="线下活动"></section-heading>
-    <register-card></register-card>
-    <card custom-class="my-6">
-      <div class="my-7.5 text-black text-xl font-normal font-['PingFang SC'] leading-[10.18px]">
-        筑巢荟-活动营
-      </div>
-      <div
-        class="w-[319px] h-[264px] text-justify text-black/40 text-base font-normal font-['PingFang SC'] leading-relaxed"
-      >
-        我们为您精心打造了一个独特且极具价值的活动营。这个项目的核心旨在全方位提升您作为设计师的能力。
-        在这里,您将拥有无比优质的游学资源。我们与全球知名的设计学府、顶尖设计工作室以及具有代表性的经典建筑和室内空间建立了紧密合作。您将有机会深入这些卓越的场所,亲身体验最前沿的设计理念和实践。
-        参与专业的研讨会和工作坊,与同行们分享见解、碰撞思维火花,进一步深化对设计的理解。
-      </div>
-    </card>
-    <wd-tabs v-model="tab">
-      <block v-for="item in 4" :key="item">
-        <wd-tab :title="`标签${item}`"></wd-tab>
-      </block>
-    </wd-tabs>
-    <offline-activity-item class="my-6"></offline-activity-item>
-    <offline-activity-item class="my-6"></offline-activity-item>
-  </view>
-</template>
-
-<style scoped lang="scss"></style>

+ 0 - 118
packages/merchant/src/pages/home/schedule/index.vue

@@ -1,118 +0,0 @@
-<route lang="yaml">
-style:
-  navigationStyle: custom
-  navigationBarTitleText: 游学日程
-</route>
-<script setup lang="ts">
-import TiltedButton from '@/components/tilted-button.vue'
-import { getSchedule, getUserInfo } from '@/core/libs/requests'
-import { camera, map } from '@/core/libs/svgs'
-
-const { data, run } = useRequest(getSchedule)
-const { data: userInfo, run: runUserInfo } = useRequest(getUserInfo)
-
-onMounted(() => {
-  run()
-  runUserInfo()
-})
-</script>
-<template>
-  <view class="">
-    <view class="bg-black w-full pos-relative aspect-[1.26/1]">
-      <wd-img width="100%" height="100%" :src="data?.cover" />
-      <div
-        class="w-[375px] h-[90px] bg-gradient-to-t from-black to-black/0 absolute left-0 bottom-0 w-full flex items-center"
-      >
-        <view class="mx-7">
-          <wd-button plain custom-class="bg-transparent! border-white! text-white!">
-            02:30
-          </wd-button>
-        </view>
-      </div>
-    </view>
-    <view class="bg-white relative bottom-4 rounded-t-2xl p-6.5">
-      <view class="border-b border-black/10 border-b-solid pb-5">
-        <div class="text-black/90 text-2xl font-normal font-['PingFang SC'] leading-normal">
-          {{ data?.name }}
-        </div>
-        <view class="flex mt-5">
-          <wd-img
-            custom-class="rounded-full overflow-hidden mr-1"
-            width="22"
-            height="22"
-            :src="userInfo?.avatar"
-          />
-          <div class="text-black/40 text-base font-normal font-['PingFang SC'] leading-normal">
-            {{ userInfo?.nickname }}
-          </div>
-          <div class="flex text-black/40 text-base font-normal font-['PingFang SC'] leading-normal">
-            <view class="mx-3.5">|</view>
-            6月26日 第二天
-          </div>
-        </view>
-      </view>
-      <template v-for="(it, index) in data.items" :key="index">
-        <view class="grid grid-gap-2 mt-8">
-          <view class="col-start-1 row-start-1 flex items-center justify-center">
-            <view
-              class="w-[27px] h-[27px] bg-[#f6f6f6] rounded-full flex justify-center items-center"
-            >
-              <wd-img width="16" height="16" :src="map"></wd-img>
-            </view>
-          </view>
-          <view class="col-start-2 row-start-1 flex">
-            <div
-              class="text-black/90 text-base font-normal font-['PingFang SC'] leading-normal mr-5"
-            >
-              {{ it.time }}
-            </div>
-            <div class="text-black/90 text-base font-normal font-['PingFang SC'] leading-normal">
-              {{ it.title }}
-            </div>
-          </view>
-          <view class="col-start-2 row-start-2 border-b border-black/10 border-b-solid pb-5">
-            <div class="">
-              <span class="text-black/60 text-sm font-normal font-['PingFang SC'] leading-[23px]">
-                行程介绍:
-              </span>
-              <span class="text-black/40 text-sm font-normal font-['PingFang SC'] leading-[23px]">
-                {{ it.content }}
-              </span>
-            </div>
-            <view class="flex items-center my-4">
-              <wd-img width="16" height="16" :src="camera"></wd-img>
-              <div
-                class="ml-1 text-black/90 text-xs font-normal font-['PingFang SC'] leading-normal"
-              >
-                打卡示例
-              </div>
-            </view>
-            <img class="w-[285px] h-[157px] rounded-lg" :src="it.momentExample" />
-            <div
-              class="mt-2.5 text-black/40 text-xs font-normal font-['PingFang SC'] leading-normal"
-            >
-              {{ it.monentHint }}
-            </div>
-          </view>
-        </view>
-      </template>
-    </view>
-    <div
-      class="mx-3.5 p-3.5 bg-white/90 rounded-2xl backdrop-blur-[20px] fixed bottom-4 left-0 right-0 flex items-center justify-between"
-    >
-      <div class="text-black/40 text-sm font-normal font-['PingFang SC'] leading-[34px]">
-        发布圈子可得
-      </div>
-      <div class="text-[#ef4343] text-[22px] font-normal font-['D-DIN Exp'] leading-normal">
-        16000
-      </div>
-      <div class="text-black/40 text-sm font-normal font-['PingFang SC'] leading-[34px]">积分</div>
-      <view class="flex-1"></view>
-      <view>
-        <TiltedButton size="large" custom-class="">
-          <view class="px-3">发圈子</view>
-        </TiltedButton>
-      </view>
-    </div>
-  </view>
-</template>

+ 0 - 78
packages/merchant/src/pages/home/spread/index.vue

@@ -1,78 +0,0 @@
-<route lang="json5">
-{ style: { navigationBarTitleText: '设计传播', navigationBarBackgroundColor: '#fff' } }
-</route>
-
-<script setup lang="ts">
-import Card from '@/components/card.vue'
-import { award, camera, wechat } from '../../../core/libs/svgs'
-import InfoCard from '../components/info-card.vue'
-import SectionHeading from '@/components/section-heading.vue'
-import ClassItem from '../components/class-item.vue'
-import ElegantInfoCard from '../components/elegant-info-card.vue'
-
-const current = ref<number>(0)
-
-const swiperList = ref([
-  'https://registry.npmmirror.com/wot-design-uni-assets/*/files/redpanda.jpg',
-  'https://registry.npmmirror.com/wot-design-uni-assets/*/files/capybara.jpg',
-  'https://registry.npmmirror.com/wot-design-uni-assets/*/files/panda.jpg',
-  'https://registry.npmmirror.com/wot-design-uni-assets/*/files/moon.jpg',
-  'https://registry.npmmirror.com/wot-design-uni-assets/*/files/meng.jpg',
-])
-const menus = ref([
-  { title: '微信代运营', icon: wechat, class: 'col-start-1 row-start-1 row-end-3 items-start!' },
-  { title: '设计奖项', icon: award, class: 'col-start-2 row-start-1' },
-  { title: '案例拍摄', icon: camera, class: 'col-start-2 row-start-2' },
-])
-function handleClick(e) {
-  console.log(e)
-}
-function onChange(e) {
-  console.log(e)
-}
-</script>
-
-<template>
-  <view class="px-3.5">
-    <wd-swiper
-      custom-class="my-6 h-32 rounded-2xl overflow-hidden"
-      :list="swiperList"
-      autoplay
-      v-model:current="current"
-      @click="handleClick"
-      @change="onChange"
-    ></wd-swiper>
-    <view class="my-6 grid gap-2.5 grid-cols-2">
-      <template v-for="it of menus" :key="it.title">
-        <div :class="it.class">
-          <card :custom-class="['w-full h-full flex justify-between items-center']">
-            <div
-              class="my-3.5 text-black/40 text-base font-normal font-['PingFang SC'] leading-[10.18px]"
-            >
-              {{ it.title }}
-            </div>
-            <view class="h-full flex items-end">
-              <div
-                class="w-[42px] h-[42px] flex justify-center items-center bg-white rounded-full border border-solid border-[#ececec]"
-              >
-                <wd-img :src="it.icon" width="23" height="23"></wd-img>
-              </div>
-            </view>
-          </card>
-        </div>
-      </template>
-    </view>
-    <info-card
-      title="筑巢荟-设计传播"
-      desc="我们为您精心打造了一个独特且极具价值的游学项目。这个项目的核心旨在全方位提升您作为设计师的能力。
-在这里,您将拥有无比优质的游学资源。我们与全球知名的设计学府、顶尖设计工作室以及具有代表性的经典建筑和室内空间建立了紧密合作。您将有机会深入这些卓越的场所,亲身体验最前沿的设计理念和实践。
-参与专业的研讨会和工作坊,与同行们分享见解、碰撞思维火花,进一步深化对设计的理解。
-"
-    ></info-card>
-    <section-heading title="最新资讯"></section-heading>
-    <ElegantInfoCard></ElegantInfoCard>
-    <ElegantInfoCard></ElegantInfoCard>
-  </view>
-</template>
-
-<style scoped lang="scss"></style>

+ 0 - 89
packages/merchant/src/pages/home/study-tour/components/study-tour-card.vue

@@ -1,89 +0,0 @@
-<script lang="ts" setup>
-import TiltedButton from '@/components/tilted-button.vue'
-import { studyTourItemBg } from '@/core/libs/pngs'
-defineProps({
-  customClass: {
-    type: String,
-    default: () => '',
-  },
-})
-const toDetail = () => {
-  uni.navigateTo({
-    url: '/pages/home/study-tour/detail',
-  })
-}
-</script>
-<template>
-  <view class="relative w-full box-border" :class="customClass" @click="toDetail">
-    <view class="relative h-full mx--2.5 mb--6 mt--1 box-border">
-      <wd-img :width="'100%'" :height="'100%'" :src="studyTourItemBg" mode="widthFix"></wd-img>
-    </view>
-    <view class="absolute left-0 right-0 top-1 bottom-6 z-1 p-3.5">
-      <view class="w-full h-full flex flex-col justify-between">
-        <div>1</div>
-        <div class="w-[321px] h-[88px] relative">
-          <div class="w-[94px] h-3 left-[185px] top-[64px] absolute">
-            <div
-              class="left-0 top-0 absolute text-black/40 text-sm font-normal font-['PingFang SC'] leading-[34px]"
-            >
-              07.15 08.10
-            </div>
-          </div>
-          <wd-img
-            custom-class="w-[110px] h-[88px] left-0 top-0 absolute rounded-[10px] overflow-hidden vertical-bottom"
-            src="https://via.placeholder.com/110x88"
-            mode="scaleToFill"
-          />
-          <div
-            class="w-[202px] left-[119px] top-0 absolute text-black text-base font-normal font-['PingFang SC'] leading-relaxed"
-          >
-            活动预告 | 日本研学·东京艺术大学设计游学
-          </div>
-          <div
-            class="left-[119px] top-[64px] absolute text-black/40 text-sm font-normal font-['PingFang SC'] leading-[34px]"
-          >
-            游学时间:
-          </div>
-        </div>
-        <view class="flex items-center justify-between mb-1.5">
-          <view
-            class="flex items-center text-black/40 text-sm font-normal font-['PingFang SC'] leading-[34px]"
-          >
-            距结束还剩
-            <view
-              class="w-4 h-4 bg-black/90 rounded flex-col justify-center items-center gap-2.5 inline-flex mx-1.5"
-            >
-              <view
-                class="text-white text-[10px] font-normal font-['PingFang SC'] leading-[10.18px]"
-              >
-                05
-              </view>
-            </view>
-            天
-            <div
-              class="w-4 h-4 bg-black/90 rounded flex-col justify-center items-center gap-2.5 inline-flex mx-1.5"
-            >
-              <div
-                class="text-white text-[10px] font-normal font-['PingFang SC'] leading-[10.18px]"
-              >
-                05
-              </div>
-            </div>
-            时
-            <div
-              class="w-4 h-4 bg-black/90 rounded flex-col justify-center items-center gap-2.5 inline-flex mx-1.5"
-            >
-              <div
-                class="text-white text-[10px] font-normal font-['PingFang SC'] leading-[10.18px]"
-              >
-                05
-              </div>
-            </div>
-            分
-          </view>
-          <tilted-button>立即报名</tilted-button>
-        </view>
-      </view>
-    </view>
-  </view>
-</template>

+ 0 - 12
packages/merchant/src/pages/home/study-tour/detail.vue

@@ -1,12 +0,0 @@
-<route lang="yaml">
-style:
-  navigationBarTitleText: 游学计划
-  navigationBarBackgroundColor: '#fff'
-  navigationStyle: 'custom'
-</route>
-<script setup lang="ts"></script>
-<template>
-  <div>
-    <div class="asp"></div>
-  </div>
-</template>

+ 0 - 105
packages/merchant/src/pages/home/study-tour/index.vue

@@ -1,105 +0,0 @@
-<route lang="yaml">
-style:
-  navigationBarTitleText: 设计游学
-  navigationBarBackgroundColor: '#fff'
-</route>
-<script lang="ts" setup>
-import AvatarGroupCasual from '@/components/avatar-group-casual/avatar-group-casual.vue'
-import Card from '@/components/card.vue'
-import MomentItem from '@/components/moment-item.vue'
-import SectionHeading from '@/components/section-heading.vue'
-import TiltedButton from '@/components/tilted-button.vue'
-import { frame, peoples, polygon16 } from '@/core/libs/svgs'
-import ClassItem from '../components/class-item.vue'
-
-const toList = () => {
-  uni.navigateTo({ url: '/pages/home/study-tour/list' })
-}
-</script>
-<template>
-  <view class="px-3.5">
-    <view class="my-6">
-      <card class="" @click="toList">查看全部</card>
-    </view>
-    <card custom-class="my-6 p-0!">
-      <view class="relative">
-        <wd-img
-          custom-class="vertical-bottom"
-          width="100%"
-          height="275"
-          src="https://via.placeholder.com/347x464"
-        ></wd-img>
-        <div
-          class="w-[63px] h-[29px] bg-black/60 rounded-[20px] backdrop-blur-[15px] absolute top-5 right-3.5 flex items-center justify-center"
-        >
-          <div class="text-white text-sm font-normal font-['PingFang SC'] leading-relaxed">
-            报名中
-          </div>
-        </div>
-        <view class="absolute left-3.5 bottom-2.5 flex items-center">
-          <avatar-group-casual
-            :show-number="3"
-            :urls="[
-              'https://via.placeholder.com/20x20',
-              'https://via.placeholder.com/20x20',
-              'https://via.placeholder.com/20x20',
-            ]"
-          ></avatar-group-casual>
-          <div
-            class="ml-1 text-white/60 text-sm font-normal font-['PingFang SC'] leading-[10.18px]"
-          >
-            40人已报名
-          </div>
-        </view>
-      </view>
-      <div class="bg-[#27130d]/50 rounded-bl-2xl rounded-br-2xl backdrop-blur-[20px] p-3.5">
-        <div class="w-[293px] text-white text-xl font-normal font-['PingFang SC'] leading-relaxed">
-          日本研学·东京艺术大学设计游学
-        </div>
-        <view class="flex items-center">
-          <div class="text-white/60 text-sm font-normal font-['PingFang SC'] leading-[34px]">
-            游学时间:
-          </div>
-          <div class="text-white/60 text-base font-normal font-['PingFang SC'] leading-[34px]">
-            07.15 08.10
-          </div>
-        </view>
-        <div
-          class="text-justify text-white/60 text-sm font-normal font-['PingFang SC'] leading-relaxed"
-        >
-          等级限制:黄金会员以上
-        </div>
-        <view class="flex items-center justify-between">
-          <view class="flex items-end">
-            <div class="text-white text-3xl font-bold font-['D-DIN Exp'] leading-normal">16000</div>
-            <div class="ml-1 text-white/60 text-sm font-normal font-['PingFang SC'] leading-[34px]">
-              积分
-            </div>
-          </view>
-          <tilted-button custom-class="" size="large" color="white">立即报名</tilted-button>
-        </view>
-      </div>
-    </card>
-    <card custom-class="my-6">
-      <div class="my-7.5 text-black text-xl font-normal font-['PingFang SC'] leading-[10.18px]">
-        筑巢荟-设计游学
-      </div>
-      <div
-        class="w-[319px] h-[264px] text-justify text-black/40 text-base font-normal font-['PingFang SC'] leading-relaxed"
-      >
-        我们为您精心打造了一个独特且极具价值的游学项目。这个项目的核心旨在全方位提升您作为设计师的能力。
-        在这里,您将拥有无比优质的游学资源。我们与全球知名的设计学府、顶尖设计工作室以及具有代表性的经典建筑和室内空间建立了紧密合作。您将有机会深入这些卓越的场所,亲身体验最前沿的设计理念和实践。
-        参与专业的研讨会和工作坊,与同行们分享见解、碰撞思维火花,进一步深化对设计的理解。
-      </div>
-    </card>
-    <section-heading
-      custom-class="my-6"
-      title="同学荟"
-      path="/pages/home/classmates/index"
-    ></section-heading>
-    <class-item></class-item>
-    <class-item></class-item>
-    <section-heading custom-class="my-6" title="设计圈"></section-heading>
-    <moment-item></moment-item>
-  </view>
-</template>

+ 0 - 29
packages/merchant/src/pages/home/study-tour/list.vue

@@ -1,29 +0,0 @@
-<route lang="yaml">
-style:
-  navigationBarTitleText: 游学计划
-  navigationBarBackgroundColor: '#fff'
-</route>
-<script setup lang="ts">
-import SectionHeading from '@/components/section-heading.vue'
-import { studyTourItemBg } from '@/core/libs/pngs'
-import { getStudyTours } from '@/core/libs/requests'
-import dayjs from 'dayjs'
-import StudyTourCard from './components/study-tour-card.vue'
-
-const { data, run } = useRequest(() => getStudyTours())
-const title = computed(() => `${dayjs().year()}年游学计划`)
-onMounted(() => run())
-</script>
-<template>
-  <div class="px-3.5">
-    <SectionHeading custom-class="py-6" :title="title"></SectionHeading>
-    <div
-      class="mx-3.5 text-justify text-black/40 text-sm font-normal font-['PingFang SC'] leading-relaxed"
-    >
-      *我们为您精心打造了一个独特且极具价值的游学项目。这个项目的核心旨在全方位提升
-    </div>
-    <template v-for="(it, index) in data" :key="index">
-      <StudyTourCard custom-class="my-6"></StudyTourCard>
-    </template>
-  </div>
-</template>

+ 106 - 0
packages/merchant/src/pages/home/tasks/index.vue

@@ -0,0 +1,106 @@
+<route lang="yaml">
+style:
+  navigationBarTitleText: 全部任务
+  navigationBarBackgroundColor: '#fff'
+</route>
+<script setup lang="ts">
+import Card from '@designer-hub/app/src/components/card.vue'
+
+const tasks = ref([
+  {
+    status: 0,
+    type: 1,
+    name: 'imola',
+    brand: 'imola瓷砖',
+    start: '2024/06/07',
+    end: '2024/06/15',
+    targe: 30,
+    finished: 22,
+  },
+  {
+    status: 0,
+    type: 2,
+    name: 'imola',
+    brand: 'imola瓷砖',
+    start: '2024/06/07',
+    end: '2024/06/15',
+    targe: 30,
+    finished: 22,
+  },
+  {
+    status: 0,
+    type: 1,
+    name: 'imola',
+    brand: 'imola瓷砖',
+    start: '2024/06/07',
+    end: '2024/06/15',
+    targe: 30,
+    finished: 22,
+  },
+])
+const types = ref({
+  1: { title: '到店', bg: '', bgClass: 'bg-gradient-to-r from-[#cfe0ff] to-[#e1ecff]' },
+  2: { title: '订单', bg: '', bgClass: 'bg-gradient-to-r from-[#ffe8cf] to-[#fff3e1]' },
+})
+</script>
+<template>
+  <div class="flex-grow flex flex-col gap-4 p-4">
+    <template v-for="{ id, type } of tasks" :key="id">
+      <Card :custom-class="[types[type].bgClass, 'p-0']">
+        <div class="flex p-4 items-center">
+          <div
+            class="w-[47px] h-[23px] px-1 bg-[#2357e9] rounded border justify-center items-center gap-2.5 inline-flex"
+          >
+            <div
+              class="text-right text-white text-xs font-normal font-['PingFang SC'] leading-tight"
+            >
+              进行中
+            </div>
+          </div>
+          <div class="mx-2.5 text-black/90 text-lg font-normal font-['PingFang SC'] leading-none">
+            {{ types[type].title }}量
+          </div>
+          <div class="flex-1"></div>
+          <div class="mx-1.5 text-black/40 text-xs font-normal font-['PingFang SC'] leading-none">
+            奖励积分
+          </div>
+          <div class="text-[#ff2e2e] text-[22px] font-medium font-['DIN'] leading-none">2000</div>
+        </div>
+        <div class="flex flex-col gap-4 bg-white p-5 rounded-2xl">
+          <div>
+            <span class="text-black/40 text-sm font-normal font-['PingFang SC'] leading-none">
+              材料商:
+            </span>
+            <span class="text-black/60 text-sm font-normal font-['PingFang SC'] leading-none">
+              imola
+            </span>
+          </div>
+          <div>
+            <span class="text-black/40 text-sm font-normal font-['PingFang SC'] leading-none">
+              品牌:
+            </span>
+            <span class="text-black/60 text-sm font-normal font-['PingFang SC'] leading-none">
+              imola瓷砖
+            </span>
+          </div>
+          <div>
+            <span class="text-black/40 text-sm font-normal font-['PingFang SC'] leading-none">
+              任务时间:
+            </span>
+            <span class="text-black/60 text-sm font-normal font-['PingFang SC'] leading-none">
+              2024/06/07-2024/09/16
+            </span>
+          </div>
+          <div class="flex items-center border-t border-t-solid border-t-[#efefef] pt-1.5">
+            <div class="text-black/90 text-sm font-normal font-['PingFang SC']">目标</div>
+            <div class="ml-2 text-black/90 text-lg font-medium font-['DIN'] leading-normal">30</div>
+            <div class="ml-12 text-[#2357e9] text-sm font-normal font-['PingFang SC']">完成</div>
+            <div class="ml-2 text-[#2357e9] text-lg font-medium font-['DIN'] leading-normal">
+              22
+            </div>
+          </div>
+        </div>
+      </Card>
+    </template>
+  </div>
+</template>

+ 1 - 10
packages/merchant/src/types/uni-pages.d.ts

@@ -10,16 +10,7 @@ interface NavigateToOptions {
        "/pages/material/index" |
        "/pages/messages/index" |
        "/pages/mine/index" |
-       "/pages/home/classmates/index" |
-       "/pages/home/classmates-detail/index" |
-       "/pages/home/mall/index" |
-       "/pages/home/moment/index" |
-       "/pages/home/offline-activity/index" |
-       "/pages/home/schedule/index" |
-       "/pages/home/spread/index" |
-       "/pages/home/study-tour/detail" |
-       "/pages/home/study-tour/index" |
-       "/pages/home/study-tour/list" |
+       "/pages/home/tasks/index" |
        "/pages/material/calculator/index" |
        "/pages/material/detail/index" |
        "/pages/material/recommend/index" |