瀏覽代碼

feat:更新珍藏模块接口

aamin 1 年之前
父節點
當前提交
ed9f9cd884

+ 1 - 2
src/api/api/dynamic/index.ts

@@ -1,6 +1,5 @@
 import axiosInstance from '@/api/request'
 export const DynamicApi = {
   getDynamicList: (data: any) => axiosInstance.post('show/news/pageList', data),
-  getDetailById: (id: number) => axiosInstance.get(`${id}`)
+  getDetailById: (id: number) => axiosInstance.get(`show/news/detail/${id}`)
 }
-

+ 2 - 0
src/api/api/treasure/index.ts

@@ -4,3 +4,5 @@ export const TreasureApi = {
   getTreasureList: (data: any) => axiosInstance.post('show/goods/pageList', data),
   getDetailById: (id: number) => axiosInstance.get(`show/goods/detail/${id}`)
 }
+
+

文件差異過大導致無法顯示
+ 39 - 35
src/views/EnterNingguo/dynamic-detail.vue


+ 53 - 196
src/views/EnterNingguo/dynamic.vue

@@ -8,7 +8,7 @@ const active = ref(0)
 
 const router = useRouter()
 
-const data = ref([] as any)
+const data = ref([] as DynamicType[])
 
 const searchParames = ref({
   pageNum: 0,
@@ -20,6 +20,26 @@ const searchParames = ref({
   searchKey: string
 })
 
+export type DynamicType = {
+  createTime: string,
+  creatorId: number,
+  creatorName: string,
+  description: string,
+  dirCode: string,
+  fileIds: string,
+  files: any,
+  id: number,
+  name: string,
+  publishDate: string,
+  rtf: string,
+  thumb: string,
+  type: string,
+  updateTime: string
+}
+
+const typeList = ref([] as any)
+const allData = ref([] as DynamicType[])
+
 const goDetai = (id: number) => {
   router.push({ name: 'dynamicDetail', params: { id } });
 }
@@ -27,213 +47,50 @@ const goDetai = (id: number) => {
 const getList = async () => {
   const res: any = await DynamicApi.getDynamicList(searchParames.value)
   if (res.code == 0) {
-    data.value = res.data
+    allData.value = res.data.records
+    const types = res.data.records.map((item: any) => {
+      return item.type
+    })
+    typeList.value = [...new Set(types)]
+    typeList.value.unshift('全部')
+    data.value = allData.value
   } else {
-    showToast('活动信息获取失败')
+    showToast(res.msg)
   }
 }
 
-onBeforeMount(() => {
-  // getList()
-  data.value = [
-    {
-      type: '全部',
-      activitys: [
-        {
-          id: 0,
-          title: '宁国博物馆开放日',
-          thebm: 'https://n.sinaimg.cn/sinakd20112/0/w2048h1152/20220428/03e8-399a8decd0e38baf901f375ef9a4c050.jpg',
-          abstract: '这是摘要这是摘要',
-          mainBody: '这是正文这是正文这是正文这是正文这是正文这是正文这是正文这是正文这是正文这是正文',
-          videos: [
-            'https://wxfalangchang.4dage.com/national/1687243969660/thumb/20230710_094753323140.mp4'
-          ],
-          releaseTime: '2023-12-27'
-        },
-        {
-          id: 1,
-          title: '宁国博物馆开放日',
-          thebm: '',
-          abstract: '这是摘要这是摘要',
-          mainBody: '这是正文这是正文这是正文这是正文这是正文这是正文这是正文这是正文这是正文这是正文',
-          videos: [
-            'https://wxfalangchang.4dage.com/national/1687243969660/thumb/20230710_094753323140.mp4'
-          ],
-          releaseTime: '2023-12-27'
-        },
-        {
-          id: 2,
-          title: '宁国博物馆开放日',
-          thebm: '',
-          abstract: '',
-          mainBody: '这是正文这是正文这是正文这是正文这是正文这是正文这是正文这是正文这是正文这是正文',
-          videos: [
-            'https://wxfalangchang.4dage.com/national/1687243969660/thumb/20230710_094753323140.mp4'
-          ],
-          releaseTime: '2023-12-27'
-        },
-        {
-          id: 3,
-          title: '宁国博物馆开放日',
-          thebm: 'https://n.sinaimg.cn/sinakd20112/0/w2048h1152/20220428/03e8-399a8decd0e38baf901f375ef9a4c050.jpg',
-          abstract: '这是摘要这是摘要',
-          mainBody: '这是正文这是正文这是正文这是正文这是正文这是正文这是正文这是正文这是正文这是正文',
-          videos: [
-            'https://wxfalangchang.4dage.com/national/1687243969660/thumb/20230710_094753323140.mp4'
-          ],
-          releaseTime: '2023-12-27'
-        },
-      ]
-    },
-    {
-      type: '展览开放',
-      activitys: [
-        {
-          id: 4,
-          title: '宁国博物馆开放日',
-          thebm: 'https://n.sinaimg.cn/sinakd20112/0/w2048h1152/20220428/03e8-399a8decd0e38baf901f375ef9a4c050.jpg',
-          abstract: '这是摘要这是摘要',
-          mainBody: '这是正文这是正文这是正文这是正文这是正文这是正文这是正文这是正文这是正文这是正文',
-          videos: [
-            'https://wxfalangchang.4dage.com/national/1687243969660/thumb/20230710_094753323140.mp4'
-          ],
-          releaseTime: '2023-12-27'
-        },
-      ]
-    },
-    {
-      type: '展览开放',
-      activitys: [
-        {
-          id: 5,
-          title: '宁国博物馆开放日',
-          thebm: 'https://n.sinaimg.cn/sinakd20112/0/w2048h1152/20220428/03e8-399a8decd0e38baf901f375ef9a4c050.jpg',
-          abstract: '这是摘要这是摘要',
-          mainBody: '这是正文这是正文这是正文这是正文这是正文这是正文这是正文这是正文这是正文这是正文',
-          videos: [
-            'https://wxfalangchang.4dage.com/national/1687243969660/thumb/20230710_094753323140.mp4'
-          ],
-          releaseTime: '2023-12-27'
-        },
-      ]
-    },
-    {
-      type: '展览开放',
-      activitys: [
-        {
-          id: 6,
-          title: '宁国博物馆开放日',
-          thebm: 'https://n.sinaimg.cn/sinakd20112/0/w2048h1152/20220428/03e8-399a8decd0e38baf901f375ef9a4c050.jpg',
-          abstract: '这是摘要这是摘要',
-          mainBody: '这是正文这是正文这是正文这是正文这是正文这是正文这是正文这是正文这是正文这是正文',
-          videos: [
-            'https://wxfalangchang.4dage.com/national/1687243969660/thumb/20230710_094753323140.mp4'
-          ],
-          releaseTime: '2023-12-27'
-        },
-      ]
-    },
-    {
-      type: '展览开放',
-      activitys: [
-        {
-          id: 7,
-          title: '宁国博物馆开放日',
-          thebm: 'https://n.sinaimg.cn/sinakd20112/0/w2048h1152/20220428/03e8-399a8decd0e38baf901f375ef9a4c050.jpg',
-          abstract: '这是摘要这是摘要',
-          mainBody: '这是正文这是正文这是正文这是正文这是正文这是正文这是正文这是正文这是正文这是正文',
-          videos: [
-            'https://wxfalangchang.4dage.com/national/1687243969660/thumb/20230710_094753323140.mp4'
-          ],
-          releaseTime: '2023-12-27'
-        },
-      ]
-    },
-    {
-      type: '展览开放',
-      activitys: [
-        {
-          id: 7,
-          title: '宁国博物馆开放日',
-          thebm: 'https://n.sinaimg.cn/sinakd20112/0/w2048h1152/20220428/03e8-399a8decd0e38baf901f375ef9a4c050.jpg',
-          abstract: '这是摘要这是摘要',
-          mainBody: '这是正文这是正文这是正文这是正文这是正文这是正文这是正文这是正文这是正文这是正文',
-          videos: [
-            'https://wxfalangchang.4dage.com/national/1687243969660/thumb/20230710_094753323140.mp4'
-          ],
-          releaseTime: '2023-12-27'
-        },
-      ]
-    }, {
-      type: '展览开放',
-      activitys: [
-        {
-          id: 7,
-          title: '宁国博物馆开放日',
-          thebm: 'https://n.sinaimg.cn/sinakd20112/0/w2048h1152/20220428/03e8-399a8decd0e38baf901f375ef9a4c050.jpg',
-          abstract: '这是摘要这是摘要',
-          mainBody: '这是正文这是正文这是正文这是正文这是正文这是正文这是正文这是正文这是正文这是正文',
-          videos: [
-            'https://wxfalangchang.4dage.com/national/1687243969660/thumb/20230710_094753323140.mp4'
-          ],
-          releaseTime: '2023-12-27'
-        },
-      ]
-    }, {
-      type: '展览开放',
-      activitys: [
-        {
-          id: 7,
-          title: '宁国博物馆开放日',
-          thebm: 'https://n.sinaimg.cn/sinakd20112/0/w2048h1152/20220428/03e8-399a8decd0e38baf901f375ef9a4c050.jpg',
-          abstract: '这是摘要这是摘要',
-          mainBody: '这是正文这是正文这是正文这是正文这是正文这是正文这是正文这是正文这是正文这是正文',
-          videos: [
-            'https://wxfalangchang.4dage.com/national/1687243969660/thumb/20230710_094753323140.mp4'
-          ],
-          releaseTime: '2023-12-27'
-        },
-      ]
-    }, {
-      type: '展览开放',
-      activitys: [
-        {
-          id: 7,
-          title: '宁国博物馆开放日',
-          thebm: 'https://n.sinaimg.cn/sinakd20112/0/w2048h1152/20220428/03e8-399a8decd0e38baf901f375ef9a4c050.jpg',
-          abstract: '这是摘要这是摘要',
-          mainBody: '这是正文这是正文这是正文这是正文这是正文这是正文这是正文这是正文这是正文这是正文',
-          videos: [
-            'https://wxfalangchang.4dage.com/national/1687243969660/thumb/20230710_094753323140.mp4'
-          ],
-          releaseTime: '2023-12-27'
-        },
-      ]
-    }
-  ]
+watch(active, () => {
+  if (active.value == 0) {
+    data.value = allData.value
+  } else {
+    data.value = allData.value.filter((item: any) => {
+      return item.type == typeList.value[active.value]
+    })
+  }
+
+})
+
+onMounted(() => {
+  getList()
 })
+
 </script>
 
 <template>
   <div class='dynamic'>
-    <!-- <van-tabs v-model:active="active" id="tabs">
-      <van-tab v-for="(item, index) in data" :key="index" :title="item.type">
-       
-      </van-tab>
-    </van-tabs> -->
 
     <div class="tabs">
-      <div class="tab-item" :class="{ active: index === active }" v-for="(item, index) in data" :key="item"
-        @click="active = index">{{ item.type }}</div>
+      <div class="tab-item" :class="{ active: index === active }" v-for="(item, index) in typeList" :key="item"
+        @click="active = index">{{ item }}</div>
     </div>
 
     <div class="tab-content">
-      <div class="activity-card" v-for="(item, index) in data[active].activitys" :key="index" @click="goDetai(item.id)">
-        <img v-show="item.thebm != ''" class="thebm" :src="item.thebm" alt="">
-        <div class="title">{{ item.title }}</div>
-        <div v-show="item.abstract != ''" class="abstract">{{ item.abstract }}</div>
+      <div class="activity-card" v-for="(item, index) in data" :key="index" @click="goDetai(item.id)">
+        <img v-show="item.thumb != ''" class="thumb" :src="item.thumb" alt="">
+        <div class="title">{{ item.name }}</div>
+        <div v-show="item.description != ''" class="abstract">{{ item.description }}</div>
         <div class="time">
-          发布时间:{{ item.releaseTime }}
+          发布时间:{{ item.publishDate }}
         </div>
       </div>
     </div>
@@ -304,12 +161,12 @@ onBeforeMount(() => {
       // background: rgba(177, 177, 177, 0.226);
       border-radius: 15px;
       // padding: 20px;
-      margin-bottom: 20px;
+      margin-bottom: 30px;
 
-      .thebm {
+      .thumb {
         width: 100%;
         border-radius: 5px;
-        margin-bottom: 20px;
+        margin-bottom: 5px;
       }
 
       .title {

+ 1 - 1
src/views/ExhibitionService/active-detail.vue

@@ -34,7 +34,7 @@ const getDetailById = async () => {
       return item.filePath.includes('mp4')
     })
   } else {
-    showToast('活动信息获取失败')
+    showToast(res.msg)
   }
 }
 

+ 107 - 51
src/views/SmartTour/treasure-detail.vue

@@ -1,24 +1,33 @@
 <script setup lang='ts'>
 import playIcon from '@/assets/images/play.png';
 import pauseIcon from '@/assets/images/pause.png';
+import { showToast } from 'vant';
+import { TreasureApi } from '@/api/api/treasure';
 
 
 // import { DynamicApi } from "@/api/api/dynamic/index";
 // import { showToast } from "vant";
 
-const router = useRouter()
-// const route = useRoute()
+const route = useRoute()
 
 
 export type TreasureDetailType = {
+  age: string,
+  createTime: string,
+  creatorId: number,
+  creatorName: string,
+  description: string,
+  dirCode: string,
+  fileIds: string,
+  fileTypes: string,
   id: number,
-  title: string,
-  type: string,
-  era: string,
-  character: string,
-  info: string,
+  name: string,
+  publishDate: string,
   size: string,
-  themb: string,
+  texture: string,
+  thumb: string,
+  type: string,
+  updateTime: string
   files: {
     images: string[],
     moduleUrl: string,
@@ -26,7 +35,6 @@ export type TreasureDetailType = {
     // 可能是单个可能是多个
     videos: string[],
   }
-  releaseTime: string
 }
 
 const dynamicDetail = ref({} as TreasureDetailType)
@@ -72,36 +80,7 @@ const audioChange = () => {
   }
 }
 
-onBeforeMount(async () => {
-  // 获取活动详情
-  // const res: any = await DynamicApi.getDetailById(Number(route.params.id))
-  // if (res.code == 0) {
-  //   dynamicDetail.value = res.data
-
-  // } else {
-  //   showToast('活动信息获取失败')
-  // }
-
-  dynamicDetail.value = {
-    id: 0,
-    title: '《瓜洲马头新建石堤记》碑拓片',
-    type: '全部',
-    era: '朝代',
-    character: '质地',
-    info: '<p>八骏马图周器垒</p><p>      创造者、设计者:戴嘉林   高:38.8cm 口:12.1cm 足:14cm</p><p>      2017年11月8日,国家主席习近平和夫人彭丽媛陪同来华进行国事访问的美国总统特朗普和夫人梅拉尼娅一同参观故宫。宾主来到畅音阁,沿途欣赏了景泰蓝工艺精品和制作技艺展示,并尝试为景泰蓝《八骏马周器垒》,《国色天香》瓶点蓝,领略中华文化。</p><p></p>',
-    size: '志盖边长 40.5 厘米、厚 8.5 厘米、志石边长 41 厘米、厚 9.5 厘米',
-    themb: 'https://n.sinaimg.cn/sinakd20112/0/w2048h1152/20220428/03e8-399a8decd0e38baf901f375ef9a4c050.jpg',
-    files: {
-      images: ['https://super.4dage.com/data/TEST/edit/20230407_114029890.jpg', 'https://super.4dage.com/data/TEST/edit/20230524_155459428.png'],
-      moduleUrl: 'https://4dscene.4dage.com/culturalrelics/demo2/Model.html?m=HG01',
-      audio: 'https://houseoss.4dkankan.com/project/bjfljtl/audio/bgMusic.mp3',
-      // 可能是单个可能是多个
-      videos: ['https://super.4dage.com/data/TEST/edit/20230228_161113155.mp4'],
-    },
-    releaseTime: '2023-12-27'
-  }
-
-  // 初始化显示状态
+const initShowState = () => {
   if (dynamicDetail.value.files.moduleUrl != '') {
     initModule()
   } else if (dynamicDetail.value.files.images.length > 0) {
@@ -109,8 +88,82 @@ onBeforeMount(async () => {
   } else if (dynamicDetail.value.files.videos.length > 0) {
     initVideos()
   }
-
   audioBgUrl.value = dynamicDetail.value.files.audio
+
+  console.log(dynamicDetail.value)
+}
+
+const getDetailById = async () => {
+  const res: any = await TreasureApi.getDetailById(Number(route.params.id))
+  if (res.code == 0) {
+    dynamicDetail.value = res.data.entity
+
+    dynamicDetail.value.files = {
+      images: [],
+      moduleUrl: '',
+      audio: '',
+      // 可能是单个可能是多个
+      videos: [],
+    }
+
+    // 视频集合
+    dynamicDetail.value.files.videos = res.data.file.filter((item: any) => {
+      return item.filePath.includes('.mp4')
+    })
+    // 图片集合
+    dynamicDetail.value.files.images = res.data.file.filter((item: any) => {
+      return item.filePath.includes('.png') || item.filePath.includes('.jpg') || item.filePath.includes('.jpeg')
+    })
+
+    //  音频链接
+    dynamicDetail.value.files.audio = res.data.file.filter((item: any) => {
+      return item.filePath.includes('.mp3') || item.type === 'audio'
+    })[0]
+
+    //  模型链接
+    dynamicDetail.value.files.moduleUrl = res.data.file.filter((item: any) => {
+      return  item.type === 'model'
+    })[0]
+
+    initShowState()
+  } else {
+    showToast(res.msg)
+  }
+}
+
+onBeforeMount(async () => {
+  getDetailById()
+
+  // dynamicDetail.value = {
+  //   age: '唐朝',
+  //   createTime: '2024-04-19 09:03:01',
+  //   creatorId: 1,
+  //   creatorName: '',
+  //   description: '故明威将军大河卫指挥佥事许公墓志拓片故明威将军大河卫指挥佥事许公墓志拓片',
+  //   dirCode: '',
+  //   fileIds: '',
+  //   fileTypes: '',
+  //   id: 2,
+  //   name: '故明威将军大河卫指挥佥事许公墓志拓片',
+  //   publishDate: '2024-04-18',
+  //   size: '志盖边长 40.5 厘米、厚 8.5 厘米、志石边长 41 厘米、厚 9.5 厘米',
+  //   texture: '草',
+  //   thumb:
+  //     'https://k.sinaimg.cn/n/spider20230919/11/w499h312/20230919/77f0-2a03ee3faecf423cf77b2a2a119a714e.png/w700d1q75cms.jpg?by=cms_fixed_width',
+  //   type: '其他',
+  //   updateTime: '2024-04-19 09:03:01',
+  //   files: {
+  //     images: ['https://super.4dage.com/data/TEST/edit/20230407_114029890.jpg', 'https://super.4dage.com/data/TEST/edit/20230524_155459428.png'],
+  //     moduleUrl: 'https://4dscene.4dage.com/culturalrelics/demo2/Model.html?m=HG01',
+  //     audio: 'https://houseoss.4dkankan.com/project/bjfljtl/audio/bgMusic.mp3',
+  //     // 可能是单个可能是多个
+  //     videos: ['https://super.4dage.com/data/TEST/edit/20230228_161113155.mp4'],
+  //   }
+  // }
+
+  // 初始化显示状态
+  // initShowState()
+
 })
 </script>
 
@@ -140,20 +193,20 @@ onBeforeMount(async () => {
       </div>
     </div>
     <div class="info-box">
-      <div class="title">{{ dynamicDetail.title }}</div>
-      <!-- <div class="era">{{ dynamicDetail.era + '·' + dynamicDetail.character }}</div> -->
-      <div class="era">
-        <div style="margin-right: 20px;">朝代:{{ dynamicDetail.era }}</div>
-        <div>质地:{{ dynamicDetail.character }}</div>
+      <div class="title">{{ dynamicDetail.name }}</div>
+      <!-- <div class="age">{{ dynamicDetail.age + '·' + dynamicDetail.texture }}</div> -->
+      <div class="age">
+        <div style="margin-right: 20px;">朝代:{{ dynamicDetail.age }}</div>
+        <div>质地:{{ dynamicDetail.texture }}</div>
 
       </div>
 
       <div class="size">尺寸: {{ dynamicDetail.size }}</div>
-      <div class="info" v-html="dynamicDetail.info"></div>
+      <div class="info">{{ dynamicDetail.description }}</div>
     </div>
 
     <audio id="audioBg" :src="audioBgUrl" style="display: none;"></audio>
-    <img v-if="audioBgUrl != null" class="playing-icon" :src="audioPlaying ? pauseIcon : playIcon" alt=""
+    <img v-if="audioBgUrl" class="playing-icon" :src="audioPlaying ? pauseIcon : playIcon" alt=""
       @click="audioChange()">
     <!-- <img class="back-icon" @click="() => { router.back() }" src="@/assets/images/back.png" alt=""> -->
   </div>
@@ -162,6 +215,8 @@ onBeforeMount(async () => {
 <style lang='less' scoped>
 .detail-box {
   width: 100%;
+  min-height: 100%;
+  background: #F7F3E8;
 
   .media-box {
     width: 100%;
@@ -206,18 +261,19 @@ onBeforeMount(async () => {
       transform: translateX(-50%);
       bottom: 35px;
       display: flex;
-      justify-content: space-between;
+      justify-content: center;
       align-items: center;
 
       div {
         height: 25px;
-        padding: 0 20px;
+        padding: 0 15px;
         box-sizing: border-box;
         line-height: 25px;
         border-radius: 15px;
         background: #9F8E8E;
         color: #5B4848;
         font-size: 0.8em;
+        margin: auto 2vw;
 
         span {
           margin-left: 5px;
@@ -255,7 +311,7 @@ onBeforeMount(async () => {
       margin-bottom: 10px;
     }
 
-    .era {
+    .age {
       line-height: 1.5em;
       color: #9D4F0B;
       font-size: 1em;
@@ -272,7 +328,7 @@ onBeforeMount(async () => {
       margin-bottom: 10px;
     }
 
-    .info{
+    .info {
       color: #88866F;
     }
 

+ 1 - 1
src/views/SmartTour/treasure.vue

@@ -72,7 +72,7 @@ const getList = async () => {
   if (res.code == 0) {
     data.value = res.data.records
   } else {
-    showToast('活动信息获取失败')
+    showToast(res.msg)
   }
 }
 

+ 1 - 1
src/views/VolunteerHome/detail.vue

@@ -34,7 +34,7 @@ const getDetailById = async () => {
       return item.filePath.includes('.mp4')
     })
   } else {
-    showToast('活动信息获取失败')
+    showToast(res.msg)
   }
 }