408249787@qq.com 8 часов назад
Родитель
Сommit
8fb0230081
4 измененных файлов с 30 добавлено и 24 удалено
  1. 15 10
      components/lock.uvue
  2. 3 3
      pages/catalog/index.uvue
  3. 9 8
      pages/index/home.uvue
  4. 3 3
      services/subject/course.ts

+ 15 - 10
components/lock.uvue

@@ -2,6 +2,7 @@
 import { type PropType } from 'vue'
 import { dict } from '@/.cool/store'
 import { wechatPay, wechatPayRequest, wechatPayQuery, wechatPayCancel } from '@/services/user'
+import { type SubjectCourseResult, fetchSubjectCourse } from '@/services/subject/course'
 import { user } from '@/.cool'
 import { ref } from 'vue'
 const emit = defineEmits(['close'])
@@ -27,19 +28,23 @@ const visible = ref(false)
 const visible2 = ref(false)
 const visible3 = ref(false)
 const visible4 = ref(false)
+const msg = ref('')
 function handleOpen() {
   console.log(1)
-  if (!props.finish) {
-    visible2.value = true
-    return
-  }
-  if (props.studyUnitLock) {
-    visible4.value = true
-    return
-  }
   switch (props.type) {
     case 'course':
-      visible.value = true
+      if (!props.record.payFlag) {
+        visible.value = true
+        return
+      }
+      fetchSubjectCourse({
+        id: props.record.id
+      }).then(res => {
+        if (res.studyUnitLock) {
+          visible4.value = true
+          msg.value = res.msg
+        }
+      })
       break;
     case 'vip':
       visible3.value = true
@@ -137,7 +142,7 @@ const handlePay = async () => {
   </cl-popup>
   <cl-popup v-model="visible4" showClose :size="400" :show-header="false" direction="center">
     <view class="p-[40px] ">
-      <cl-text class="text-center" color="#000" :size="20"> 一周后解锁! </cl-text>
+      <cl-text class="text-center" color="#000" :size="20"> {{ msg }} </cl-text>
       <cl-button class="mt-4" size="large" type="warn" block @tap="visible4 = false"> 返回 </cl-button>
     </view>
   </cl-popup>

+ 3 - 3
pages/catalog/index.uvue

@@ -23,11 +23,11 @@ async function getDataList() {
     subjectId: id
   })
   dataList.value = res || []
-  catalog.value = res?.[0] as SubjectCatalogResult
+  catalog.value = catalog.value || res?.[0] as SubjectCatalogResult
   handleSelect(catalog.value)
   // courseList.value = res?.courseList || []
 }
-onMounted(async () => {
+onShow(async () => {
   isLoading.value = true
   try {
     await getDataList()
@@ -58,7 +58,7 @@ function handleDetail(item: SubjectCourseResult) {
 async function handleSelect(val: SubjectCatalogResult) {
   catalog.value = val
   visible.value = false
-  courseList.value = []
+  // courseList.value = []
   const res = await getSubjectCoursePage({
     catalogId: val.id, pageSize: 20
   })

+ 9 - 8
pages/index/home.uvue

@@ -62,6 +62,7 @@ const visible = ref(false)
 const visible2 = ref(false)
 const visible3 = ref(false)
 const visible4 = ref(false)
+const visible5 = ref(false)
 onMounted(async () => {
 	if (!userInfo.value.wxOpenId) {
 		visible4.value = true
@@ -125,14 +126,8 @@ async function handleExchange() {
 			subjectId: dict.getValueByLabelMapByType('index_subject_id')['物理'],
 		})
 		await user.get()
-		ui.showConfirm({
-			title: "提示",
-			message: "兑换成功",
-			showCancel: false,
-			callback(action) {
-				visible3.value = false
-			},
-		});
+		visible3.value = false
+		visible5.value = true
 	} catch (err: any) {
 		uni.showToast({
 			title: err.message,
@@ -233,6 +228,12 @@ async function handleExchange() {
 				</view>
 			</view>
 		</cl-popup>
+		<cl-popup v-model="visible5" showClose :size="400" :show-header="false" direction="center">
+			<view class="p-[40px] ">
+				<cl-text class="text-center" color="#000" :size="20">兑换成功</cl-text>
+				<cl-button class="mt-4" size="large" type="warn" block @tap="visible5 = false"> 确定 </cl-button>
+			</view>
+		</cl-popup>
 		<Physics v-if="selected === 'physics'" />
 		<Chinese v-else-if="selected === 'chinese'" />
 		<English v-else-if="selected === 'english'" />

+ 3 - 3
services/subject/course.ts

@@ -42,9 +42,9 @@ export function getSubjectCoursePage(parameter: any) {
 // export function updateSubjectCourse(parameter: SubjectCourseResult) {
 //     return usePut<any>(`/subject/course/${parameter.id}`, parameter)
 // }
-// export function fetchSubjectCourse(parameter: any) {
-//     return useGet<SubjectCourseResult>(`/subject/course/${parameter.id}`)
-// }
+export function fetchSubjectCourse(parameter: any) {
+    return useGet(`/subject/course/${parameter.id}`) as Promise<SubjectCourseResult>
+}
 export function fetchSubjectCourseApp(parameter: any) {
     return useGet(`/subject/course/app/query/${parameter.id}`) as Promise<SubjectCourseResult>
 }