Showing
1 changed file
with
99 additions
and
66 deletions
| 1 | <template> | 1 | <template> |
| 2 | <div class="donate-list-page"> | 2 | <div class="donate-list-page"> |
| 3 | - <div style="background: linear-gradient(310deg, #FDD347 0%, #FFED6D 100%); padding: 1rem; text-align: center; color: #713610;"> | 3 | + <div class="donate-header"> |
| 4 | <van-row> | 4 | <van-row> |
| 5 | - <van-col span="11" style="line-height: 1.5;"> | 5 | + <van-col span="11" class="sum"> |
| 6 | <p>捐赠总金额</p> | 6 | <p>捐赠总金额</p> |
| 7 | - <p style="font-weight: bold; font-size: 1.25rem;">3562.5元</p> | 7 | + <p>{{ donateInfo.total }} 元</p> |
| 8 | </van-col> | 8 | </van-col> |
| 9 | - <van-col span="1"><div style="border-right: 1px solid #733912; height: 100%; opacity: 0.15;"></div></van-col> | 9 | + <van-col span="1"><div class="line"></div></van-col> |
| 10 | - <van-col span="11" style="line-height: 1.5;"> | 10 | + <van-col class="book" span="11"> |
| 11 | <p>点亮书籍</p> | 11 | <p>点亮书籍</p> |
| 12 | - <p style="font-weight: bold; font-size: 1.25rem;">4个</p> | 12 | + <p>{{ donateInfo.num }} 个</p> |
| 13 | </van-col> | 13 | </van-col> |
| 14 | </van-row> | 14 | </van-row> |
| 15 | </div> | 15 | </div> |
| ... | @@ -18,12 +18,12 @@ | ... | @@ -18,12 +18,12 @@ |
| 18 | <template v-for="(item, key) in dataList" :key="key"> | 18 | <template v-for="(item, key) in dataList" :key="key"> |
| 19 | <div class="book-row"> | 19 | <div class="book-row"> |
| 20 | <van-row> | 20 | <van-row> |
| 21 | - <van-col span="8" class="book-col" v-for="(v, key) in item"> | 21 | + <van-col span="8" class="book-col" v-for="(v, index) in item" :key="index"> |
| 22 | - <div @click="showCert(v)" v-if="v.status === 'ENABLE'" class="ENABLE"> | 22 | + <div @click="showCert(v)" v-if="v.is_donate" class="ENABLE"> |
| 23 | - <van-image width="90%" height="95%" :src="v.src" /> | 23 | + <van-image width="90%" height="7rem" :src="v.cover" /> |
| 24 | </div> | 24 | </div> |
| 25 | <div v-else class="DISABLE"> | 25 | <div v-else class="DISABLE"> |
| 26 | - <van-image width="90%" height="95%" :src="v.src" /> | 26 | + <van-image width="90%" height="7rem" :src="v.cover" /> |
| 27 | <div class="mask"> | 27 | <div class="mask"> |
| 28 | <img :src="icon_lock"> | 28 | <img :src="icon_lock"> |
| 29 | </div> | 29 | </div> |
| ... | @@ -36,20 +36,13 @@ | ... | @@ -36,20 +36,13 @@ |
| 36 | </div> | 36 | </div> |
| 37 | </div> | 37 | </div> |
| 38 | 38 | ||
| 39 | - <van-overlay :show="show" @click="show = false"> | 39 | + <van-overlay :show="show" @click="onHide"> |
| 40 | <div style="width: auto; height: 100%; margin: 2rem 2rem 0 2rem; overflow: hidden;"> | 40 | <div style="width: auto; height: 100%; margin: 2rem 2rem 0 2rem; overflow: hidden;"> |
| 41 | - | 41 | + <van-swipe class="my-swipe" ref="swipe"> |
| 42 | - <van-swipe class="my-swipe"> | 42 | + <van-swipe-item v-for="(d, k) in certItems" :key="k"> |
| 43 | - <van-swipe-item> | 43 | + <donate-cert :item="d"></donate-cert> |
| 44 | - <donate-cert></donate-cert> | ||
| 45 | <div style="height: 2rem;"></div> | 44 | <div style="height: 2rem;"></div> |
| 46 | </van-swipe-item> | 45 | </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 }"> | 46 | <template #indicator="{ active, total }"> |
| 54 | <div class="custom-indicator">{{ active + 1 }}/{{ total }}</div> | 47 | <div class="custom-indicator">{{ active + 1 }}/{{ total }}</div> |
| 55 | </template> | 48 | </template> |
| ... | @@ -64,7 +57,7 @@ import DonateCert from '@/components/DonateCert/index.vue' | ... | @@ -64,7 +57,7 @@ import DonateCert from '@/components/DonateCert/index.vue' |
| 64 | 57 | ||
| 65 | import icon_lock from '@images/suo@2x.png' | 58 | import icon_lock from '@images/suo@2x.png' |
| 66 | 59 | ||
| 67 | -import { ref, reactive, onMounted } from 'vue' | 60 | +import { ref, reactive, onMounted, getCurrentInstance, nextTick, watch } from 'vue' |
| 68 | import { useRoute, useRouter } from 'vue-router' | 61 | import { useRoute, useRouter } from 'vue-router' |
| 69 | import axios from '@/utils/axios'; | 62 | import axios from '@/utils/axios'; |
| 70 | import $ from 'jquery' | 63 | import $ from 'jquery' |
| ... | @@ -73,54 +66,69 @@ import { Toast } from 'vant'; | ... | @@ -73,54 +66,69 @@ import { Toast } from 'vant'; |
| 73 | const $route = useRoute(); | 66 | const $route = useRoute(); |
| 74 | const $router = useRouter(); | 67 | const $router = useRouter(); |
| 75 | 68 | ||
| 76 | -// TODO: 我的捐赠列表 | 69 | +// 我的捐赠列表 |
| 77 | -// TODO: 我的捐赠证书列表 | 70 | +const donateInfo = ref(''); |
| 78 | - | 71 | +const dataList = ref([]); |
| 79 | -const show = ref(false); | 72 | +axios.post('/srv/?a=my_donate') |
| 80 | - | 73 | +.then(res => { |
| 81 | -const rawList = ref([ | 74 | + if (res.data.code === 1) { |
| 82 | - { | 75 | + donateInfo.value = res.data.data; |
| 83 | - name: '逃家小兔', | 76 | + dataList.value = _.chunk(res.data.data.book, 3); |
| 84 | - src: 'https://lanhu.oss-cn-beijing.aliyuncs.com/SketchPngc434046fdf1f9499d251b280af2568ddbe64839799d00a9aee226edbeb710aed', | 77 | + } else { |
| 85 | - status: 'ENABLE' | 78 | + console.warn(res); |
| 86 | - }, | 79 | + Toast({ |
| 87 | - { | 80 | + icon: 'close', |
| 88 | - name: '小猫的情绪', | 81 | + message: res.data.msg |
| 89 | - src: 'https://lanhu.oss-cn-beijing.aliyuncs.com/SketchPngc434046fdf1f9499d251b280af2568ddbe64839799d00a9aee226edbeb710aed', | 82 | + }); |
| 90 | - status: 'DISABLE' | 83 | + } |
| 91 | - }, | 84 | +}) |
| 92 | - { | 85 | +.catch(err => { |
| 93 | - name: '逃家小兔', | 86 | + console.error(err); |
| 94 | - src: 'https://lanhu.oss-cn-beijing.aliyuncs.com/SketchPngc434046fdf1f9499d251b280af2568ddbe64839799d00a9aee226edbeb710aed', | 87 | +}); |
| 95 | - status: 'ENABLE' | ||
| 96 | - }, | ||
| 97 | - { | ||
| 98 | - name: '小猫的情绪', | ||
| 99 | - src: 'https://lanhu.oss-cn-beijing.aliyuncs.com/SketchPngc434046fdf1f9499d251b280af2568ddbe64839799d00a9aee226edbeb710aed', | ||
| 100 | - status: 'DISABLE' | ||
| 101 | - }, | ||
| 102 | - { | ||
| 103 | - name: '逃家小兔', | ||
| 104 | - src: 'https://lanhu.oss-cn-beijing.aliyuncs.com/SketchPngc434046fdf1f9499d251b280af2568ddbe64839799d00a9aee226edbeb710aed', | ||
| 105 | - status: 'DISABLE' | ||
| 106 | - }, | ||
| 107 | - { | ||
| 108 | - name: '小猫的情绪', | ||
| 109 | - src: 'https://lanhu.oss-cn-beijing.aliyuncs.com/SketchPngc434046fdf1f9499d251b280af2568ddbe64839799d00a9aee226edbeb710aed', | ||
| 110 | - status: 'DISABLE' | ||
| 111 | - }, | ||
| 112 | -]) | ||
| 113 | -let dataList = ref([]); | ||
| 114 | 88 | ||
| 115 | // 显示捐赠证书 | 89 | // 显示捐赠证书 |
| 90 | +const show = ref(false); | ||
| 91 | +const certItems = ref([]) | ||
| 116 | const showCert = (v) => { | 92 | const showCert = (v) => { |
| 117 | - console.warn(v); | 93 | + // 捐款成功后,查询生成捐赠证书 |
| 118 | - show.value = true | 94 | + axios.get('/srv/?a=cert_list', { |
| 95 | + params: { | ||
| 96 | + book_id: v.id | ||
| 97 | + } | ||
| 98 | + }) | ||
| 99 | + .then(res => { | ||
| 100 | + if (res.data.code === 1) { | ||
| 101 | + certItems.value = res.data.data; | ||
| 102 | + show.value = true | ||
| 103 | + } else { | ||
| 104 | + console.warn(res); | ||
| 105 | + Toast({ | ||
| 106 | + icon: 'close', | ||
| 107 | + message: res.data.msg | ||
| 108 | + }); | ||
| 109 | + } | ||
| 110 | + }) | ||
| 111 | + .catch(err => { | ||
| 112 | + console.error(err); | ||
| 113 | + }) | ||
| 119 | } | 114 | } |
| 120 | 115 | ||
| 121 | - onMounted(() => { | 116 | +const onHide = () => { |
| 122 | - dataList.value = _.chunk(rawList.value, 3); | 117 | + show.value = false; |
| 123 | - }) | 118 | +} |
| 119 | + | ||
| 120 | +// 关闭弹框后重置index | ||
| 121 | +const internalInstance = getCurrentInstance(); | ||
| 122 | +watch(show, (v) => { | ||
| 123 | + if (!v) { | ||
| 124 | + setTimeout(() => { | ||
| 125 | + nextTick(() => { | ||
| 126 | + internalInstance.ctx.$refs.swipe.swipeTo(0); | ||
| 127 | + }) | ||
| 128 | + }, 1000) | ||
| 129 | + } | ||
| 130 | +}) | ||
| 131 | + | ||
| 124 | </script> | 132 | </script> |
| 125 | 133 | ||
| 126 | <script> | 134 | <script> |
| ... | @@ -142,6 +150,31 @@ export default { | ... | @@ -142,6 +150,31 @@ export default { |
| 142 | 150 | ||
| 143 | <style lang="less" scoped> | 151 | <style lang="less" scoped> |
| 144 | .donate-list-page { | 152 | .donate-list-page { |
| 153 | + .donate-header { | ||
| 154 | + background: linear-gradient(310deg, #FDD347 0%, #FFED6D 100%); | ||
| 155 | + padding: 1rem; | ||
| 156 | + text-align: center; | ||
| 157 | + color: #713610; | ||
| 158 | + .sum { | ||
| 159 | + line-height: 1.5; | ||
| 160 | + p:last-child { | ||
| 161 | + font-weight: bold; | ||
| 162 | + font-size: 1.25rem; | ||
| 163 | + } | ||
| 164 | + } | ||
| 165 | + .line { | ||
| 166 | + border-right: 1px solid #733912; | ||
| 167 | + height: 100%; | ||
| 168 | + opacity: 0.15; | ||
| 169 | + } | ||
| 170 | + .book { | ||
| 171 | + line-height: 1.5; | ||
| 172 | + p:last-child { | ||
| 173 | + font-weight: bold; | ||
| 174 | + font-size: 1.25rem; | ||
| 175 | + } | ||
| 176 | + } | ||
| 177 | + } | ||
| 145 | .donate-book-wrapper { | 178 | .donate-book-wrapper { |
| 146 | padding: 0 1rem; | 179 | padding: 0 1rem; |
| 147 | .book-row { | 180 | .book-row { |
| ... | @@ -190,4 +223,4 @@ export default { | ... | @@ -190,4 +223,4 @@ export default { |
| 190 | text-align: center; | 223 | text-align: center; |
| 191 | width: 100%; | 224 | width: 100%; |
| 192 | } | 225 | } |
| 193 | -</style> | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file |
| 226 | +</style> | ... | ... |
-
Please register or login to post a comment