Showing
5 changed files
with
40 additions
and
27 deletions
| 1 | <!-- | 1 | <!-- |
| 2 | * @Date: 2024-04-10 14:16:36 | 2 | * @Date: 2024-04-10 14:16:36 |
| 3 | * @LastEditors: hookehuyr hookehuyr@gmail.com | 3 | * @LastEditors: hookehuyr hookehuyr@gmail.com |
| 4 | - * @LastEditTime: 2024-04-12 12:27:41 | 4 | + * @LastEditTime: 2024-04-12 23:15:09 |
| 5 | * @FilePath: /fxPark/src/components/danmaku.vue | 5 | * @FilePath: /fxPark/src/components/danmaku.vue |
| 6 | - * @Description: 文件描述 | 6 | + * @Description: 弹幕组件 |
| 7 | --> | 7 | --> |
| 8 | <template> | 8 | <template> |
| 9 | <div class="danmaku-page"> | 9 | <div class="danmaku-page"> |
| 10 | - <vue-danmaku ref="danmakuRef" v-model:danmus="danmus" useSlot loop :channels="2" :speeds="50" :top="0" style="height:15rem; width:100vw; position: absolute; top:0; z-index: 10; padding-top: 1rem;"> | 10 | + <vue-danmaku ref="danmakuRef" class="danmu-boxer" v-model:danmus="danmus" useSlot loop :channels="4" :speeds="30" :top="0"> |
| 11 | <template v-slot:dm="{ index, danmu }"> | 11 | <template v-slot:dm="{ index, danmu }"> |
| 12 | <div class="dm-item"> | 12 | <div class="dm-item"> |
| 13 | <van-icon v-if="danmu.status === '2'" name="fire-o" color="red" /> | 13 | <van-icon v-if="danmu.status === '2'" name="fire-o" color="red" /> |
| ... | @@ -21,7 +21,6 @@ | ... | @@ -21,7 +21,6 @@ |
| 21 | <script setup> | 21 | <script setup> |
| 22 | import { ref } from 'vue' | 22 | import { ref } from 'vue' |
| 23 | import { useRoute, useRouter } from 'vue-router' | 23 | import { useRoute, useRouter } from 'vue-router' |
| 24 | - | ||
| 25 | import vueDanmaku from 'vue3-danmaku' | 24 | import vueDanmaku from 'vue3-danmaku' |
| 26 | import { Cookies, $, _, axios, storeToRefs, mainStore, Toast, useTitle } from '@/utils/generatePackage.js' | 25 | import { Cookies, $, _, axios, storeToRefs, mainStore, Toast, useTitle } from '@/utils/generatePackage.js' |
| 27 | //import { } from '@/utils/generateModules.js' | 26 | //import { } from '@/utils/generateModules.js' |
| ... | @@ -49,6 +48,7 @@ watch(() => props.text, (v) => { | ... | @@ -49,6 +48,7 @@ watch(() => props.text, (v) => { |
| 49 | danmakuRef.value.add(v) | 48 | danmakuRef.value.add(v) |
| 50 | } | 49 | } |
| 51 | }); | 50 | }); |
| 51 | + | ||
| 52 | watch(() => props.show, (v) => { | 52 | watch(() => props.show, (v) => { |
| 53 | nextTick(() => { | 53 | nextTick(() => { |
| 54 | if (v) { | 54 | if (v) { |
| ... | @@ -67,7 +67,6 @@ const danmus = ref([]); | ... | @@ -67,7 +67,6 @@ const danmus = ref([]); |
| 67 | onMounted(async () => { | 67 | onMounted(async () => { |
| 68 | const { code, data } = await getDanmuAPI(); | 68 | const { code, data } = await getDanmuAPI(); |
| 69 | if (code) { | 69 | if (code) { |
| 70 | - console.warn(data); | ||
| 71 | danmus.value = data; | 70 | danmus.value = data; |
| 72 | } | 71 | } |
| 73 | }) | 72 | }) |
| ... | @@ -76,6 +75,14 @@ onMounted(async () => { | ... | @@ -76,6 +75,14 @@ onMounted(async () => { |
| 76 | 75 | ||
| 77 | <style lang="less" scoped> | 76 | <style lang="less" scoped> |
| 78 | .danmaku-page { | 77 | .danmaku-page { |
| 78 | + .danmu-boxer { | ||
| 79 | + height:15rem; | ||
| 80 | + width:100vw; | ||
| 81 | + position: absolute; | ||
| 82 | + top:0; | ||
| 83 | + z-index: 10; | ||
| 84 | + padding-top: 1rem; | ||
| 85 | + } | ||
| 79 | .dm-item { | 86 | .dm-item { |
| 80 | background-color: rgba(48, 48, 48, 0.50); | 87 | background-color: rgba(48, 48, 48, 0.50); |
| 81 | padding: 0.25rem 1rem; | 88 | padding: 0.25rem 1rem; | ... | ... |
| 1 | <!-- | 1 | <!-- |
| 2 | * @Date: 2024-04-07 10:15:55 | 2 | * @Date: 2024-04-07 10:15:55 |
| 3 | * @LastEditors: hookehuyr hookehuyr@gmail.com | 3 | * @LastEditors: hookehuyr hookehuyr@gmail.com |
| 4 | - * @LastEditTime: 2024-04-12 22:28:29 | 4 | + * @LastEditTime: 2024-04-13 08:46:06 |
| 5 | * @FilePath: /fxPark/src/views/fxPark/index.vue | 5 | * @FilePath: /fxPark/src/views/fxPark/index.vue |
| 6 | * @Description: 首页 | 6 | * @Description: 首页 |
| 7 | --> | 7 | --> |
| ... | @@ -19,7 +19,7 @@ | ... | @@ -19,7 +19,7 @@ |
| 19 | <van-icon name="chat-o" /> <span>展览介绍</span> | 19 | <van-icon name="chat-o" /> <span>展览介绍</span> |
| 20 | </div> | 20 | </div> |
| 21 | <div class="quick-entrance-item"> | 21 | <div class="quick-entrance-item"> |
| 22 | - <van-icon name="chat-o" /> <span>文明校园报名</span> | 22 | + <van-icon name="chat-o" /> <span>校园报名</span> |
| 23 | </div> | 23 | </div> |
| 24 | </div> | 24 | </div> |
| 25 | <div class="container" v-for="(item, index) in data_list" :key="index" @click="onChipClick()"> | 25 | <div class="container" v-for="(item, index) in data_list" :key="index" @click="onChipClick()"> |
| ... | @@ -57,7 +57,6 @@ | ... | @@ -57,7 +57,6 @@ |
| 57 | <script setup> | 57 | <script setup> |
| 58 | import { ref } from 'vue' | 58 | import { ref } from 'vue' |
| 59 | import { useRoute, useRouter } from 'vue-router' | 59 | import { useRoute, useRouter } from 'vue-router' |
| 60 | - | ||
| 61 | import { Cookies, $, _, axios, storeToRefs, mainStore, Toast, useTitle } from '@/utils/generatePackage.js' | 60 | import { Cookies, $, _, axios, storeToRefs, mainStore, Toast, useTitle } from '@/utils/generatePackage.js' |
| 62 | //import { } from '@/utils/generateModules.js' | 61 | //import { } from '@/utils/generateModules.js' |
| 63 | import { parseQueryString } from '@/utils/tools.js' | 62 | import { parseQueryString } from '@/utils/tools.js' |
| ... | @@ -123,8 +122,11 @@ onMounted(async () => { | ... | @@ -123,8 +122,11 @@ onMounted(async () => { |
| 123 | }); | 122 | }); |
| 124 | } else { // 全点亮 | 123 | } else { // 全点亮 |
| 125 | all_actived.value = true; | 124 | all_actived.value = true; |
| 126 | - data.forEach(item => { | 125 | + // 过滤树类型碎片 |
| 127 | - item.chip_src = TREE_CHIP[item.revision]['active']; // 根据点亮状态,显示碎片地址 | 126 | + data |
| 127 | + .filter(item => item.is_tree === 1) | ||
| 128 | + .forEach(item => { | ||
| 129 | + item.chip_src = TREE_CHIP[item.revision]['active']; | ||
| 128 | }); | 130 | }); |
| 129 | } | 131 | } |
| 130 | // | 132 | // |
| ... | @@ -146,8 +148,7 @@ const onChipClick = () => { // 点击碎片回调 | ... | @@ -146,8 +148,7 @@ const onChipClick = () => { // 点击碎片回调 |
| 146 | scanType: ["qrCode","barCode"], // 可以指定扫二维码还是一维码,默认二者都有 | 148 | scanType: ["qrCode","barCode"], // 可以指定扫二维码还是一维码,默认二者都有 |
| 147 | success: function (res) { | 149 | success: function (res) { |
| 148 | let result = res.resultStr; // 当needResult 为 1 时,扫码返回的结果 | 150 | let result = res.resultStr; // 当needResult 为 1 时,扫码返回的结果 |
| 149 | - // 跳转到相应植被介绍页 | 151 | + // 跳转到相应植被介绍页 'http://oa.allforlove.org.cn/f/carbon/#/intro?revision=1' |
| 150 | - // let result = 'http://oa.allforlove.org.cn/f/carbon/#/intro?revision=1'; | ||
| 151 | let revision = parseQueryString(result).revision; | 152 | let revision = parseQueryString(result).revision; |
| 152 | go('/intro', { revision }); | 153 | go('/intro', { revision }); |
| 153 | }, | 154 | }, |
| ... | @@ -232,8 +233,8 @@ const onCloseDanmu = () => { // 弹幕开关 | ... | @@ -232,8 +233,8 @@ const onCloseDanmu = () => { // 弹幕开关 |
| 232 | background-color: green; | 233 | background-color: green; |
| 233 | border-top-left-radius: 1rem; | 234 | border-top-left-radius: 1rem; |
| 234 | border-bottom-left-radius: 1rem; | 235 | border-bottom-left-radius: 1rem; |
| 235 | - font-size: 0.85rem; | 236 | + font-size: 0.8rem; |
| 236 | - padding: 0.5rem; | 237 | + padding: 0.4rem 0.5rem; |
| 237 | margin-bottom: 0.5rem; | 238 | margin-bottom: 0.5rem; |
| 238 | letter-spacing: 1px; | 239 | letter-spacing: 1px; |
| 239 | } | 240 | } |
| ... | @@ -258,7 +259,9 @@ const onCloseDanmu = () => { // 弹幕开关 | ... | @@ -258,7 +259,9 @@ const onCloseDanmu = () => { // 弹幕开关 |
| 258 | } | 259 | } |
| 259 | 260 | ||
| 260 | .danmu-input-wrapper { | 261 | .danmu-input-wrapper { |
| 261 | - padding: 1rem 0; display: flex; padding: 0.5rem; | 262 | + padding: 1rem 0; |
| 263 | + display: flex; | ||
| 264 | + padding: 0.5rem; | ||
| 262 | } | 265 | } |
| 263 | 266 | ||
| 264 | .danmu-boxer { | 267 | .danmu-boxer { | ... | ... |
| 1 | <!-- | 1 | <!-- |
| 2 | * @Date: 2024-04-10 16:08:09 | 2 | * @Date: 2024-04-10 16:08:09 |
| 3 | * @LastEditors: hookehuyr hookehuyr@gmail.com | 3 | * @LastEditors: hookehuyr hookehuyr@gmail.com |
| 4 | - * @LastEditTime: 2024-04-12 15:56:50 | 4 | + * @LastEditTime: 2024-04-12 22:57:03 |
| 5 | * @FilePath: /fxPark/src/views/fxPark/intro.vue | 5 | * @FilePath: /fxPark/src/views/fxPark/intro.vue |
| 6 | - * @Description: 文件描述 | 6 | + * @Description: 植被介绍页 |
| 7 | --> | 7 | --> |
| 8 | <template> | 8 | <template> |
| 9 | <div class="intro-page"> | 9 | <div class="intro-page"> |
| ... | @@ -15,7 +15,7 @@ | ... | @@ -15,7 +15,7 @@ |
| 15 | </div> | 15 | </div> |
| 16 | <div style="border: 1px solid #000; padding: 1rem; border-radius: 8px;"> | 16 | <div style="border: 1px solid #000; padding: 1rem; border-radius: 8px;"> |
| 17 | <div style="margin-bottom: 1.5rem;"><span style="background-color: #D0FCF0; padding: 0.5rem 0.75rem; border-radius: 1rem;">植被类型:</span> {{ tree_data?.type }}</div> | 17 | <div style="margin-bottom: 1.5rem;"><span style="background-color: #D0FCF0; padding: 0.5rem 0.75rem; border-radius: 1rem;">植被类型:</span> {{ tree_data?.type }}</div> |
| 18 | - <div style="margin-bottom: 1.5rem;"><span style="background-color: #D0FCF0; padding: 0.5rem 0.75rem; border-radius: 1rem;">植被学名:</span> {{ tree_data?.study_name }}</div> | 18 | + <div v-if="tree_data.study_name" style="margin-bottom: 1.5rem;"><span style="background-color: #D0FCF0; padding: 0.5rem 0.75rem; border-radius: 1rem;">植被学名:</span> {{ tree_data?.study_name }}</div> |
| 19 | <div style="margin-bottom: 1.5rem;white-space: pre-wrap;line-height: 1.8;"> | 19 | <div style="margin-bottom: 1.5rem;white-space: pre-wrap;line-height: 1.8;"> |
| 20 | {{ tree_data?.note }} | 20 | {{ tree_data?.note }} |
| 21 | </div> | 21 | </div> |
| ... | @@ -42,7 +42,6 @@ | ... | @@ -42,7 +42,6 @@ |
| 42 | <script setup> | 42 | <script setup> |
| 43 | import { ref } from 'vue' | 43 | import { ref } from 'vue' |
| 44 | import { useRoute, useRouter } from 'vue-router' | 44 | import { useRoute, useRouter } from 'vue-router' |
| 45 | - | ||
| 46 | import { Cookies, $, _, axios, storeToRefs, mainStore, Toast, useTitle } from '@/utils/generatePackage.js' | 45 | import { Cookies, $, _, axios, storeToRefs, mainStore, Toast, useTitle } from '@/utils/generatePackage.js' |
| 47 | //import { } from '@/utils/generateModules.js' | 46 | //import { } from '@/utils/generateModules.js' |
| 48 | //import { } from '@/utils/generateIcons.js' | 47 | //import { } from '@/utils/generateIcons.js' |
| ... | @@ -60,11 +59,13 @@ onMounted(async () => { | ... | @@ -60,11 +59,13 @@ onMounted(async () => { |
| 60 | const { code, data } = await getTreeAPI(); | 59 | const { code, data } = await getTreeAPI(); |
| 61 | if (code) { | 60 | if (code) { |
| 62 | let index = data.findIndex(item => item.revision == revision); // 植被信息index | 61 | let index = data.findIndex(item => item.revision == revision); // 植被信息index |
| 63 | - tree_data.value = data[index]; | 62 | + tree_data.value = data[index]; // 当前植被信息 |
| 64 | // 植被介绍样式 | 63 | // 植被介绍样式 |
| 65 | nextTick(() => { | 64 | nextTick(() => { |
| 66 | - $('.tree-intro').find('p').css('lineHeight', '1.8').css('marginBottom', '0.5rem'); | 65 | + $('.tree-intro p, .tree-mission-note p').css({ |
| 67 | - $('.tree-mission-note').find('p').css('lineHeight', '1.8').css('marginBottom', '0.5rem'); | 66 | + 'lineHeight': '1.8', |
| 67 | + 'marginBottom': '0.5rem' | ||
| 68 | + }); | ||
| 68 | }) | 69 | }) |
| 69 | } | 70 | } |
| 70 | // 进入页面激活 | 71 | // 进入页面激活 |
| ... | @@ -73,14 +74,15 @@ onMounted(async () => { | ... | @@ -73,14 +74,15 @@ onMounted(async () => { |
| 73 | const saveEvent = await saveEventAPI({ event_code: 'open_page', event_value: 'tree' }); | 74 | const saveEvent = await saveEventAPI({ event_code: 'open_page', event_value: 'tree' }); |
| 74 | }); | 75 | }); |
| 75 | 76 | ||
| 76 | -const formattedIntro = computed(() => { | 77 | +const formattedIntro = computed(() => { // 植被介绍样式 格式化-处理空格 |
| 77 | return tree_data?.value?.intro?.split("\n").map((line) => `<p>${line}</p>`).join(""); | 78 | return tree_data?.value?.intro?.split("\n").map((line) => `<p>${line}</p>`).join(""); |
| 78 | }); | 79 | }); |
| 79 | -const formattedNote = computed(() => { | 80 | + |
| 81 | +const formattedNote = computed(() => { // 植被任务卡note 格式化-处理空格 | ||
| 80 | return tree_data?.value?.mission_note?.split("\n").map((line) => `<p>${line}</p>`).join(""); | 82 | return tree_data?.value?.mission_note?.split("\n").map((line) => `<p>${line}</p>`).join(""); |
| 81 | }); | 83 | }); |
| 82 | 84 | ||
| 83 | -const goToPoster = () => { | 85 | +const goToPoster = () => { // 去海报页 |
| 84 | $router.push({ | 86 | $router.push({ |
| 85 | path: '/poster', | 87 | path: '/poster', |
| 86 | query: { | 88 | query: { | ... | ... |
| ... | @@ -45,6 +45,7 @@ import { Cookies, $, _, axios, storeToRefs, mainStore, Toast, useTitle } from '@ | ... | @@ -45,6 +45,7 @@ import { Cookies, $, _, axios, storeToRefs, mainStore, Toast, useTitle } from '@ |
| 45 | //import { } from '@/utils/generateModules.js' | 45 | //import { } from '@/utils/generateModules.js' |
| 46 | //import { } from '@/utils/generateIcons.js' | 46 | //import { } from '@/utils/generateIcons.js' |
| 47 | //import { } from '@/composables' | 47 | //import { } from '@/composables' |
| 48 | + | ||
| 48 | const $route = useRoute(); | 49 | const $route = useRoute(); |
| 49 | const $router = useRouter(); | 50 | const $router = useRouter(); |
| 50 | useTitle($route.meta.title); | 51 | useTitle($route.meta.title); |
| ... | @@ -65,7 +66,7 @@ const posterIndex = ref(0); | ... | @@ -65,7 +66,7 @@ const posterIndex = ref(0); |
| 65 | onMounted(async () => { | 66 | onMounted(async () => { |
| 66 | const { code, data } = await getTreeAPI(); | 67 | const { code, data } = await getTreeAPI(); |
| 67 | if (code) { | 68 | if (code) { |
| 68 | - raw_data.value = data.filter(item => item.is_light === '1'); // 获取所有已点亮的植被 | 69 | + raw_data.value = data.filter(item => item.is_light === '1' || item.is_tree === 0); // 获取已点亮的植被/全点亮的图片 |
| 69 | let index = raw_data.value.findIndex(item => item.revision == revision); // 植被信息index | 70 | let index = raw_data.value.findIndex(item => item.revision == revision); // 植被信息index |
| 70 | tree_data.value = raw_data.value[index]; // 获取当前植被信息 | 71 | tree_data.value = raw_data.value[index]; // 获取当前植被信息 |
| 71 | imgSrc.value = tree_data.value.user_poster !== null ? tree_data.value.user_poster : tree_data.value.poster_pic; | 72 | imgSrc.value = tree_data.value.user_poster !== null ? tree_data.value.user_poster : tree_data.value.poster_pic; | ... | ... |
-
Please register or login to post a comment