hookehuyr

✨ feat(列表项包含小红花数量显示的页面): 新增小红花显示组件

1 +<!--
2 + * @Date: 2022-06-25 03:29:05
3 + * @LastEditors: hookehuyr hookehuyr@gmail.com
4 + * @LastEditTime: 2022-06-25 10:26:12
5 + * @FilePath: /tswj/src/components/FlowerIcon/index.vue
6 + * @Description: 文件描述
7 +-->
8 +<template>
9 + <div class="flower" @click="goTo">
10 + <van-icon :name="icon_flower" color="#c5c5c5" size="1.25rem" :style="{ verticalAlign: align }" />
11 + <span :style="{ color }">&nbsp;{{ qty }}</span>
12 + </div>
13 + <!-- <div class="global-center" style="color: #222222;" @click="goTo">
14 + <van-icon :name="icon_flower" color="#c5c5c5" size="1.25rem" :style="{ verticalAlign: align }" />
15 + <span>&nbsp;{{ qty }}</span>
16 + </div> -->
17 +</template>
18 +
19 +<script setup>
20 +import { icon_flower } from '@/utils/generateIcons.js'
21 +
22 +const props = defineProps({
23 + qty: Number,
24 + color: String,
25 + align: String,
26 +})
27 +const emit = defineEmits(['on-click']);
28 +const goTo = () => {
29 + emit('on-click', true)
30 +}
31 +</script>
32 +
33 +<style lang="less" scoped>
34 +.flower {
35 + text-align: center;
36 + position: absolute;
37 + top: 40%;
38 + right: 0.5rem;
39 + color: #713610;
40 +}
41 +</style>
...@@ -2,24 +2,19 @@ ...@@ -2,24 +2,19 @@
2 * @Author: hookehuyr hookehuyr@gmail.com 2 * @Author: hookehuyr hookehuyr@gmail.com
3 * @Date: 2022-05-30 10:20:34 3 * @Date: 2022-05-30 10:20:34
4 * @LastEditors: hookehuyr hookehuyr@gmail.com 4 * @LastEditors: hookehuyr hookehuyr@gmail.com
5 - * @LastEditTime: 2022-06-07 14:50:28 5 + * @LastEditTime: 2022-06-25 10:17:55
6 - * @FilePath: /tswj/src/components/RankingList/index.vue 6 + * @FilePath: /tswj/src/components/RankingItem/index.vue
7 --> 7 -->
8 <template> 8 <template>
9 <div class="wrapper"> 9 <div class="wrapper">
10 <van-row> 10 <van-row>
11 <van-col span="2" class="rank"> 11 <van-col span="2" class="rank">
12 - <div v-if="indexKey < 3" class="avatar"> 12 + <div :class="[{ 'text': indexKey >= 3 }, { 'avatar': indexKey < 3 }]">
13 - <van-icon v-if="indexKey === 0" :name="icon_ranking1" size="1.75rem" /> 13 + <van-icon v-if="indexKey < 3" :name="iconRanking(indexKey)" size="1.75rem" />
14 - <van-icon v-if="indexKey === 1" :name="icon_ranking2" size="1.75rem" /> 14 + <span v-else>{{ indexKey + 1 }}&nbsp;</span>
15 - <van-icon v-if="indexKey === 2" :name="icon_ranking3" size="1.75rem" />
16 </div> 15 </div>
17 - <div v-else class="text">{{ indexKey + 1 }}</div>
18 </van-col> 16 </van-col>
19 - <!-- FIXME: 高度先统一,以后有问题再说 -->
20 - <!-- <van-col span="18" :class="{ 'content-wrapper': !rankInfo.multi_name }"> -->
21 <van-col span="18" class="content-wrapper"> 17 <van-col span="18" class="content-wrapper">
22 - <!-- <div :class="[rankInfo.multi_name ? 'height6rem' : 'height3rem', 'kg-name']" -->
23 <div :class="[rankInfo.multi_name ? 'height3rem' : 'height3rem', 'kg-name']" 18 <div :class="[rankInfo.multi_name ? 'height3rem' : 'height3rem', 'kg-name']"
24 @click="go('/client/chooseBook', { kg_id: rankInfo.id })"> 19 @click="go('/client/chooseBook', { kg_id: rankInfo.id })">
25 <van-row align="center" justify="center" style="position: relative; top: 50%; transform: translateY(-50%);"> 20 <van-row align="center" justify="center" style="position: relative; top: 50%; transform: translateY(-50%);">
...@@ -29,8 +24,6 @@ ...@@ -29,8 +24,6 @@
29 </van-col> 24 </van-col>
30 <van-col span="20"> 25 <van-col span="20">
31 <div v-if="rankInfo.multi_name" style="margin-left: 0.5rem;"> 26 <div v-if="rankInfo.multi_name" style="margin-left: 0.5rem;">
32 - <!-- <p style="line-height: 2;">{{ rankInfo.multi_name[0] }}</p>
33 - <p>{{ rankInfo.multi_name[1] }}</p> -->
34 <p>{{ rankInfo.multi_name[0] }}<br />{{ rankInfo.multi_name[1] }}</p> 27 <p>{{ rankInfo.multi_name[0] }}<br />{{ rankInfo.multi_name[1] }}</p>
35 </div> 28 </div>
36 <p v-else style="margin-left: 0.5rem;"> 29 <p v-else style="margin-left: 0.5rem;">
...@@ -41,24 +34,40 @@ ...@@ -41,24 +34,40 @@
41 </div> 34 </div>
42 </van-col> 35 </van-col>
43 <van-col> 36 <van-col>
44 - <div class="flower" @click="go('/client/donateList', { kg_id: rankInfo.id })"> 37 + <flower-icon :qty="rankInfo.qty" align="bottom" @on-click="onFlowerClick" />
45 - <van-icon :name="icon_flower" color="#c5c5c5" size="1.25rem" style="vertical-align: bottom;" />&nbsp;{{
46 - rankInfo.qty }}
47 - </div>
48 </van-col> 38 </van-col>
49 </van-row> 39 </van-row>
50 </div> 40 </div>
51 </template> 41 </template>
52 42
53 <script setup> 43 <script setup>
54 -import { icon_logo, icon_ranking1, icon_ranking2, icon_ranking3, icon_flower } from '@/utils/generateIcons.js' 44 +import { icon_logo, icon_ranking1, icon_ranking2, icon_ranking3 } from '@/utils/generateIcons.js'
55 45
56 import { ref } from 'vue' 46 import { ref } from 'vue'
57 import _ from 'lodash' 47 import _ from 'lodash'
58 - 48 +import FlowerIcon from '@/components/FlowerIcon'
59 import { useGo } from '@/hooks/useGo' 49 import { useGo } from '@/hooks/useGo'
60 const go = useGo() 50 const go = useGo()
61 51
52 +const iconRanking = (index) => {
53 + switch (index) {
54 + case 0:
55 + return icon_ranking1
56 + case 1:
57 + return icon_ranking2
58 + case 2:
59 + return icon_ranking3
60 + default:
61 + return 0
62 + }
63 +}
64 +
65 +const onFlowerClick = (v) => {
66 + if (v) {
67 + go('/client/donateList', { kg_id: rankInfo.value.id })
68 + }
69 +}
70 +
62 // eslint-disable-next-line no-unused-vars 71 // eslint-disable-next-line no-unused-vars
63 const props = defineProps({ 72 const props = defineProps({
64 item: { 73 item: {
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
2 * @Author: hookehuyr hookehuyr@gmail.com 2 * @Author: hookehuyr hookehuyr@gmail.com
3 * @Date: 2022-05-30 13:51:47 3 * @Date: 2022-05-30 13:51:47
4 * @LastEditors: hookehuyr hookehuyr@gmail.com 4 * @LastEditors: hookehuyr hookehuyr@gmail.com
5 - * @LastEditTime: 2022-06-25 00:29:43 5 + * @LastEditTime: 2022-06-25 10:28:13
6 * @FilePath: /tswj/src/views/client/donateList.vue 6 * @FilePath: /tswj/src/views/client/donateList.vue
7 * @Description: 幼儿园捐赠人捐赠金额排行榜 7 * @Description: 幼儿园捐赠人捐赠金额排行榜
8 --> 8 -->
...@@ -29,10 +29,7 @@ ...@@ -29,10 +29,7 @@
29 </div> 29 </div>
30 </van-col> 30 </van-col>
31 <van-col> 31 <van-col>
32 - <div class="flower"> 32 + <flower-icon :qty="kgInfo.kg_total" align="bottom" />
33 - <van-icon :name="icon_flower" color="#c5c5c5" size="1.25rem" style="vertical-align: bottom;" />&nbsp;{{
34 - kgInfo.kg_total }}
35 - </div>
36 </van-col> 33 </van-col>
37 </van-row> 34 </van-row>
38 </div> 35 </div>
...@@ -51,10 +48,7 @@ ...@@ -51,10 +48,7 @@
51 </div> 48 </div>
52 </van-col> 49 </van-col>
53 <van-col span="6" style="color: #222222; text-align: right; font-size: 1rem;"> 50 <van-col span="6" style="color: #222222; text-align: right; font-size: 1rem;">
54 - <div class="global-center"> 51 + <flower-icon :qty="item.qty" align="top" color="#222222" />
55 - <van-icon style="vertical-align: top;" size="1.25rem" :name="icon_flower" />
56 - <span>&nbsp;2</span>
57 - </div>
58 </van-col> 52 </van-col>
59 </van-row> 53 </van-row>
60 </div> 54 </div>
...@@ -71,6 +65,7 @@ import { useTitle } from '@/utils/generatePackage.js' ...@@ -71,6 +65,7 @@ import { useTitle } from '@/utils/generatePackage.js'
71 import { icon_avatar, no_image, icon_flower, icon_logo } from '@/utils/generateIcons.js' 65 import { icon_avatar, no_image, icon_flower, icon_logo } from '@/utils/generateIcons.js'
72 //import { } from '@/composables' 66 //import { } from '@/composables'
73 import { kgDonateListAPI } from '@/api/C/kg.js' 67 import { kgDonateListAPI } from '@/api/C/kg.js'
68 +import FlowerIcon from '@/components/FlowerIcon'
74 69
75 const $route = useRoute() 70 const $route = useRoute()
76 useTitle($route.meta.title); 71 useTitle($route.meta.title);
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
2 * @Author: hookehuyr hookehuyr@gmail.com 2 * @Author: hookehuyr hookehuyr@gmail.com
3 * @Date: 2022-05-30 13:51:47 3 * @Date: 2022-05-30 13:51:47
4 * @LastEditors: hookehuyr hookehuyr@gmail.com 4 * @LastEditors: hookehuyr hookehuyr@gmail.com
5 - * @LastEditTime: 2022-06-25 01:11:12 5 + * @LastEditTime: 2022-06-25 10:30:13
6 * @FilePath: /tswj/src/views/client/rankList.vue 6 * @FilePath: /tswj/src/views/client/rankList.vue
7 * @Description: 幼儿园儿童捐赠金额排行榜 7 * @Description: 幼儿园儿童捐赠金额排行榜
8 --> 8 -->
...@@ -27,10 +27,7 @@ ...@@ -27,10 +27,7 @@
27 </div> 27 </div>
28 </van-col> 28 </van-col>
29 <van-col> 29 <van-col>
30 - <div class="flower"> 30 + <flower-icon :qty="kgInfo.kg_total" align="bottom" />
31 - <van-icon :name="icon_flower" color="#c5c5c5" size="1.25rem" style="vertical-align: bottom;" />
32 - &nbsp;{{ kgInfo.kg_total }}
33 - </div>
34 </van-col> 31 </van-col>
35 </van-row> 32 </van-row>
36 </div> 33 </div>
...@@ -41,7 +38,7 @@ ...@@ -41,7 +38,7 @@
41 <van-row style="padding: 0.5rem;"> 38 <van-row style="padding: 0.5rem;">
42 <van-col span="2"> 39 <van-col span="2">
43 <div :class="['global-center', { 'rank-other': rank.rownum >= 4 }]"> 40 <div :class="['global-center', { 'rank-other': rank.rownum >= 4 }]">
44 - <van-icon v-if="rank.rownum < 4" :name="icon_ranking(rank.rownum)" size="1.75rem" /> 41 + <van-icon v-if="rank.rownum < 4" :name="iconRanking(rank.rownum)" size="1.75rem" />
45 <span v-else>{{ rank.rownum }}&nbsp;</span> 42 <span v-else>{{ rank.rownum }}&nbsp;</span>
46 </div> 43 </div>
47 </van-col> 44 </van-col>
...@@ -54,10 +51,7 @@ ...@@ -54,10 +51,7 @@
54 </div> 51 </div>
55 </van-col> 52 </van-col>
56 <van-col span="4" style="text-align: right; font-size: 1rem;"> 53 <van-col span="4" style="text-align: right; font-size: 1rem;">
57 - <div class="global-center" style="color: #222222;"> 54 + <flower-icon :qty="rank.qty" align="top" color="#222222" />
58 - <van-icon style="vertical-align: top;" size="1.25rem" :name="icon_flower" />
59 - <span>&nbsp;{{ rank.qty }}</span>
60 - </div>
61 </van-col> 55 </van-col>
62 </van-row> 56 </van-row>
63 </div> 57 </div>
...@@ -74,11 +68,12 @@ import { useTitle } from '@/utils/generatePackage.js' ...@@ -74,11 +68,12 @@ import { useTitle } from '@/utils/generatePackage.js'
74 import { icon_avatar, icon_ranking1, icon_ranking2, icon_ranking3, icon_flower, icon_logo, no_image } from '@/utils/generateIcons.js' 68 import { icon_avatar, icon_ranking1, icon_ranking2, icon_ranking3, icon_flower, icon_logo, no_image } from '@/utils/generateIcons.js'
75 //import { } from '@/composables' 69 //import { } from '@/composables'
76 import { kgDonateRankAPI } from '@/api/C/kg.js' 70 import { kgDonateRankAPI } from '@/api/C/kg.js'
71 +import FlowerIcon from '@/components/FlowerIcon'
77 72
78 const $route = useRoute(); 73 const $route = useRoute();
79 useTitle($route.meta.title); 74 useTitle($route.meta.title);
80 75
81 -const icon_ranking = (rownum) => { 76 +const iconRanking = (rownum) => {
82 switch (rownum) { 77 switch (rownum) {
83 case 1: 78 case 1:
84 return icon_ranking1 79 return icon_ranking1
......