hookehuyr

fix 细节调整

...@@ -11,7 +11,7 @@ VITE_PROXY_PREFIX = /srv/ ...@@ -11,7 +11,7 @@ VITE_PROXY_PREFIX = /srv/
11 VITE_OUTDIR = carbon 11 VITE_OUTDIR = carbon
12 12
13 # 是否开启调试 13 # 是否开启调试
14 -VITE_CONSOLE = 1 14 +VITE_CONSOLE = 0
15 15
16 # appID相关 16 # appID相关
17 VITE_APPID=微信appID 17 VITE_APPID=微信appID
......
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" />&nbsp; 13 <van-icon v-if="danmu.status === '2'" name="fire-o" color="red" />&nbsp;
...@@ -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" />&nbsp;&nbsp;<span>展览介绍</span> 19 <van-icon name="chat-o" />&nbsp;&nbsp;<span>展览介绍</span>
20 </div> 20 </div>
21 <div class="quick-entrance-item"> 21 <div class="quick-entrance-item">
22 - <van-icon name="chat-o" />&nbsp;&nbsp;<span>文明校园报名</span> 22 + <van-icon name="chat-o" />&nbsp;&nbsp;<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>&nbsp;{{ 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>&nbsp;{{ 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>&nbsp;{{ 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>&nbsp;{{ 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;
......