Explorar el Código

feature : init

梦辉 hace 1 mes
padre
commit
b34371f59f

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 3798 - 145
pnpm-lock.yaml


+ 2 - 55
src/pages.json

@@ -1,76 +1,23 @@
 {
   "pages": [
     {
-      "path": "pages/login/index",
-      "style": {
-        "navigationBarTitleText": "登录页"
-      }
-    },
-    {
       "path": "pages/index/index",
       "style": {
         "navigationBarTitleText": "首页"
       }
-    },
-    {
-      "path": "pages/rank/index",
-      "style": {
-        "navigationBarTitleText": "排行榜"
-      }
-    },
-    {
-      "path": "pages/my/index",
-      "style": {
-        "navigationBarTitleText": "我的"
-      }
     }
   ],
   "subPackages": [
     {
       "root": "subPages",
-      "pages": [
-        {
-          "path": "pages/activity/detail/index",
-          "style": {
-            "navigationBarTitleText": "活动详情"
-          }
-        },
-        {
-          "path": "pages/activity/poster/index",
-          "style": {
-            "navigationBarTitleText": "活动海报"
-          }
-        }
-      ]
+      "pages": []
     }
   ],
   "globalStyle": {
     "navigationStyle": "custom",
     "backgroundColor": "#F8F8F8"
   },
-  "tabBar": {
-    "color": "#666",
-    "selectedColor": "#007AFF",
-    "backgroundColor": "#fff",
-    "borderStyle": "black",
-    "list": [
-      {
-        "pagePath": "pages/index/index",
-        "iconPath": "static/home-unselect.png",
-        "selectedIconPath": "static/home-select.png"
-      },
-      {
-        "pagePath": "pages/rank/index",
-        "iconPath": "static/rank-unselect.png",
-        "selectedIconPath": "static/rank-selected.png"
-      },
-      {
-        "pagePath": "pages/my/index",
-        "iconPath": "static/my-unselect.png",
-        "selectedIconPath": "static/my-selected.png"
-      }
-    ]
-  },
+  "tabBar": false,
   "easycom": {
     "autoscan": true,
     "custom": {

+ 0 - 74
src/pages/index/components/activityItem/index.vue

@@ -1,74 +0,0 @@
-<script setup lang="ts">
-import { ActiveListResp } from '@/api/active/list/types'
-
-const props = defineProps<ActiveListResp>()
-
-/** 点击跳转到活动详情 */
-const handleTap = () => {
-  uni.navigateTo({
-    url: `/subPages/pages/activity/detail/index?id=${props.id}`
-  })
-}
-</script>
-
-<template>
-  <view class="box relative shadow-sm">
-    <view class="absolute top-0 left-0">
-      <view v-if="props.status === 1" class="status bg-[rgba(18,164,242,0.4)]">报名中</view>
-      <view v-if="props.status === 2" class="status bg-[rgba(235,118,22,0.6)]">投票中</view>
-      <view v-else class="status bg-[rgba(217,0,0,0.4)]">已结束</view>
-    </view>
-    <img v-if="props.imgUrl" class="w-full h-[115px] object-cover" @tap="handleTap" :src="props.imgUrl" alt="" />
-    <img v-else class="w-full h-[115px] object-cover" @tap="handleTap" src="@/static/active-default.png" alt="" />
-    <view class="p-[5px]">
-      <view class="title mt-1" @tap="handleTap">{{ props.title }}</view>
-      <view class="personNum mt-[5px] mb-[15px]" @tap="handleTap">
-        <span class="font-bold text-[15px]">报名人数</span>:<span class="text-[#12A4F2] text-base font-medium"
-          >{{ props.personNum }}人</span
-        >
-      </view>
-      <view class="time text-[#999999] text-[13px]">
-        活动时间:
-        <view class="my-[5px]">
-          <span class="startTime">{{ props.startTime }}</span> - <span class="endTime">{{ props.endTime }}</span>
-        </view>
-        <div v-if="props.status === 1" class="submit-btn bg-[#12a4f2]">我要报名</div>
-        <div v-else-if="props.status === 2" class="submit-btn bg-[#F59D54]">我要投票</div>
-        <div v-else class="submit-btn bg-[#FA6969]" @tap="handleTap">查看</div>
-      </view>
-    </view>
-  </view>
-</template>
-
-<style scoped lang="scss">
-.status {
-  width: 70px;
-  height: 28px;
-  display: flex;
-  align-items: center;
-  justify-content: center;
-  border-radius: 6px 0px 6px 0px;
-  color: white;
-}
-.title {
-  font-weight: 600;
-  font-size: 18px;
-  color: #000000;
-  height: 40px;
-  line-height: 20px;
-  overflow: hidden;
-  display: -webkit-box;
-  -webkit-box-orient: vertical;
-  -webkit-line-clamp: 2;
-  line-clamp: 2;
-}
-.submit-btn {
-  border-radius: 8px 8px 8px 8px;
-  height: 35px;
-  color: white;
-  display: flex;
-  align-items: center;
-  justify-content: center;
-  font-size: 14px;
-}
-</style>

+ 1 - 30
src/pages/index/index.vue

@@ -1,40 +1,11 @@
 <script setup lang="ts">
-import { ref } from 'vue'
-import { onMounted } from 'vue'
-import { getActiveList } from '@/api/active/list'
-import { ActiveListResp } from '@/api/active/list/types'
-import ActivityItem from '@/pages/index/components/activityItem/index.vue'
 
-const notice = ref(false)
-
-const activeList = ref<ActiveListResp[]>([])
-/** 获取活动列表  */
-const handleGetActiveList = async () => {
-  const { data } = await getActiveList()
-  activeList.value = data
-  console.log(activeList.value)
-}
-
-onMounted(() => {
-  handleGetActiveList()
-})
 </script>
 
 <template>
   <view class="common-page-containerBar">
-    <view class="top flex justify-between items-center mb-3.5 mt-3 px-[12px]">
-      <view class="title font-semibold text-2xl">首页</view>
-      <img v-if="notice" class="w-[20px] h-[24px]" src="@/static/notice-nomsg.png" alt="" />
-      <img v-else class="w-[20px] h-[24px]" src="@/static/notice-msg.png" alt="" />
-    </view>
     <view class="common-content">
-      <view class="search p-[12px] flex items-center border border-[#E5E5E5] rounded-[8px] shadow-md">
-        <img src="@/static/search.png" class="search-icon w-[13px] h-[13px] mr-[10px]" alt="" />
-        <input class="" type="text" placeholder="请输入搜索内容" />
-      </view>
-      <view class="active-list mt-[12px] grid grid-cols-2 gap-2">
-        <ActivityItem v-for="(item, index) in activeList" :key="index" v-bind="item" class="mt-2"></ActivityItem>
-      </view>
+      测试
     </view>
   </view>
 </template>

+ 0 - 85
src/pages/login/index.vue

@@ -1,85 +0,0 @@
-<script setup lang="ts">
-import { ref, onMounted } from 'vue'
-import useUserState from '@/store/userState'
-import { gsap } from 'gsap'
-import { closeToast, showLoadingToast } from 'vant'
-
-const userState = useUserState()
-const pwd = ref('')
-const formContainer = ref(null)
-/**
- * 获取用户信息
- */
-const getUserInfo = () => {}
-
-/**
- * 触发store中的login
- */
-const handleLogin = async () => {
-  // if (userState.getUserBaseInfo?.username) {
-    await userState.signIn({
-      username: userState.getUserBaseInfo?.username,
-      password: pwd.value,
-    })
-
-    showLoadingToast('验证中...')
-    setTimeout(() => {
-      closeToast()
-      // 跳转到首页
-      uni.switchTab({
-        url: '/pages/index/index',
-      })
-    }, 1000)
-  // }
-}
-
-onMounted(() => {
-  gsap.fromTo(
-    formContainer.value,
-    { opacity: 0, y: -50 }, // 初始状态:透明度为0,向上偏移50像素
-    { opacity: 1, y: 0, duration: 1.0, ease: 'power2.out' } // 目标状态:透明度为1,y轴位置恢复,动画时长1.5秒
-  )
-})
-</script>
-
-<template>
-  <view class="w-full h-[100vh] bg-white flex justify-center items-center">
-    <view class="content w-[85%] align-center flex flex-col items-center">
-      <view class="title text-[#999999] mb-11">使用微信一键登录</view>
-      <img
-        v-if="userState.getUserBaseInfo?.avatar"
-        class="avatar w-32 h-32 rounded-full object-cover mb-10"
-        alt=""
-        :src="userState.getUserBaseInfo.avatar"
-      />
-      <img v-else class="avatar w-32 h-32 rounded-full object-cover mb-10" src="@/static/defaultAvatar.png" alt="" />
-      <div ref="formContainer">
-        <van-form>
-          <van-cell-group inset>
-            <van-field name="用户名" label="用户名" placeholder="用户名" autocomplete="username">
-              <template #input>
-                {{ userState.getUserBaseInfo?.nickname }}
-              </template>
-            </van-field>
-            <van-field
-              v-model="pwd"
-              type="password"
-              name="密码"
-              label="密码"
-              placeholder="密码"
-              autocomplete="new-password"
-              :rules="[{ required: true, message: '请填写密码' }]"
-            />
-          </van-cell-group>
-        </van-form>
-      </div>
-      <van-button round block type="primary" class="submit-btn !bg-sky-500" @click="handleLogin">微信登录</van-button>
-    </view>
-  </view>
-</template>
-
-<style lang="scss" scoped>
-.submit-btn {
-  margin-top: 40px;
-}
-</style>

+ 0 - 108
src/pages/my/index.vue

@@ -1,108 +0,0 @@
-<script setup lang="ts">
-import { getActiveList } from '@/api/active/list'
-import { ActiveListResp } from '@/api/active/list/types'
-import useUserState from '@/store/userState'
-import { onMounted, ref } from 'vue'
-
-const notice = ref(false)
-/** 用户基本信息 */
-const userBaseInfo = useUserState().getUserBaseInfo
-
-/** tab */
-const activeTab = ref(0)
-
-/** 获取活动列表 */
-const activeList = ref<ActiveListResp[]>([])
-const getActivityList = async () => {
-  const { data } = await getActiveList()
-  activeList.value = data
-}
-onMounted(() => {
-  getActivityList()
-})
-console.log(userBaseInfo)
-</script>
-
-<template>
-  <view class="common-page-containerBar">
-    <view class="top flex justify-between items-center mb-3.5 mt-3 px-[12px]">
-      <view class="title font-semibold text-2xl">我的</view>
-      <img v-if="notice" class="w-[20px] h-[24px]" src="@/static/notice-nomsg.png" alt="" />
-      <img v-else class="w-[20px] h-[24px]" src="@/static/notice-msg.png" alt="" />
-    </view>
-    <view>
-      <view v-if="userBaseInfo" class="user-info-panel p-[12px] flex flex-col items-center justify-center">
-        <img v-if="userBaseInfo.avatar" class="w-[100px] h-[100px] rounded-full" :src="userBaseInfo.avatar" alt="" />
-        <img v-else class="w-[100px] h-[100px] rounded-full" src="@/static/defaultAvatar.png" alt="" />
-        <view class="user-name mt-3 text-base font-bold">{{ userBaseInfo.nickname }}</view>
-        <view class="user-desc text-[#999999] mt-3">{{ userBaseInfo.desc }}</view>
-      </view>
-      <view class="divider"></view>
-      <view class="tab p-[12px] flex gap-4 justify-start text-[16px]">
-        <view class="tab-item" :class="activeTab === 0 ? 'active-tab-item' : ''" @click="activeTab = 0">我报名的活动</view>
-        <view class="tab-item" :class="activeTab === 1 ? 'active-tab-item' : ''" @click="activeTab = 1">我投票的活动</view>
-      </view>
-      <view class="flex-1 overflow-y-auto">
-        <view class="active-item h-[178px] p-3" v-for="(item, index) in activeList" :key="index">
-          <view class="content flex gap-2">
-            <view class="left relative">
-              <view class="number absolute top-0 left-0 bg-[#FF5900] w-[78px] h-[25px] leading-[25px] text-[14px] text-center text-white">
-                {{ item.status }}
-              </view>
-              <img class="w-[156px]" src="@/static/active-default.png" alt="" />
-            </view>
-            <view class="right">
-              <view class="top h-full flex flex-col justify-between">
-                <view class="title font-bold line-clamp-1 whitespace-nowrap text-ellipsis"> {{ item.title }}</view>
-                <view class="time">
-                  <view class="start-time time">{{ item.startTime }}</view>
-                  <view class="end-time time">{{ item.endTime }}</view>
-                </view>
-                <view class="number flex gap-[3px] items-center">
-                  <img src="@/static/fire.png" class="w-[12px] h-[16px] mr-1" alt="" srcset="" />
-                  <span class="text-[#FF5900] line-clamp-1 text-nowrap text-[14px] leading-[18px]">{{ item.personNum }}</span>
-                </view>
-              </view>
-            </view>
-          </view>
-          <view class="bottom flex items-center gap-3 mt-2">
-            <van-button type="primary" plain size="small">关闭</van-button>
-            <van-button type="primary" size="small">转发投票</van-button>
-            <van-button type="warning" size="small">投票详情</van-button>
-          </view>
-        </view>
-      </view>
-    </view>
-  </view>
-</template>
-
-<style lang="scss" scoped>
-.number {
-  border-radius: 5px 0 5px 0;
-}
-.divider {
-  width: 100%;
-  border: 1px solid rgba(241, 236, 236, 0.3);
-}
-.tab-item {
-  color: #999999;
-  padding: 6px;
-  border-radius: 5px;
-  background-color: white;
-}
-.active-tab-item {
-  color: #1e1e1e;
-  padding: 6px;
-  border-radius: 5px;
-  background-color: #f1f1f1;
-}
-.bottom {
-  :deep(.van-button) {
-    flex: 1;
-  }
-}
-.time {
-  color: #999999;
-  font-size: 14px;
-}
-</style>

+ 0 - 100
src/pages/rank/components/rankItem/index.vue

@@ -1,100 +0,0 @@
-<script lang="ts" setup>
-import { ActiveVoteRankResp } from '@/api/active/list/types'
-import { ComponentPublicInstance, ref } from 'vue'
-import gsap from 'gsap'
-
-const props = defineProps<ActiveVoteRankResp>()
-
-const status = ref<boolean>(props.status)
-
-/** 投票 */
-const plusOneStyle = ref({})
-const numRef = ref<ComponentPublicInstance>()
-const showPlusOne = (event: MouseEvent) => {
-  if (!numRef.value) return
-  // 使用 GSAP 动画
-  gsap.fromTo(
-    numRef.value.$el,
-    { opacity: 0, y: 0 },
-    {
-      opacity: 1,
-      y: -18,
-      duration: 0.5,
-      ease: 'power1.out',
-      onComplete: () => {
-        gsap.to('.plus-one', {
-          opacity: 0,
-          duration: 0.5,
-          ease: 'power1.in',
-        })
-      },
-    }
-  )
-}
-const handleVote = (event: MouseEvent) => {
-  showPlusOne(event)
-  status.value = true
-}
-
-/** 助力 */
-const emit = defineEmits(['support'])
-const handleSupport = () => {
-  emit('support', props.id)
-}
-</script>
-
-<template>
-  <view class="rank-item h-[240px] relative shadow">
-    <view class="number absolute top-0 left-0 bg-[#FF5900] w-[78px] h-[29px] text-center text-white">
-      {{ props.rank }}
-    </view>
-    <img v-if="props.imgUrl" class="w-full h-[162px]" :src="props.imgUrl" alt="" srcset="" />
-    <img v-else class="w-full h-[162px]" src="@/static/active-default.png" alt="" srcset="" />
-    <view class="middle flex justify-between line-clamp-1">
-      <view class="name text-[14px] font-bold line-clamp-1 text-nowrap">{{ props.name }}</view>
-      <view class="personNum text-[14px] flex">
-        <img src="@/static/fire.png" class="w-[12px] h-[16px] mr-1" alt="" srcset="" />
-        <span class="text-[#FF5900] line-clamp-1 text-nowrap">{{ props.hot }}</span>
-        <view :style="plusOneStyle" class="plus-one" ref="numRef">+1</view>
-      </view>
-    </view>
-    <view v-if="!status" @click="handleVote" class="bottom flex items-center justify-center text-white bg-[#12A4F2]">
-      <img src="@/static/vote.png" class="w-[16px] h-[16px]" alt="" srcset="" />
-      <span class="ml-[8px] text-[13px] mt-[3px]">为TA点赞</span>
-    </view>
-    <view v-else class="bottom flex justify-around items-center">
-      <view class="left flex gap-1 text-[#009B02]">
-        <img src="@/static/voted.png" class="w-[13px] h-[13px]" alt="" srcset="" />
-        <span class="text-[12px]">已投票</span>
-      </view>
-      <view class="right flex gap-1 text-[#12A4F2]">
-        <img src="@/static/rocket.png" class="w-[13px] h-[13px] mt-[2px]" alt="" srcset="" />
-        <span class="text-[12px]" @click="handleSupport">为TA助力</span>
-      </view>
-    </view>
-  </view>
-</template>
-
-<style lang="scss" scoped>
-.bottom {
-  height: 38px;
-  border-radius: 0 0 5px 5px;
-}
-.middle {
-  padding: 14px 14px 5px 14px;
-}
-.number {
-  border-radius: 5px 0 5px 0;
-}
-.personNum {
-  position: relative;
-}
-.plus-one {
-  position: absolute;
-  left: 50%;
-  font-size: 14px;
-  color: red;
-  opacity: 0;
-  pointer-events: none;
-}
-</style>

+ 0 - 169
src/pages/rank/index.vue

@@ -1,169 +0,0 @@
-<script setup lang="ts">
-import { getGiftList, getVoteRank } from '@/api/active/list'
-import { ActiveGiftListResp, ActiveVoteRankResp } from '@/api/active/list/types'
-import { onMounted, ref } from 'vue'
-import RankItem from './components/rankItem/index.vue'
-import { Swiper, SwiperSlide } from 'swiper/vue'
-import 'swiper/css'
-
-/** 投票排名 */
-const rankData = ref<ActiveVoteRankResp[]>([])
-const getVoteRankData = async () => {
-  const { data } = await getVoteRank()
-  rankData.value = data
-}
-
-/** 助力 */
-const supportShow = ref(false)
-const handleSupport = () => {
-  supportShow.value = true
-}
-
-/** 获取礼物列表 */
-const giftList = ref<ActiveGiftListResp[]>([])
-const handleGetGiftList = async () => {
-  const { data } = await getGiftList()
-  giftList.value = data
-}
-
-onMounted(() => {
-  getVoteRankData()
-  handleGetGiftList()
-})
-</script>
-
-<template>
-  <view class="top w-full h-[250px] flex justify-center">
-    <view class="top-title mt-4 text-[20px] text-white">活动投票</view>
-    <view class="bar shadow-lg flex">
-      <span class="flex-1 text-[#999999] text-[14px] flex items-center justify-center">+10人</span>
-      <view class="flex-1 flex items-center justify-center">
-        <span class="text-[#12A4F2] text-[16px] leading-3">00天00时00分</span>
-        <span class="text-[#999999] text-[14px] leading-3">结束</span>
-      </view>
-    </view>
-  </view>
-  <view class="content mt-[30px] p-[12px] grid grid-cols-2 gap-2">
-    <RankItem v-for="item in rankData" :key="item.id" v-bind="item" @support="handleSupport"></RankItem>
-  </view>
-  <van-popup v-model:show="supportShow" round position="bottom" :style="{ height: '74vh' }">
-    <view class="support-top flex justify-center items-center h-[49px] bg-[#12A4F2] text-white"> 测试测试场测试 </view>
-    <view class="top-desc p-[12px] font-bold text-[14px]"> 什么都可以加,您想买什么就买什么 </view>
-
-    <Swiper>
-      <swiper-slide>
-        <view class="gift-list p-[16px]">
-          <view class="gift-item" v-for="item in giftList.slice(0, 8)" :key="item.id">
-            <img :src="item.imgUrl" alt="" class="w-[50px] h-[44px]" />
-            <view class="gift-name">{{ item.name }}</view>
-            <view class="gift-price">
-              <img src="@/static/coin.png" alt="" class="w-[15px] h-[15px]" />
-              <span class="text-[#919191]">{{ item.price }}</span>
-            </view>
-          </view>
-        </view>
-      </swiper-slide>
-    </Swiper>
-    <van-divider></van-divider>
-    <view class="support-desc p-[12px]">
-      <view class="desc-title font-bold"> 助力介绍 </view>
-      <view class="desc-content text-[#999999] text-[12px] mt-2">
-        󰀐这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是
-        󰀐这是内容这是内容这是内容这是 󰀐这是内容这是内容这是内容这是
-      </view>
-    </view>
-    <van-divider></van-divider>
-    <view class="pop-bottom flex">
-      <view class="pop-bottom-left flex flex-1 gap-2">
-        <view class="pop-price flex items-center">
-          <img src="@/static/coin.png" alt="" class="w-[15px] h-[15px]" />
-          <span class="text-[#FF5900]">100</span>
-        </view>
-        <view class="flex gap-1 items-center">
-          <img src="@/static/fire.png" alt="" class="w-[15px] h-[15px]" />
-          <span class="text-[#FF5900]">100助力值</span>
-        </view>
-      </view>
-      <view class="pop-bottom-right mb-1 flex flex-1">
-        <select class="bottom-select">
-          <option value="1212">请选择</option>
-          <option value="1212">请选择</option>
-        </select>
-        <view class="bottom-btn-support flex items-center justify-center text-white"> 帮Ta助力 </view>
-      </view>
-    </view>
-  </van-popup>
-</template>
-
-<style lang="scss" scoped>
-.top {
-  background-image: url('@/static/active-default.png');
-  background-size: cover;
-  position: relative;
-}
-.bar {
-  width: 80%;
-  height: 59px;
-  background: #fefeff;
-  border-radius: 30px 30px 30px 30px;
-  position: absolute;
-  bottom: -30px;
-}
-.gift-list {
-  display: grid;
-  grid-template-columns: repeat(4, 1fr);
-  gap: 10px;
-  padding: 5px;
-  .gift-item {
-    display: flex;
-    flex-direction: column;
-    align-items: center;
-    text-align: center;
-    > img {
-      margin-bottom: 8px;
-    }
-    .gift-name {
-      font-size: 12px;
-      color: #333;
-    }
-
-    .gift-price {
-      display: flex;
-      align-items: center;
-      justify-content: center;
-
-      img {
-        margin-right: 4px;
-      }
-
-      span {
-        font-size: 14px;
-        color: #919191;
-      }
-    }
-  }
-}
-.bottom-select {
-  width: 85px;
-  height: 38px;
-  background: #ffffff;
-  border-radius: 60px 0px 0px 60px;
-  border: 1px solid #12a4f2;
-}
-.bottom-btn-support {
-  width: 85px;
-  height: 38px;
-  background: #12a4f2;
-  border-radius: 0px 60px 60px 0px;
-  border: 1px solid #12a4f2;
-}
-.pop-bottom {
-  position: absolute;
-  bottom: 30px;
-  left: 20px;
-  display: flex;
-  justify-content: center;
-  align-items: center;
-  width: calc(100% - 40px);
-}
-</style>

BIN
src/static/active-default.png


BIN
src/static/coin.png


BIN
src/static/defaultAvatar.png


BIN
src/static/fire.png


BIN
src/static/home-select.png


BIN
src/static/home-unselect.png


BIN
src/static/my-selected.png


BIN
src/static/my-unselect.png


BIN
src/static/notice-msg.png


BIN
src/static/notice-nomsg.png


BIN
src/static/rank-selected.png


BIN
src/static/rank-unselect.png


BIN
src/static/rocket.png


BIN
src/static/search.png


BIN
src/static/vote.png


BIN
src/static/voted.png


+ 0 - 166
src/subPages/pages/activity/detail/index.vue

@@ -1,166 +0,0 @@
-<script lang="ts" setup>
-import { ref } from 'vue'
-
-const props = withDefaults(
-  defineProps<{
-    title: string
-  }>(),
-  {
-    title: '活动标题',
-  }
-)
-
-/** 判断是活动详情, 还是报名页面 */
-const isDetail = ref(true)
-const handleSwitchModule = () => {
-  isDetail.value = false
-  console.log('handleSwitchModule', isDetail.value)
-}
-
-/** 作品上传 */
-const imageValue = ref([])
-const imageStyles = {
-  width: 100,
-  height: 100,
-}
-const handleImgUploadSuccess = (res: any) => {
-  console.log('handleImgUploadSuccess', res)
-}
-const handleImgUploadFail = (res: any) => {
-  console.log('handleImgUploadFail', res)
-}
-
-/** 跳转到活动海报页面 */
-const handleJumpPoster = () => {
-  uni.navigateTo({
-    url: '/subPages/pages/activity/poster/index',
-  })
-}
-</script>
-
-<template>
-  <view>
-    <view class="top w-full h-[250px] flex justify-center">
-      <view class="top-title mt-4 text-[20px] text-white">{{ props.title }}</view>
-      <view class="bar shadow-lg flex">
-        <view class="flex-1 flex items-center justify-center">
-          <span class="text-[12px] text-[#999999] leading-3">报名倒计时:</span>
-          <span class="text-[#12A4F2] text-[16px] leading-3">00天00时00分</span>
-        </view>
-      </view>
-    </view>
-    <view v-if="isDetail" class="detail">
-      <view class="title p-[12px] mt-[40px] font-bold"> titel </view>
-      <view class="content indent-8 p-[12px] text-[14px]">
-        这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容。
-      </view>
-      <view class="notice flex gap-3 p-[12px] ml-3">
-        <view class="left">
-          <img class="w-[40px] h-[40px]" src="@/subPages/static/calendar.png" alt="" />
-        </view>
-        <view class="right h-full flex flex-col justify-between text-[14px]">
-          <view class="title text-[#999999]">活动时间:</view>
-          <view class="content">2023年01月01日-2023年01月01日</view>
-        </view>
-      </view>
-      <view class="notice flex gap-3 p-[12px] pt-1 ml-3 pb-[65px]">
-        <view class="left">
-          <img class="w-[40px] h-[40px]" src="@/subPages/static/location.png" alt="" />
-        </view>
-        <view class="right h-full flex flex-col justify-between text-[14px]">
-          <view class="title text-[#999999]">活动地址:</view>
-          <view class="content">2023年01月01日-2023年01月01日</view>
-        </view>
-      </view>
-      <view class="btn-group p-[12px] flex gap-4">
-        <van-button type="warning" round @tap="handleJumpPoster">活动海报</van-button>
-        <van-button type="primary" round @click="handleSwitchModule">
-          <view class="flex gap-2 items-center justify-center">
-            <span>我要报名</span>
-            <img src="@/subPages/static/arrow.png" class="w-[17px] h-[17px]" />
-          </view>
-        </van-button>
-      </view>
-    </view>
-    <view v-else class="apply mt-[40px] p-[12px]">
-      <view class="apply-title"> 活动名称 </view>
-      <input class="apply-input" type="text" placeholder="请输入活动名称" />
-      <view class="apply-title"> 活动时间 </view>
-      <input class="apply-input" type="text" placeholder="请输入活动时间" />
-      <view class="apply-title mt-[20px]"> 上传作品 </view>
-      <uni-file-picker
-        class="upload-style"
-        v-model="imageValue"
-        fileMediatype="image"
-        :imageStyles="imageStyles"
-        :limit="1"
-        mode="grid"
-        @success="handleImgUploadSuccess"
-        @fail="handleImgUploadFail"
-      />
-      <view class="apply-title mt-[12px] mb-[12px]"> 报名须知 </view>
-      <view class="apply-tip text-[12px] text-[#666666] leading-[25px] mb-[50px]">
-        这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是内容这是
-        这是内容这是内容这是内容这是 这是内容这是内容这是内容这是 这是内容这是内容这是内容这是
-      </view>
-     <view class="w-full fixed bottom-[5px] right-[0]  p-[10px]">
-       <van-button type="primary" class="w-full"  round>
-        <view class="w-full flex items-center justify-center relative">
-          <span>开始报名</span>
-          <img src="@/subPages/static/arrow.png" class="w-[19px] h-[19px] absolute right-6" alt="" />
-        </view>
-      </van-button>
-     </view>
-    </view>
-  </view>
-</template>
-
-<style lang="scss" scoped>
-.top {
-  background-image: url('@/static/active-default.png');
-  background-size: cover;
-  position: relative;
-}
-.bar {
-  width: 80%;
-  height: 59px;
-  background: #fefeff;
-  border-radius: 30px 30px 30px 30px;
-  position: absolute;
-  bottom: -30px;
-}
-.btn-group {
-  position: fixed;
-  bottom: 0;
-  height: 50px;
-  box-sizing: border-box;
-  width: 100%;
-  margin-bottom: 15px;
-  :deep(.van-button) {
-    width: 50%;
-  }
-}
-.upload-style {
-  :deep(.file-picker__box-content) {
-    border: 1px dashed rgb(238, 238, 238) !important;
-  }
-}
-:deep(.van-button__text) {
-  width: 100%;
-  align-items: center;
-  justify-content: center;
-  display: flex;
-}
-.apply-title {
-  font-size: 16px;
-  font-weight: bold;
-  margin-bottom: 10px;
-}
-.apply-input {
-  font-size: 14px;
-  margin-bottom: 10px;
-  border: 1px solid rgb(238, 238, 238);
-  padding: 16px;
-  border-radius: 3px;
-}
-</style>

+ 0 - 64
src/subPages/pages/activity/poster/index.vue

@@ -1,64 +0,0 @@
-<script lang="ts" setup>
-import { ref } from 'vue'
-
-const imgUrl = ref()
-</script>
-
-<template>
-  <view>
-    <view class="bg fixed w-[100vw] h-[100vh]">
-      <img class="bg-cover" v-if="imgUrl" :src="imgUrl" alt="" />
-      <img class="bg-cover" src="@/static/active-default.png" alt="" srcset="" />
-    </view>
-    <view class="top w-full flex justify-center">
-      <view class="top-title mt-4 text-[20px] text-white">活动海报</view>
-    </view>
-    <view class="bottom flex gap-2 p-[20px] fixed bottom-0 z-[999]">
-      <view class="left w-[108px] h-[108px] border"></view>
-      <view class="right">
-        <view class="notice flex gap-3  ml-3">
-          <view class="left">
-            <img class="w-[60px] h-[45px]" src="@/subPages/static/calendar.png" alt="" />
-          </view>
-          <view class="h-full flex flex-col justify-between text-[14px]">
-            <view class="title">活动时间:</view>
-            <view class="content">2023年01月01日-2023年01月01日</view>
-          </view>
-        </view>
-        <view class="notice flex gap-3 pt-1 ml-3 ">
-          <view class="left">
-            <img class="w-[60px] h-[45px]" src="@/subPages/static/location.png" alt="" />
-          </view>
-          <view class="h-full flex flex-col justify-between text-[14px]">
-            <view class="title">活动地址:</view>
-            <view class="content ">2023年01月01日-2023年01月01日</view>
-          </view>
-        </view>
-      </view>
-    </view>
-  </view>
-</template>
-
-<style lang="scss" scoped>
-.bg {
-  position: fixed;
-  z-index: -1;
-}
-.bg-cover {
-  width: 100%;
-  height: 100%;
-  object-fit: cover;
-}
-.bottom {
-  background: rgba(0, 0, 0, 0.7);
-}
-.notice {
-  color: #999999;
-}
-.title {
-  font-size: 14px;
-}
-.content {
-  font-size: 12px
-}
-</style>

BIN
src/subPages/static/arrow.png


BIN
src/subPages/static/calendar.png


BIN
src/subPages/static/location.png


+ 1 - 0
src/utils/request/responseHandler.ts

@@ -1,6 +1,7 @@
 import {ApiResponse} from "@/api/types";
 import {AxiosError, AxiosResponse} from "axios";
 import {BusinessErrCode, businessErrCodeMsgKV, ErrCode, errCodeMsgKV} from "@/utils/request/errcode";
+import 'vant/es/notify/style'
 import { showNotify } from 'vant';
 
 

Algunos archivos no se mostraron porque demasiados archivos cambiaron en este cambio