Browse Source

feat: 添加 mp-html 组件,优化活动和学习旅游页面的内容展示逻辑

EvilDragon 3 months ago
parent
commit
fa2137dc4a

+ 1 - 0
packages/app/package.json

@@ -105,6 +105,7 @@
     "dayjs": "1.11.10",
     "extract-colors": "^4.1.0",
     "miniapp-color-thief": "^1.0.5",
+    "mp-html": "^2.5.0",
     "pinia": "2.0.36",
     "pinia-plugin-persistedstate": "3.2.1",
     "qs": "6.5.3",

+ 10 - 3
packages/app/src/pages/home/activity/detail/index.vue

@@ -37,7 +37,7 @@ import mapLocation from '@designer-hub/assets/src/libs/assets/mapLocation'
 import cameraWhite from '@designer-hub/assets/src/libs/assets/cameraWhite'
 import ImgBtnEvo from '@/components/img-btn-evo.vue'
 import ButtonEvo from '@/components/button-evo.vue'
-
+import mpHtml from 'mp-html/dist/uni-app/components/mp-html/mp-html.vue'
 const themeVars = ref<ConfigProviderThemeVars>({
   tableBorderColor: 'white',
   tabsNavLineBgColor: 'white',
@@ -302,11 +302,15 @@ onLoad(async (query: { id: string; type: 'activity' | 'studyTour' }) => {
     <SectionHeading v-if="isActivity" size="lg" title="活动介绍"></SectionHeading>
 
     <div class="mt-5 mx-3.5">
+      <!-- v-html="data['activityDesc'] || data['studyDesc']" -->
       <div
         v-if="tab === 0"
         class="text-justify text-[#c1c1c1] text-base font-normal font-['PingFang_SC'] leading-relaxed"
-        v-html="data['activityDesc']"
-      ></div>
+      >
+        <!-- <u-parse :content="data['activityDesc'] || data['studyDesc']"></u-parse> -->
+        <mpHtml :content="data['activityDesc'] || data['studyDesc']"></mpHtml>
+      </div>
+
       <div v-if="tab === 1 && 'studyTravelList' in data">
         <template v-for="(it, i) in data.studyTravelList" :key="i">
           <div class="flex flex-col gap-6">
@@ -468,3 +472,6 @@ onLoad(async (query: { id: string; type: 'activity' | 'studyTour' }) => {
     </wd-overlay>
   </div>
 </template>
+<style lang="scss">
+@import url('@/components/u-parse/u-parse.css');
+</style>

+ 2 - 2
packages/app/src/pages/home/study-tour/index.vue

@@ -67,9 +67,9 @@ onMounted(async () => {
       </template>
     </div>
 
-    <template v-if="studyTours.list.length">
+    <template v-if="studyTours?.list.length">
       <swiper class="aspect-[0.75/1] rounded-[20px] overflow-hidden">
-        <template v-for="(it, i) in studyTours.list" :key="i">
+        <template v-for="(it, i) in studyTours?.list" :key="i">
           <swiper-item>
             <RegisterCard :options="{ ...it, levelsByMemberLevel }"></RegisterCard>
           </swiper-item>

+ 1 - 1
packages/app/src/pages/home/study-tour/list.vue

@@ -38,7 +38,7 @@ onMounted(async () => {
     <PageHelper :request="getStudyTours" :query="{}">
       <template #default="{ source }">
         <div class="py-4 flex flex-col gap-6">
-          <template v-for="(it, index) in source.list" :key="index">
+          <template v-for="(it, index) in source?.list" :key="index">
             <div class="mx--2.5 my--2.5">
               <StudyTourCard
                 custom-class=""

File diff suppressed because it is too large
+ 469 - 2763
pnpm-lock.yaml


Some files were not shown because too many files changed in this diff