408249787 hai 3 horas
pai
achega
544c496ac5
Modificáronse 2 ficheiros con 29 adicións e 11 borrados
  1. 21 4
      components/lock.uvue
  2. 8 7
      pages/catalog/index.uvue

+ 21 - 4
components/lock.uvue

@@ -9,14 +9,23 @@ const props = defineProps({
   isPay: {
     type: Boolean,
     default: false
+  },
+  platFormLock: {
+    type: Boolean,
+    default: true
   }
 })
 const visible = ref(false)
 function handleOpen() {
-  if (!props.isPay) {
+  if (!props.isPay || props.platFormLock) {
     return
   }
-  visible.value = true
+  if (!props.record.isPay && !props.record.trialPlay) {
+    visible.value = true
+  }
+  else {
+    visible2.value = true
+  }
 }
 async function getPayStatus(outTradeNo: string) {
   const res = await wechatPayQuery({
@@ -33,7 +42,7 @@ const handlePay = async () => {
     const { prepayId, outTradeNo } = await wechatPay({
       subjectId: props.record.subjectId,
     })
-    const { signature,timestamp,nonceStr } = await wechatPayRequest({
+    const { signature, timestamp, nonceStr } = await wechatPayRequest({
       prepayId, outTradeNo
     })
     console.log(signature)
@@ -41,7 +50,7 @@ const handlePay = async () => {
       provider: "wxpay",
       timeStamp: timestamp,
       nonceStr: nonceStr,
-      package: "prepay_id="+prepayId,
+      package: "prepay_id=" + prepayId,
       paySign: signature,
       signType: "RSA",
       success: (res) => {
@@ -77,6 +86,8 @@ const handlePay = async () => {
   }
 
 }
+const visible2 = ref(false)
+
 </script>
 <template>
   <view class="absolute top-0 left-0 w-full h-full flex items-center justify-center bg1" @tap.stop="handleOpen">
@@ -88,6 +99,12 @@ const handlePay = async () => {
       <cl-button class="mt-4" size="large" type="warn" block @tap="handlePay"> 前往购课 </cl-button>
     </view>
   </cl-popup>
+  <cl-popup v-model="visible2" 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="visible2 = false"> 返回 </cl-button>
+    </view>
+  </cl-popup>
 </template>
 <style lang="scss" scoped>
 .bg1 {

+ 8 - 7
pages/catalog/index.uvue

@@ -9,7 +9,7 @@ import Back from '@/components/back.uvue'
 import Loading from '@/components/loading.uvue'
 import { config } from '@/config'
 import { dict } from '@/.cool/store'
-import { router,debounce } from "@/.cool";
+import { router, debounce } from "@/.cool";
 
 const isLoading = ref(true)
 const visible = ref<boolean>(false)
@@ -60,7 +60,7 @@ async function handleSelect(val: SubjectCatalogResult) {
   uni.createSelectorQuery().select(`.category-${val.id}`).boundingClientRect().exec(async (rect) => {
     if (cardsScrollView.value && rect[0]) {
       cardsScrollView.value.scrollTo({
-        left:scrollLeft.value + rect[0].left - dict.getWindowHeight() / 2, // 减去顶部偏移
+        left: scrollLeft.value + rect[0].left - dict.getWindowHeight() / 2, // 减去顶部偏移
         animated: true
       })
     }
@@ -82,14 +82,14 @@ async function handleSelect(val: SubjectCatalogResult) {
 //     })
 //   })
 // }, 300)
-function debouncedOnScroll(e:any) {
+function debouncedOnScroll(e: any) {
   console.log(e);
- scrollLeft.value = e.detail.scrollLeft
+  scrollLeft.value = e.detail.scrollLeft
   dataList.value.forEach(async (category) => {
     const selector = `.category-${category.id}`
     await uni.createSelectorQuery().selectAll(selector).boundingClientRect().exec((rects) => {
       for (const rect of rects[0]) {
-        if (rect.left <= (dict.getWindowHeight() / 2)&&rect.left>0) {
+        if (rect.left <= (dict.getWindowHeight() / 2) && rect.left > 0) {
           catalog.value = category
           return
         }
@@ -131,9 +131,10 @@ function debouncedOnScroll(e:any) {
             course.assistantTitle }}</text>
           <view>
             <Progress :num="6" size="12px"
-              :percentage="course.courseUserProgress ?course.courseUserProgress?.status == 1 ? 6 : course.courseUserProgress?.assistantProgress : 0" />
+              :percentage="course.courseUserProgress ? course.courseUserProgress?.status == 1 ? 6 : course.courseUserProgress?.assistantProgress : 0" />
           </view>
-          <Lock v-if="!course.trialPlay && !course.payFlag" :record="course" isPay />
+          <Lock v-if="!course.trialPlay && !course.payFlag || !course.platFormLock" :record="course" isPay
+            :platFormLock="course.platFormLock" />
         </view>
       </scroll-view>
     </view>