Showing
6 changed files
with
157 additions
and
5 deletions
src/assets/images/icon-jujue@2x.png
0 → 100644
14.8 KB
src/assets/images/icon-shenhe@2x.png
0 → 100644
16.6 KB
src/assets/images/icon-tongguo@2x.png
0 → 100644
15.3 KB
src/assets/images/suo@2x.png
0 → 100644
5.15 KB
| 1 | import { createApp } from 'vue'; | 1 | import { createApp } from 'vue'; |
| 2 | -import { Button, Image as VanImage, Col, Row, Icon, Form, Field, CellGroup, ConfigProvider, Toast, Uploader, Empty, Tab, Tabs, Overlay, NumberKeyboard, Lazyload, List, PullRefresh, Popup, Picker, Sticky, Stepper, Tag } from 'vant'; | 2 | +import { Button, Image as VanImage, Col, Row, Icon, Form, Field, CellGroup, ConfigProvider, Toast, Uploader, Empty, Tab, Tabs, Overlay, NumberKeyboard, Lazyload, List, PullRefresh, Popup, Picker, Sticky, Stepper, Tag, Swipe, SwipeItem } from 'vant'; |
| 3 | import router from './router'; | 3 | import router from './router'; |
| 4 | import App from './App.vue'; | 4 | import App from './App.vue'; |
| 5 | import axios from './utils/axios'; | 5 | import axios from './utils/axios'; |
| ... | @@ -33,6 +33,8 @@ app.use(Picker); | ... | @@ -33,6 +33,8 @@ app.use(Picker); |
| 33 | app.use(Sticky); | 33 | app.use(Sticky); |
| 34 | app.use(Stepper); | 34 | app.use(Stepper); |
| 35 | app.use(Tag); | 35 | app.use(Tag); |
| 36 | +app.use(Swipe); | ||
| 37 | +app.use(SwipeItem); | ||
| 36 | 38 | ||
| 37 | app.use(ConfigProvider); | 39 | app.use(ConfigProvider); |
| 38 | 40 | ... | ... |
| 1 | <template> | 1 | <template> |
| 2 | - <div class=""></div> | 2 | + <div class="donate-list-page"> |
| 3 | + <div style="background: linear-gradient(310deg, #FDD347 0%, #FFED6D 100%); padding: 1rem; text-align: center; color: #713610;"> | ||
| 4 | + <van-row> | ||
| 5 | + <van-col span="11" style="line-height: 1.5;"> | ||
| 6 | + <p>捐赠总金额</p> | ||
| 7 | + <p style="font-weight: bold; font-size: 1.25rem;">3562.5元</p> | ||
| 8 | + </van-col> | ||
| 9 | + <van-col span="1"><div style="border-right: 1px solid #733912; height: 100%; opacity: 0.15;"></div></van-col> | ||
| 10 | + <van-col span="11" style="line-height: 1.5;"> | ||
| 11 | + <p>点亮书籍</p> | ||
| 12 | + <p style="font-weight: bold; font-size: 1.25rem;">4个</p> | ||
| 13 | + </van-col> | ||
| 14 | + </van-row> | ||
| 15 | + </div> | ||
| 16 | + | ||
| 17 | + <div class="donate-book-wrapper"> | ||
| 18 | + <template v-for="(item, key) in dataList" :key="key"> | ||
| 19 | + <div class="book-row"> | ||
| 20 | + <van-row> | ||
| 21 | + <van-col span="8" class="book-col" v-for="(v, key) in item"> | ||
| 22 | + <div @click="showCert(v)" v-if="v.status === 'ENABLE'" class="ENABLE"> | ||
| 23 | + <van-image width="90%" height="95%" :src="v.src" /> | ||
| 24 | + </div> | ||
| 25 | + <div v-else class="DISABLE"> | ||
| 26 | + <van-image width="90%" height="95%" :src="v.src" /> | ||
| 27 | + <div class="mask"> | ||
| 28 | + <img :src="icon_lock"> | ||
| 29 | + </div> | ||
| 30 | + </div> | ||
| 31 | + <p class="van-ellipsis text">{{ v.name }}</p> | ||
| 32 | + </van-col> | ||
| 33 | + </van-row> | ||
| 34 | + </div> | ||
| 35 | + </template> | ||
| 36 | + </div> | ||
| 37 | + </div> | ||
| 38 | + | ||
| 39 | + <van-overlay :show="show" @click="show = false"> | ||
| 40 | + <div style="width: auto; height: 100%; margin: 2rem 2rem 0 2rem; overflow: hidden;"> | ||
| 41 | + | ||
| 42 | + <van-swipe class="my-swipe"> | ||
| 43 | + <van-swipe-item> | ||
| 44 | + <donate-cert></donate-cert> | ||
| 45 | + <div style="height: 2rem;"></div> | ||
| 46 | + </van-swipe-item> | ||
| 47 | + <van-swipe-item> | ||
| 48 | + <donate-cert></donate-cert> | ||
| 49 | + </van-swipe-item> | ||
| 50 | + <van-swipe-item> | ||
| 51 | + <donate-cert></donate-cert> | ||
| 52 | + </van-swipe-item> | ||
| 53 | + <template #indicator="{ active, total }"> | ||
| 54 | + <div class="custom-indicator">{{ active + 1 }}/{{ total }}</div> | ||
| 55 | + </template> | ||
| 56 | + </van-swipe> | ||
| 57 | + </div> | ||
| 58 | + </van-overlay> | ||
| 59 | + | ||
| 3 | </template> | 60 | </template> |
| 4 | 61 | ||
| 5 | <script setup> | 62 | <script setup> |
| 63 | +import DonateCert from '@/components/DonateCert/index.vue' | ||
| 64 | + | ||
| 65 | +import icon_lock from '@images/suo@2x.png' | ||
| 66 | + | ||
| 6 | import { ref, reactive, onMounted } from 'vue' | 67 | import { ref, reactive, onMounted } from 'vue' |
| 7 | import { useRoute, useRouter } from 'vue-router' | 68 | import { useRoute, useRouter } from 'vue-router' |
| 8 | import axios from '@/utils/axios'; | 69 | import axios from '@/utils/axios'; |
| 9 | import $ from 'jquery' | 70 | import $ from 'jquery' |
| 71 | +import _ from 'lodash' | ||
| 10 | import { Toast } from 'vant'; | 72 | import { Toast } from 'vant'; |
| 11 | const $route = useRoute(); | 73 | const $route = useRoute(); |
| 12 | const $router = useRouter(); | 74 | const $router = useRouter(); |
| 13 | 75 | ||
| 14 | - onMounted(() => { | 76 | +const show = ref(false); |
| 15 | 77 | ||
| 78 | +const rawList = ref([ | ||
| 79 | + { | ||
| 80 | + name: '逃家小兔', | ||
| 81 | + src: 'https://lanhu.oss-cn-beijing.aliyuncs.com/SketchPngc434046fdf1f9499d251b280af2568ddbe64839799d00a9aee226edbeb710aed', | ||
| 82 | + status: 'ENABLE' | ||
| 83 | + }, | ||
| 84 | + { | ||
| 85 | + name: '小猫的情绪', | ||
| 86 | + src: 'https://lanhu.oss-cn-beijing.aliyuncs.com/SketchPngc434046fdf1f9499d251b280af2568ddbe64839799d00a9aee226edbeb710aed', | ||
| 87 | + status: 'DISABLE' | ||
| 88 | + }, | ||
| 89 | + { | ||
| 90 | + name: '逃家小兔', | ||
| 91 | + src: 'https://lanhu.oss-cn-beijing.aliyuncs.com/SketchPngc434046fdf1f9499d251b280af2568ddbe64839799d00a9aee226edbeb710aed', | ||
| 92 | + status: 'ENABLE' | ||
| 93 | + }, | ||
| 94 | + { | ||
| 95 | + name: '小猫的情绪', | ||
| 96 | + src: 'https://lanhu.oss-cn-beijing.aliyuncs.com/SketchPngc434046fdf1f9499d251b280af2568ddbe64839799d00a9aee226edbeb710aed', | ||
| 97 | + status: 'DISABLE' | ||
| 98 | + }, | ||
| 99 | + { | ||
| 100 | + name: '逃家小兔', | ||
| 101 | + src: 'https://lanhu.oss-cn-beijing.aliyuncs.com/SketchPngc434046fdf1f9499d251b280af2568ddbe64839799d00a9aee226edbeb710aed', | ||
| 102 | + status: 'DISABLE' | ||
| 103 | + }, | ||
| 104 | + { | ||
| 105 | + name: '小猫的情绪', | ||
| 106 | + src: 'https://lanhu.oss-cn-beijing.aliyuncs.com/SketchPngc434046fdf1f9499d251b280af2568ddbe64839799d00a9aee226edbeb710aed', | ||
| 107 | + status: 'DISABLE' | ||
| 108 | + }, | ||
| 109 | +]) | ||
| 110 | +let dataList = ref([]); | ||
| 111 | + | ||
| 112 | +// 显示捐赠证书 | ||
| 113 | +const showCert = (v) => { | ||
| 114 | + console.warn(v); | ||
| 115 | + show.value = true | ||
| 116 | +} | ||
| 117 | + | ||
| 118 | + onMounted(() => { | ||
| 119 | + dataList.value = _.chunk(rawList.value, 3); | ||
| 16 | }) | 120 | }) |
| 17 | </script> | 121 | </script> |
| 18 | 122 | ||
| ... | @@ -23,11 +127,9 @@ export default { | ... | @@ -23,11 +127,9 @@ export default { |
| 23 | mixins: [mixin.init], | 127 | mixins: [mixin.init], |
| 24 | data () { | 128 | data () { |
| 25 | return { | 129 | return { |
| 26 | - | ||
| 27 | } | 130 | } |
| 28 | }, | 131 | }, |
| 29 | mounted () { | 132 | mounted () { |
| 30 | - | ||
| 31 | }, | 133 | }, |
| 32 | methods: { | 134 | methods: { |
| 33 | 135 | ||
| ... | @@ -36,5 +138,53 @@ export default { | ... | @@ -36,5 +138,53 @@ export default { |
| 36 | </script> | 138 | </script> |
| 37 | 139 | ||
| 38 | <style lang="less" scoped> | 140 | <style lang="less" scoped> |
| 141 | +.donate-list-page { | ||
| 142 | + .donate-book-wrapper { | ||
| 143 | + padding: 0 1rem; | ||
| 144 | + .book-row { | ||
| 145 | + margin: 1rem 0; | ||
| 146 | + text-align: center; | ||
| 147 | + .book-col { | ||
| 148 | + padding: 0 0.5rem; | ||
| 149 | + .ENABLE { | ||
| 150 | + background: #FFFFFF; | ||
| 151 | + box-shadow: 3px 3px 5px 0px rgba(0, 0, 0, 0.15); | ||
| 152 | + border-radius: 5px; | ||
| 153 | + border: 1px solid #FFE000; | ||
| 154 | + } | ||
| 155 | + .DISABLE { | ||
| 156 | + border-radius: 6px; | ||
| 157 | + position: relative; | ||
| 158 | + .mask { | ||
| 159 | + position: absolute; | ||
| 160 | + width: 100%; | ||
| 161 | + height: 100%; | ||
| 162 | + background: rgba(0, 0, 0, 0.4); | ||
| 163 | + border-radius: 6px; | ||
| 164 | + top: 0; | ||
| 165 | + img { | ||
| 166 | + margin-top: 20%; | ||
| 167 | + width: 50%; | ||
| 168 | + } | ||
| 169 | + } | ||
| 170 | + } | ||
| 171 | + .text { | ||
| 172 | + font-size: 1rem; | ||
| 173 | + margin-top: 0.5rem; | ||
| 174 | + color: #222222; | ||
| 175 | + } | ||
| 176 | + } | ||
| 177 | + } | ||
| 178 | + } | ||
| 179 | +} | ||
| 39 | 180 | ||
| 181 | +.custom-indicator { | ||
| 182 | + position: absolute; | ||
| 183 | + bottom: 5px; | ||
| 184 | + padding: 2px 5px; | ||
| 185 | + font-size: 12px; | ||
| 186 | + color: #FFFFFF; | ||
| 187 | + text-align: center; | ||
| 188 | + width: 100%; | ||
| 189 | +} | ||
| 40 | </style> | 190 | </style> |
| ... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
-
Please register or login to post a comment