whj vor 2 Tagen
Ursprung
Commit
8b6113dfdf

+ 1 - 0
pages.json

@@ -10,6 +10,7 @@
 			"path": "pages/user/login",
 			"style": {
 				"navigationStyle": "custom",
+				"pageOrientation": "portrait",
 				"disableScroll": true
 			}
 		},

+ 2 - 2
pages/catalog/components/progress.uvue

@@ -53,11 +53,11 @@ const props = defineProps({
 
 	.progress-select {
 		.progress-fill {
-			background-color: #194DCF;
+			background-color: #1ce7aa;
 		}
 
 		.progress-thumb {
-			background-color: #194DCF;
+			background-color: #1ce7aa;
 		}
 	}
 }

+ 86 - 161
pages/catalog/detail.uvue

@@ -1,31 +1,30 @@
 <script setup lang='ts'>
 import Back from '@/components/back.uvue'
 import Loading from '@/components/loading.uvue'
-import { ref, onMounted, watchEffect, nextTick, onUnmounted } from 'vue'
+import { ref, onMounted, watch, nextTick, onUnmounted } from 'vue'
 import { type SubjectCourseResult, fetchSubjectCourseApp, updateSubjectProgress } from '@/services/subject/course'
 import { router } from '@/.cool'
 const isLoading = ref(true)
-const showProgress = ref(true)
 const showControls = ref(true)
 const showVideo = ref(true)
 
 const data = ref({
-  videoSrc: 'https://oss.xiaoxiongcode.com/course-1/animate/第1集_观察.mp4',
+  videoSrc: '',
   webviewSrc: '',
 })
-const menuItems = [
-  { id: 'watch', name: '看课', icon: 'https://oss.xiaoxiongcode.com/static/home/kanke.png' },
-  // { id: 'practice', name: '练习', icon: 'https://oss.xiaoxiongcode.com/static/home/lianxi.png' },
-  { id: 'experiment', name: '虚拟实验', icon: 'https://oss.xiaoxiongcode.com/static/home/shiyan.png' },
-  // { id: 'diary', name: '科学日记', icon: 'https://oss.xiaoxiongcode.com/static/home/riji.png' }
-]
+// const menuItems = [
+//   { id: 'watch', name: '看课', icon: 'https://oss.xiaoxiongcode.com/static/home/kanke.png' },
+//   // { id: 'practice', name: '练习', icon: 'https://oss.xiaoxiongcode.com/static/home/lianxi.png' },
+//   { id: 'experiment', name: '虚拟实验', icon: 'https://oss.xiaoxiongcode.com/static/home/shiyan.png' },
+//   // { id: 'diary', name: '科学日记', icon: 'https://oss.xiaoxiongcode.com/static/home/riji.png' }
+// ]
 const menu2Items = [
   { id: '1', name: '观察', icon: 'https://oss.xiaoxiongcode.com/static/home/观察.png' },
   { id: '2', name: '思考', icon: 'https://oss.xiaoxiongcode.com/static/home/假设.png' },
   { id: '3', name: '假设', icon: 'https://oss.xiaoxiongcode.com/static/home/卡通扁平化功能图标设计.png' },
   { id: '4', name: '交互', icon: 'https://oss.xiaoxiongcode.com/static/home/总结.png' },
   { id: '5', name: '总结', icon: 'https://oss.xiaoxiongcode.com/static/home/拓展.png' },
-  // { id: '6', name: '拓展', icon: 'https://oss.xiaoxiongcode.com/static/home/拓展.png' },
+  { id: '6', name: '实验', icon: 'https://oss.xiaoxiongcode.com/static/home/shiyan.png' },
 ]
 //当前进度
 const progress = ref(1)
@@ -63,93 +62,36 @@ async function fetchCatalog() {
     })
     progress.value = 1
     progress2.value = 1
-    data.value.videoSrc = course.value?.detailItem?.observeVideoPath || ''
-    data.value.webviewSrc = course.value?.detailItem?.observeAnimationPath || ''
-  } else if (course.value?.courseUserProgress.status === 0) {
-    // progress.value = 1
-    // progress2.value = 1
+  } else {
+    progressStatus.value = course.value?.courseUserProgress.status
     progress.value = course.value?.courseUserProgress.mainProgress
     progress2.value = course.value?.courseUserProgress.assistantProgress
-  } else if (course.value?.courseUserProgress.status === 1) {
-    progressStatus.value = 1
-    progress.value = 1
-    progress2.value = 1
   }
 }
 onMounted(async () => {
+  isLoading.value = true
   await fetchCatalog()
-  isLoading.value = false
   initOnlibeRecord()
   setTimeout(() => {
-    showProgress.value = false
     isLoading.value = false
   }, 1000)
 })
 async function handleEnded() {
-
-  if (progress2.value === 5) {
-    if (progress.value === 2) {
-      return
-    }
-    progress.value++
-  } else {
-    progress2.value++
-  }
-  if (progress.value === 2) {
-    return
-  }
-  if (progress2.value === 5) {
-    progress.value++
-  }
-  if (progressStatus.value === 1) {
-    return
-  }
-  await updateSubjectProgress({
-    courseId: course.value?.id,
-    mainProgress: progress.value,
-    assistantProgress: progress2.value,
-    status: 0
-  })
-
-  // switch (progress2.value) {
-  //   case 1:
-  //     router.push({
-  //       path: "/pages/catalog/web-view",
-  //       query: {
-  //         src: data.value.webviewSrc,
-  //         progress: progress2.value,
-  //       }
-  //     });
-  //     break
-  //   case 2:
-  //   case 4:
-  //   case 5:
-  //   case 5:
-  //     progress2.value++
-  //     break
-  // }
+  progress.value++
 }
 const status = ref('wait')
 onShow(async () => {
   isLoading.value = true
   var pages = getCurrentPages();
   const prevPage = pages[pages.length - 1];
-  console.log('prevPage', prevPage)
   status.value = (prevPage as any)?.status || 'wait'
-  if (status.value === 'test') {
-    if (progress.value === 2) {
-      progress2.value = 1
-      progress.value = 1
-    }
-    (prevPage as any).status = 'wait'
-  }
   if (status.value === 'success') {
-    if (progress.value === 2) {
+    if (progress2.value === 6) {
       if (progressStatus.value === 0) {
         await updateSubjectProgress({
           courseId: course.value?.id,
-          mainProgress: 2,
-          assistantProgress: 5,
+          mainProgress: 1,
+          assistantProgress: 6,
           status: 1
         })
       }
@@ -160,87 +102,74 @@ onShow(async () => {
     (prevPage as any).status = 'wait'
   }
   isLoading.value = false
-
 })
 
 function handleControlsToggle(e) {
-  console.log(e)
   showControls.value = e.detail.show
 }
 
-watchEffect(() => {
+watch(() => progress2.value, (newVal, oldVal) => {
   isLoading.value = true
-  setTimeout(() => {
-    isLoading.value = false
-  }, 2000)
-  if (progress.value === 1) {
-    switch (progress2.value) {
-      case 1:
-        setTimeout(() => {
-          isLoading.value = false
-          data.value.videoSrc = course.value?.detailItem?.observeVideoPath
-        }, 2000)
-        break
-      case 2:
-        setTimeout(() => {
-          isLoading.value = false
-          data.value.videoSrc = course.value?.detailItem?.questionVideoPath
-        }, 2000)
-        break
-      case 3:
-        setTimeout(() => {
-          playVoice(course.value?.detailItem?.assumeAnimationPath)
-        }, 1000)
-        // data.value.webviewSrc = course.value?.detailItem?.assumeAnimationPath || data.value.webviewSrc
-        // router.push({
-        //   path: "/pages/catalog/web-view",
-        //   query: {
-        //     src: data.value.webviewSrc,
-        //     progress: progress2.value,
-        //   }
-        // });
-        break
-      case 4:
-        // data.value.videoSrc = course.value?.detailItem?.testVideoPath || data.value.videoSrc
-        data.value.webviewSrc = course.value?.detailItem?.summaryVideoPath
-        router.push({
-          path: "/pages/catalog/web-view",
-          query: {
-            src: data.value.webviewSrc,
-            progress: progress2.value,
-          }
-        });
-        break
-      case 5:
-        setTimeout(() => {
-          isLoading.value = false
-          data.value.videoSrc = course.value?.detailItem?.testVideoPath
-        }, 2000)
-        break
-      case 6:
-        setTimeout(() => {
-          isLoading.value = false
-          data.value.videoSrc = course.value?.detailItem?.expandVideoPath
-        }, 2000)
-        break
-    }
-  } else if (progress.value === 2) {
-    data.value.webviewSrc = course.value?.testItem?.animationPath
-    router.push({
-      path: "/pages/catalog/web-view",
-      query: {
-        src: data.value.webviewSrc,
-        progress: progress2.value,
-      }
-    });
+  if (course.value?.id) {
+    updateSubjectProgress({
+      courseId: course.value?.id,
+      mainProgress: progress.value,
+      assistantProgress: progress2.value,
+      status: progressStatus.value
+    })
   }
-})
+  switch (progress2.value) {
+    case 1:
+      setTimeout(() => {
+        isLoading.value = false
+        data.value.videoSrc = course.value?.detailItem?.observeVideoPath
+      }, 2000)
+      break
+    case 2:
+      setTimeout(() => {
+        isLoading.value = false
+        data.value.videoSrc = course.value?.detailItem?.questionVideoPath
+      }, 2000)
+      break
+    case 3:
+      setTimeout(() => {
+        playVoice(course.value?.detailItem?.assumeAnimationPath)
+      }, 1000)
+      break
+    case 4:
+      data.value.webviewSrc = course.value?.detailItem?.summaryVideoPath
+      router.push({
+        path: "/pages/catalog/web-view",
+        query: {
+          src: data.value.webviewSrc,
+          progress: progress2.value,
+        }
+      });
+      break
+    case 5:
+      setTimeout(() => {
+        isLoading.value = false
+        data.value.videoSrc = course.value?.detailItem?.testVideoPath
+      }, 2000)
+      break
+    case 6:
+      data.value.webviewSrc = course.value?.testItem?.animationPath
+      router.push({
+        path: "/pages/catalog/web-view",
+        query: {
+          src: data.value.webviewSrc,
+          progress: progress2.value,
+        }
+      });
+      break
+  }
+
+}, { immediate: true })
 const timers = ref(100)
 const timer = ref<any>()
 
 function handleTop() {
   progress2.value = 4
-  console.log(progress2.value)
 }
 function startRecord() {
   console.log('开始录音');
@@ -270,17 +199,14 @@ onUnmounted(() => {
 <template>
   <Loading v-show="isLoading" />
   <cl-page v-show="!isLoading">
-    <Back v-show="showProgress" />
-    <view class="w-[64vw] h-[36vw] absolute top-1/2  z-[1] left-[7vw]  translate50"
-      :class="{ ' rounded-2xl p-[3px] bg-black mt-[25px] ': showProgress, 'video-container': !showProgress }">
-      <video v-if="progress2 !== 3" id="video1" class="w-full h-full " :class="{ 'rounded-2xl': showProgress }"
-        :src="data.videoSrc" :show-center-play-btn="false" :show-background-playback-button="false"
-        :show-fullscreen-btn="false" :show-casting-button="false" autoplay @controlstoggle="handleControlsToggle"
-        @ended="handleEnded">
+    <Back />
+    <view class="video-container">
+      <video v-if="progress2 !== 3" id="video1" class="w-full h-full " :src="data.videoSrc"
+        :show-center-play-btn="false" :show-background-playback-button="false" :show-fullscreen-btn="false"
+        :show-casting-button="false" autoplay @controlstoggle="handleControlsToggle" @ended="handleEnded">
       </video>
       <view v-else class="w-full h-full ">
         <img src="https://oss.xiaoxiongcode.com/static/home/assert_1.gif" alt="" class="w-full h-full object-cover" />
-
         <!-- 顶部提示文字 -->
         <view class="absolute text-[20px] top-[20vh] w-full flex flex-row items-center justify-center">
           <!-- <cl-icon name="notification-3-fill" color="#FCE762" :size="40"></cl-icon> -->
@@ -328,7 +254,7 @@ onUnmounted(() => {
             @tap="handleTop">√</button>
         </view>
       </view>
-      <view class="video-fullscreen_title" v-show="showControls && !showProgress">
+      <view class="video-fullscreen_title" v-show="showControls">
         <Back />
         <view class="text-[20px] font-bold text-white">
           {{ course?.mainTitle }}
@@ -336,18 +262,17 @@ onUnmounted(() => {
         <view class="control-progress">
           <view class="before"></view>
           <view v-for="(item, i) in menu2Items" :key="item.id"
-            class="px-0 py-3 flex items-center justify-center gap-[5px] relative z-[1]"
-            :class="{ '!bg-[#fff] rounded-full': progress2 == i + 1 }" @tap="progress2 = i + 1">
+            class="py-2 px-3 flex items-center flex-row justify-center gap-[5px] relative z-[1]"
+            :class="{ '!bg-[#fff] rounded-l-full': progress2 == i + 1 }" @tap="progress2 = i + 1">
             <cl-image :src="item.icon" mode="heightFix" class="!h-[28px] !w-[50px]"></cl-image>
             <text class="text-[12px]  font-bold" :class="{ '!text-[#2BA0F3]': progress2 == i + 1 }">{{ item.name
             }}</text>
           </view>
-          <view class="before"></view>
         </view>
       </view>
     </view>
 
-    <view class="course-detail-page" :class="{ 'hidden': !showProgress }">
+    <view class="course-detail-page">
       <!-- 顶部标题栏 -->
       <view class="flex-[1]  h-[100vh] relative">
         <!-- <view class="flex flex-row w-full pr-[3vw] pl-[10vw] items-center justify-between absolute top-[30px]">
@@ -358,7 +283,7 @@ onUnmounted(() => {
 
       </view>
       <!-- 右侧功能菜单 -->
-      <view class="w-[25vw] h-[100vh] bg-[#5CBDFD] flex flex-col  justify-center p-5">
+      <!-- <view class="w-[25vw] h-[100vh] bg-[#5CBDFD] flex flex-col  justify-center p-5">
         <view v-for="(item, i) in menuItems" :key="item.id" class="h-[20vh]  flex flex-row items-center ">
           <view
             class="h-[15vh] w-[20vh] bg-[#999999] rounded-2xl border-[.5vh] border-[#254AD9] border-b-[1vh] border-solid flex items-center justify-center gap-[1vh]"
@@ -375,7 +300,7 @@ onUnmounted(() => {
               :class="{ '!bg-[#71C73D]': progress >= i, '!opacity-0': i === menuItems.length - 1 }"></view>
           </view>
         </view>
-      </view>
+      </view> -->
     </view>
 
   </cl-page>
@@ -424,12 +349,12 @@ onUnmounted(() => {
   color: #fff;
 
   .control-progress {
-    @apply flex flex-row gap-[3px] relative justify-end;
-    flex: 1;
+    @apply fixed top-1/2 right-[0px] flex flex-col gap-[3px] z-[100] h-[280px];
+    transform: translateY(-50%);
 
     .before {
-      @apply absolute top-1/2 right-0 w-[300px] h-[40px] bg-[#2BA0F3] rounded-l-full;
-      transform: translateY(-30%);
+      @apply absolute top-0 right-0 h-full w-full bg-[#2BA0F3];
+      border-radius: 25px 0 0 25px;
     }
   }
 }

+ 9 - 8
pages/catalog/index.uvue

@@ -101,14 +101,15 @@ async function onScroll(e: any) {
         @scroll="onScroll">
         <view class="scroll-view-item_H bg-[white]" v-for="course in courseList || []"
           :class="`category-${course.catalogId}`" :key="course.id" @tap="handleDetail(course)" ref="categoryRefs">
-          <cl-image :src="config.baseUrl + course?.fileList?.[0]?.url" mode="heightFix"
-            class="!w-full !h-[26vh] mb-[2px] rounded-xl"></cl-image>
-          <text class="text-[12px] font-bold">{{
-            course.mainTitle }}</text>
-          <text class="text-[10px] text-[#666]">{{
+          <cl-image :src="config.baseUrl + course?.fileList?.[0]?.url" mode="scaleToFill"
+            class="!w-full !h-[28vh] mb-[5px] rounded-xl"></cl-image>
+          <text class="text-[4vh] font-bold">{{
+            course.sortNum }}、{{
+              course.mainTitle }}</text>
+          <text class="text-[3vh] text-[#666]">{{
             course.assistantTitle }}</text>
           <view>
-            <Progress :num="2" :percentage="course.courseUserProgress?.mainProgress || 0" />
+            <Progress :num="2" :percentage="course.courseUserProgress ? course.courseUserProgress?.status + 1 : 0" />
           </view>
           <Lock v-if="!course.trialPlay && !course.payFlag" :record="course" isPay />
         </view>
@@ -152,7 +153,7 @@ async function onScroll(e: any) {
 
 <style lang="scss" scoped>
 .boxs {
-  @apply w-[calc(100vw-52vh)] h-[50vh] absolute top-1/2 left-[50vh] z-[1];
+  @apply w-[calc(100vw-52vh)] h-[57vh] absolute top-1/2 left-[50vh] z-[1];
   transform: translateY(-50%);
 }
 
@@ -163,7 +164,7 @@ async function onScroll(e: any) {
 }
 
 .scroll-view-item_H {
-  @apply w-[40vh] h-[50vh] mr-[20px] rounded-2xl border-[5px] border-[#1D4BD9] border-solid border-b-[10px] p-1 flex items-center relative;
+  @apply w-[50vh] h-[57vh] mr-[20px] rounded-2xl border-[5px] border-[#1D4BD9] border-solid border-b-[10px] p-1 flex items-center justify-between relative;
 }
 
 .light-tag {

+ 1 - 1
pages/index/components/physics.uvue

@@ -10,7 +10,7 @@ function handleView(url) {
 <template>
   <view class="bottom">
     <view class=" progress">
-      <view class="text-[24px] font-bold">学习进度 {{ user.info.value?.studyCourseNum }}/100</view>
+      <view class="text-[22px] font-bold">学习进度 {{ user.info.value?.studyCourseNum || 0 }}/100</view>
       <view class=" w-full flex flex-row items-center justify-center gap-2">
         <cl-progress class="flex-1" color="linear-gradient(0deg, #1FA5F5 37%, #A2D8FF 100%)"
           :value="user.info.value?.studyCourseNum" :show-text="false" :strokeWidth="16"

+ 3 - 5
pages/test/index.uvue

@@ -91,11 +91,9 @@ async function onScroll(e: any) {
         <view class="scroll-view-item_H bg-[white]" v-for="test in testList || []" :class="`category-${test.catalogId}`"
           :key="test.id" @tap="handleDetail(test)" ref="categoryRefs">
           <cl-image :src="test.animationImagePath" mode="heightFix"
-            class="!w-full !h-[26vh] mb-[2px] rounded-xl"></cl-image>
-          <text class="text-[16px] font-bold">{{
+            class="!w-full !h-[28vh] mb-[10px] rounded-xl"></cl-image>
+          <text class="text-[4vh] font-bold">{{
             test.name }}</text>
-          <text class="text-[14px] text-[#666]">{{
-            test.remark }}</text>
           <Lock v-if="test.lockFlag" :record="test" />
         </view>
       </scroll-view>
@@ -129,7 +127,7 @@ async function onScroll(e: any) {
 }
 
 .scroll-view-item_H {
-  @apply w-[40vh] h-[50vh] mr-[20px] rounded-2xl border-[5px] border-[#1D4BD9] border-solid border-b-[10px] p-1 flex items-center relative;
+  @apply w-[50vh] h-[50vh] mr-[20px] rounded-2xl border-[5px] border-[#1D4BD9] border-solid border-b-[10px] p-1 flex items-center relative;
 }
 
 .light-tag {

+ 3 - 3
pages/user/components/password.uvue

@@ -1,12 +1,12 @@
 <template>
-	<view class="flex flex-col w-[40vw]">
+	<view class="flex flex-col w-[80vw]">
 		<view class="mb-3 flex flex-row ">
-			<cl-input class="" :pt="{ className: '!h-[40px] !rounded-xxl !px-4 !w-[40vw]' }" v-model="form.username"
+			<cl-input class="" :pt="{ className: '!h-[40px] !rounded-xxl !px-4 !w-[80vw]' }" v-model="form.username"
 				placeholder="请输入手机号"></cl-input>
 		</view>
 
 		<view class="relative flex flex-row items-center mb-5">
-			<cl-input :pt="{ className: '!h-[40px] !rounded-xxl !px-4 !w-[40vw]' }" clearable v-model="form.password" password
+			<cl-input :pt="{ className: '!h-[40px] !rounded-xxl !px-4 !w-[80vw]' }" clearable v-model="form.password" password
 				placeholder="请输入密码">
 			</cl-input>
 		</view>

+ 3 - 3
pages/user/components/phone.uvue

@@ -1,12 +1,12 @@
 <template>
-	<view class="flex flex-col w-[40vw]">
+	<view class="flex flex-col w-[80vw]">
 		<view class="mb-3 flex flex-row ">
-			<cl-input class="" :pt="{ className: '!h-[40px] !rounded-xxl !px-4 !w-[40vw]' }" v-model="form.username"
+			<cl-input class="" :pt="{ className: '!h-[40px] !rounded-xxl !px-4 !w-[80vw]' }" v-model="form.username"
 				placeholder="请输入手机号"></cl-input>
 		</view>
 
 		<view class="relative flex flex-row items-center mb-5">
-			<cl-input :pt="{ className: '!h-[40px] !rounded-xxl !px-4 !w-[40vw]' }" v-model="form.code" :clearable="false"
+			<cl-input :pt="{ className: '!h-[40px] !rounded-xxl !px-4 !w-[80vw]' }" v-model="form.code" :clearable="false"
 				type="number">
 			</cl-input>
 			<view class="absolute right-0">

+ 77 - 33
pages/user/login.uvue

@@ -1,35 +1,75 @@
 <template>
 	<cl-page>
 		<Back />
-		<img src="https://oss.xiaoxiongcode.com/static/home/1.jpg" alt="" class="w-full h-full object-cover">
-		<view class="title">
-			少儿物理启蒙
-		</view>
-		<view class="group">
-			<cl-image src="https://oss.xiaoxiongcode.com/static/home/8.png" width="150px" height="150px" mode="heightFix" />
-			<view class="w-[40vw]">
-				<cl-tabs v-model="val" :list="list" :form="formData" @change="tabsChange"></cl-tabs>
-				<cl-form v-model="formData" :pt="{ className: 'mt-1' }">
-					<view v-if="val === 'quickly_login'">
-						<phone :form="formData" />
+		<!-- <cl-image src="https://oss.xiaoxiongcode.com/static/home/1.jpg" mode="heightFix" class="w-full h-full object-cover"
+			height="100%" width="100%" /> -->
+		<view class="content">
+			<view class="title">
+				<cl-image src="https://oss.xiaoxiongcode.com/static/home/logo.png" width="120px" height="120px"
+					mode="heightFix" />
+
+				<cl-text :size="20" color="#666">
+					少儿物理启蒙
+				</cl-text>
+			</view>
+			<view class="group">
+
+				<view class="w-[80vw]">
+					<!-- <cl-tabs v-model="val" :list="list" fill :form="formData" @change="tabsChange"></cl-tabs> -->
+					<cl-form v-model="formData" :pt="{ className: 'mt-1' }">
+						<view v-if="val === 'quickly_login'">
+							<phone :form="formData" />
+						</view>
+						<view v-else>
+							<password :form="formData" />
+						</view>
+						<view class="flex flex-row items-center justify-center mb-5">
+							<cl-button :pt="{ className: '!h-[45px] !rounded-full w-[200px] mx-auto' }" :loading="loading"
+								@tap="toLogin">
+								登录
+							</cl-button>
+						</view>
+
+					</cl-form>
+				</view>
+			</view>
+			<view class="absolute bottom-20 w-full flex flex-row  gap-4 items-center justify-center">
+				<view>
+					<cl-button type="success" :pt="{ className: '!h-[40px] !rounded-full w-[40px] mx-auto !p-1' }"
+						:loading="loading" @tap="toWechatLogin">
+						<cl-image src="https://oss.xiaoxiongcode.com/static/个人中心/微信.png" mode="heightFix" height="20px"
+							width="auto"></cl-image>
+					</cl-button>
+					<view class="mt-1">
+						<cl-text :size="14" color="#666">
+							微信登录
+						</cl-text>
 					</view>
-					<view v-else>
-						<password :form="formData" />
+				</view>
+				<view v-if="val === 'password'">
+					<cl-button type="info" :pt="{ className: '!h-[40px] !rounded-full w-[40px] mx-auto !p-1' }" :loading="loading"
+						@tap="tabsChange('quickly_login')">
+						<cl-image src="https://oss.xiaoxiongcode.com/static/home/phone.svg" mode="heightFix" height="20px"
+							width="auto"></cl-image>
+					</cl-button>
+					<view class="mt-1">
+						<cl-text :size="14" color="#666">
+							验证码登录
+						</cl-text>
 					</view>
-					<view class="flex flex-row items-center justify-center gap-4">
-						<cl-button :pt="{ className: '!h-[45px] !rounded-full w-[140px] mx-auto' }" :loading="loading"
-							@tap="toLogin">
-							登录
-						</cl-button>
-						<cl-button type="success" :pt="{ className: '!h-[45px] !rounded-full w-[140px] mx-auto ' }"
-							:loading="loading" @tap="toWechatLogin">
-							<view class="flex flex-row items-center justify-center gap-2">
-								<cl-image src="https://oss.xiaoxiongcode.com/static/个人中心/微信.png" mode="heightFix" height="20px"
-									width="auto"></cl-image> 登录
-							</view>
-						</cl-button>
+				</view>
+				<view v-else>
+					<cl-button type="info" :pt="{ className: '!h-[40px] !rounded-full w-[40px] mx-auto !p-1' }" :loading="loading"
+						@tap="tabsChange('password')">
+						<cl-image src="https://oss.xiaoxiongcode.com/static/home/password.svg" mode="heightFix" height="20px"
+							width="auto"></cl-image>
+					</cl-button>
+					<view class="mt-1">
+						<cl-text :size="14" color="#666">
+							密码登录
+						</cl-text>
 					</view>
-				</cl-form>
+				</view>
 			</view>
 		</view>
 		<cl-action-sheet ref="actionSheetRef">
@@ -78,7 +118,8 @@ const formData = ref<LoginForm>({
 	code: ''
 })
 const loading = ref(false)
-function tabsChange() {
+function tabsChange(type: string) {
+	val.value = type
 	if (val.value === 'quickly_login') {
 		formData.value.code = ''
 		formData.value.loginType = 99
@@ -159,21 +200,24 @@ function handleSelect(item: string) {
 </script>
 
 <style lang="scss" scoped>
+.content {
+	@apply w-full h-full;
+	// 渐变背景
+	background: linear-gradient(180deg, #169deb5e 0%, #fff 20%);
+}
+
 .title {
 	position: absolute;
-	top: 6%;
-	left: 50%;
-	transform: translateX(-50%);
+	top: 10%;
 	//设置字间距
 	letter-spacing: 0.1em;
-	@apply text-white text-5xl font-bold;
+	@apply flex flex-col w-full items-center justify-center;
 }
 
 .group {
-	@apply absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 bg-white px-4 py-2 rounded-xl;
+	@apply absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 bg-white px-4 py-2 pb-10 rounded-xl;
 	display: flex;
 	align-items: center;
 	flex-direction: row;
-	height: 60vh;
 }
 </style>