Showing
4 changed files
with
80 additions
and
17 deletions
| ... | @@ -2,26 +2,29 @@ | ... | @@ -2,26 +2,29 @@ |
| 2 | * @Author: hookehuyr hookehuyr@gmail.com | 2 | * @Author: hookehuyr hookehuyr@gmail.com |
| 3 | * @Date: 2022-05-31 18:32:38 | 3 | * @Date: 2022-05-31 18:32:38 |
| 4 | * @LastEditors: hookehuyr hookehuyr@gmail.com | 4 | * @LastEditors: hookehuyr hookehuyr@gmail.com |
| 5 | - * @LastEditTime: 2022-05-31 19:01:49 | 5 | + * @LastEditTime: 2022-06-01 19:17:16 |
| 6 | * @FilePath: /tswj/src/components/DonateBar/index.vue | 6 | * @FilePath: /tswj/src/components/DonateBar/index.vue |
| 7 | * @Description: 爱心助力底部固定栏 | 7 | * @Description: 爱心助力底部固定栏 |
| 8 | --> | 8 | --> |
| 9 | <template> | 9 | <template> |
| 10 | <div class="fix-btn"> | 10 | <div class="fix-btn"> |
| 11 | - <div class="text"><slot /></div> | 11 | + <div class="text" @click="toDonate"><slot /></div> |
| 12 | </div> | 12 | </div> |
| 13 | + <donate-flower :user-type="donateType" :show-popup="showDonate" :item="donateInfo" @on-close="closeDonate" /> | ||
| 13 | </template> | 14 | </template> |
| 14 | 15 | ||
| 15 | <script setup> | 16 | <script setup> |
| 16 | -import { ref } from 'vue' | 17 | +import { ref, onMounted } from 'vue' |
| 17 | -import { useRoute, useRouter } from 'vue-router' | 18 | +import { useRoute } from 'vue-router' |
| 18 | 19 | ||
| 19 | import { Cookies, $, _, axios, storeToRefs, mainStore, Toast, useTitle } from '@/utils/generatePackage.js' | 20 | import { Cookies, $, _, axios, storeToRefs, mainStore, Toast, useTitle } from '@/utils/generatePackage.js' |
| 20 | //import { } from '@/utils/generateModules.js' | 21 | //import { } from '@/utils/generateModules.js' |
| 21 | //import { } from '@/utils/generateIcons.js' | 22 | //import { } from '@/utils/generateIcons.js' |
| 22 | //import { } from '@/composables' | 23 | //import { } from '@/composables' |
| 24 | +import { DonateFlower } from '@/utils/generateModules' | ||
| 25 | +import { prepareDonateAPI } from '@/api/C/donate.js' | ||
| 26 | + | ||
| 23 | const $route = useRoute(); | 27 | const $route = useRoute(); |
| 24 | -const $router = useRouter(); | ||
| 25 | useTitle($route.meta.title); | 28 | useTitle($route.meta.title); |
| 26 | 29 | ||
| 27 | const props = defineProps({ | 30 | const props = defineProps({ |
| ... | @@ -36,7 +39,29 @@ const props = defineProps({ | ... | @@ -36,7 +39,29 @@ const props = defineProps({ |
| 36 | 39 | ||
| 37 | // 捐钱-游客 type: V | 40 | // 捐钱-游客 type: V |
| 38 | // 捐钱-幼儿园 type: K | 41 | // 捐钱-幼儿园 type: K |
| 39 | -console.warn(props.donateType); | 42 | +// 捐钱-指定儿童 type: C |
| 43 | +const donateInfo = ref({}) | ||
| 44 | +let params = {}; | ||
| 45 | +if (props.donateType === 'C') { // 助力TA | ||
| 46 | + params = { perf_id: $route.query.perf_id } | ||
| 47 | +} else if (props.donateType === 'K') { | ||
| 48 | + params = { kg_id: $route.query.kg_id } | ||
| 49 | +} | ||
| 50 | +onMounted(async () => { | ||
| 51 | + const { data } = await prepareDonateAPI(params); | ||
| 52 | + donateInfo.value = data; | ||
| 53 | +}) | ||
| 54 | + | ||
| 55 | +// 弹出捐赠弹框模块 | ||
| 56 | +const showDonate = ref(false); | ||
| 57 | + | ||
| 58 | +const toDonate = () => { | ||
| 59 | + showDonate.value = true; | ||
| 60 | +} | ||
| 61 | + | ||
| 62 | +const closeDonate = (v) => { | ||
| 63 | + showDonate.value = v; | ||
| 64 | +} | ||
| 40 | 65 | ||
| 41 | </script> | 66 | </script> |
| 42 | 67 | ... | ... |
| ... | @@ -24,7 +24,7 @@ | ... | @@ -24,7 +24,7 @@ |
| 24 | </van-col> | 24 | </van-col> |
| 25 | </van-row> | 25 | </van-row> |
| 26 | </div> | 26 | </div> |
| 27 | - <div v-if="item.kg_name" class="donate-name"> | 27 | + <div v-if="item.kg_name && (userType === 'C' || userType === 'K')" class="donate-name"> |
| 28 | <van-row> | 28 | <van-row> |
| 29 | <van-col span="4" style="line-height: 2;">幼儿园</van-col> | 29 | <van-col span="4" style="line-height: 2;">幼儿园</van-col> |
| 30 | <van-col span="18"> | 30 | <van-col span="18"> |
| ... | @@ -32,7 +32,7 @@ | ... | @@ -32,7 +32,7 @@ |
| 32 | </van-col> | 32 | </van-col> |
| 33 | </van-row> | 33 | </van-row> |
| 34 | </div> | 34 | </div> |
| 35 | - <div v-if="item.perf_name" class="donate-name"> | 35 | + <div v-if="item.perf_name && userType === 'C'" class="donate-name"> |
| 36 | <van-row> | 36 | <van-row> |
| 37 | <van-col span="4" style="line-height: 2;">助力人</van-col> | 37 | <van-col span="4" style="line-height: 2;">助力人</van-col> |
| 38 | <van-col span="18"> | 38 | <van-col span="18"> |
| ... | @@ -91,7 +91,8 @@ import { addDonateAPI } from '@/api/C/donate.js' | ... | @@ -91,7 +91,8 @@ import { addDonateAPI } from '@/api/C/donate.js' |
| 91 | const $router = useRouter(); | 91 | const $router = useRouter(); |
| 92 | const props = defineProps({ | 92 | const props = defineProps({ |
| 93 | item: Object, | 93 | item: Object, |
| 94 | - showPopup: Boolean | 94 | + showPopup: Boolean, |
| 95 | + userType: String | ||
| 95 | }) | 96 | }) |
| 96 | const emit = defineEmits(['on-close']); | 97 | const emit = defineEmits(['on-close']); |
| 97 | 98 | ||
| ... | @@ -102,7 +103,21 @@ const donateFlower = async () => { | ... | @@ -102,7 +103,21 @@ const donateFlower = async () => { |
| 102 | return false; | 103 | return false; |
| 103 | } | 104 | } |
| 104 | // 捐钱接口 | 105 | // 捐钱接口 |
| 105 | - const { data } = await addDonateAPI({ qty: donate_number.value, donate_name: props.item.donate_name, kg_id: props.item.kg_id, perf_id: props.item.perf_id }); | 106 | + // 根据类型过滤提交数据 |
| 107 | + // C 儿童: 提交 perf_id,kg_id | ||
| 108 | + // K 幼儿园: 提交 kg_id | ||
| 109 | + // V 访客: 不提交 perf_id,kg_id | ||
| 110 | + let params = { | ||
| 111 | + qty: donate_number.value, | ||
| 112 | + donate_name: props.item.donate_name, | ||
| 113 | + }; | ||
| 114 | + if (props.donateType === 'C') { // 助力TA | ||
| 115 | + params.perf_id = props.item.perf_id; | ||
| 116 | + params.kg_id = props.item.kg_id; | ||
| 117 | + } else if (props.donateType === 'K') { | ||
| 118 | + params.kg_id = props.item.kg_id; | ||
| 119 | + } | ||
| 120 | + const { data } = await addDonateAPI(params); | ||
| 106 | if (data.id) { | 121 | if (data.id) { |
| 107 | closeBtn(); | 122 | closeBtn(); |
| 108 | // 交易成功跳转回调页面 | 123 | // 交易成功跳转回调页面 | ... | ... |
| ... | @@ -70,7 +70,7 @@ | ... | @@ -70,7 +70,7 @@ |
| 70 | <template #bookDetailSub> | 70 | <template #bookDetailSub> |
| 71 | <div | 71 | <div |
| 72 | style="color: #999999; padding: 0px 1rem 0.5rem;" | 72 | style="color: #999999; padding: 0px 1rem 0.5rem;" |
| 73 | - @click="goToDetail(item.id, item.book_id, item.type)" | 73 | + @click="goToDetail(item.id, item.book_id, item.type, item.perf_id)" |
| 74 | > | 74 | > |
| 75 | {{ item.kg_name }} | {{ item.localism_type }} | 75 | {{ item.kg_name }} | {{ item.localism_type }} |
| 76 | </div> | 76 | </div> |
| ... | @@ -111,7 +111,7 @@ | ... | @@ -111,7 +111,7 @@ |
| 111 | </div> | 111 | </div> |
| 112 | </notice-overlay> | 112 | </notice-overlay> |
| 113 | 113 | ||
| 114 | - <donate-flower :show-popup="showDonate" :item="donateInfo" @on-close="closeDonate" /> | 114 | + <donate-flower :user-type="donateType" :show-popup="showDonate" :item="donateInfo" @on-close="closeDonate" /> |
| 115 | 115 | ||
| 116 | <van-overlay :show="show" z-index="9999"> | 116 | <van-overlay :show="show" z-index="9999"> |
| 117 | <div class="wrapper" @click.stop> | 117 | <div class="wrapper" @click.stop> |
| ... | @@ -121,7 +121,7 @@ | ... | @@ -121,7 +121,7 @@ |
| 121 | </template> | 121 | </template> |
| 122 | 122 | ||
| 123 | <script setup> | 123 | <script setup> |
| 124 | -import { ref, onActivated, nextTick, onMounted } from 'vue' | 124 | +import { ref, onActivated, nextTick, onMounted, computed } from 'vue' |
| 125 | import { useRoute, useRouter, onBeforeRouteLeave } from 'vue-router' | 125 | import { useRoute, useRouter, onBeforeRouteLeave } from 'vue-router' |
| 126 | import { Cookies, _, storeToRefs, mainStore, Toast, hasEllipsis } from '@/utils/generatePackage' | 126 | import { Cookies, _, storeToRefs, mainStore, Toast, hasEllipsis } from '@/utils/generatePackage' |
| 127 | import { MyButton, VideoCard, NoticeOverlay, DonateFlower, ShortcutFixed } from '@/utils/generateModules' | 127 | import { MyButton, VideoCard, NoticeOverlay, DonateFlower, ShortcutFixed } from '@/utils/generateModules' |
| ... | @@ -142,6 +142,11 @@ const { toggleLanguage, onLoad, columns, prod_list, finished, loading, bookInfo, | ... | @@ -142,6 +142,11 @@ const { toggleLanguage, onLoad, columns, prod_list, finished, loading, bookInfo, |
| 142 | const { userInfo } = useDefaultPerf($route.query.id); | 142 | const { userInfo } = useDefaultPerf($route.query.id); |
| 143 | 143 | ||
| 144 | const donateInfo = ref({}) | 144 | const donateInfo = ref({}) |
| 145 | +const userType = Cookies.get('userType') | ||
| 146 | +// 判断是访客进入还是幼儿园进入 | ||
| 147 | +const donateType = computed(() => { | ||
| 148 | + return userType === 'client' ? 'K' : 'V'; | ||
| 149 | +}) | ||
| 145 | onMounted(async () => { | 150 | onMounted(async () => { |
| 146 | const { data } = await prepareDonateAPI({ kg_id: $route.query.kg_id }); | 151 | const { data } = await prepareDonateAPI({ kg_id: $route.query.kg_id }); |
| 147 | donateInfo.value = data; | 152 | donateInfo.value = data; |
| ... | @@ -286,13 +291,14 @@ onBeforeRouteLeave(() => { | ... | @@ -286,13 +291,14 @@ onBeforeRouteLeave(() => { |
| 286 | }) | 291 | }) |
| 287 | 292 | ||
| 288 | /****************** 视频组件相关操作 *******************/ | 293 | /****************** 视频组件相关操作 *******************/ |
| 289 | -const goToDetail = (prod_id, book_id, type) => { // 跳转作品详情页 | 294 | +const goToDetail = (prod_id, book_id, type, perf_id) => { // 跳转作品详情页 |
| 290 | $router.push({ | 295 | $router.push({ |
| 291 | path: '/client/videoDetail', | 296 | path: '/client/videoDetail', |
| 292 | query: { | 297 | query: { |
| 293 | prod_id, | 298 | prod_id, |
| 294 | book_id, | 299 | book_id, |
| 295 | - type // 特殊标识,判断入口 为keepAlive使用 | 300 | + type, // 特殊标识,判断入口 为keepAlive使用 |
| 301 | + perf_id | ||
| 296 | } | 302 | } |
| 297 | }); | 303 | }); |
| 298 | } | 304 | } | ... | ... |
| ... | @@ -57,23 +57,26 @@ | ... | @@ -57,23 +57,26 @@ |
| 57 | <span> 3000</span> | 57 | <span> 3000</span> |
| 58 | </div> | 58 | </div> |
| 59 | <div class="button"> | 59 | <div class="button"> |
| 60 | - <my-button type="primary">为TA助力</my-button> | 60 | + <my-button type="primary" @on-click="toDonate">为TA助力</my-button> |
| 61 | </div> | 61 | </div> |
| 62 | </div> | 62 | </div> |
| 63 | </div> | 63 | </div> |
| 64 | <van-empty v-if="emptyStatus" class="custom-image" :image="no_image" description="暂无作品信息" /> | 64 | <van-empty v-if="emptyStatus" class="custom-image" :image="no_image" description="暂无作品信息" /> |
| 65 | + | ||
| 66 | + <donate-flower user-type="C" :show-popup="showDonate" :item="donateInfo" @on-close="closeDonate" /> | ||
| 65 | </template> | 67 | </template> |
| 66 | 68 | ||
| 67 | <script setup> | 69 | <script setup> |
| 68 | import { ref, onActivated, onMounted } from 'vue' | 70 | import { ref, onActivated, onMounted } from 'vue' |
| 69 | import { useRoute, onBeforeRouteLeave } from 'vue-router' | 71 | import { useRoute, onBeforeRouteLeave } from 'vue-router' |
| 70 | import { storeToRefs } from 'pinia' | 72 | import { storeToRefs } from 'pinia' |
| 71 | -import { MyButton, VideoCard } from '@/utils/generateModules' | 73 | +import { MyButton, VideoCard, DonateFlower } from '@/utils/generateModules' |
| 72 | import { icon_avatar, no_image, icon_flower } from '@/utils/generateIcons.js' | 74 | import { icon_avatar, no_image, icon_flower } from '@/utils/generateIcons.js' |
| 73 | import { _, Toast } from '@/utils/generatePackage.js' | 75 | import { _, Toast } from '@/utils/generatePackage.js' |
| 74 | import { addPages, store } from '@/hooks/useKeepAlive' | 76 | import { addPages, store } from '@/hooks/useKeepAlive' |
| 75 | import { perfInfoAPI, addFollowAPI } from '@/api/C/perf.js' | 77 | import { perfInfoAPI, addFollowAPI } from '@/api/C/perf.js' |
| 76 | import { useScrollTop } from '@/composables'; | 78 | import { useScrollTop } from '@/composables'; |
| 79 | +import { prepareDonateAPI } from '@/api/C/donate.js' | ||
| 77 | 80 | ||
| 78 | const { resetScrollTop } = useScrollTop(); // 页面滚动恢复 | 81 | const { resetScrollTop } = useScrollTop(); // 页面滚动恢复 |
| 79 | resetScrollTop('scrollTopPerson'); | 82 | resetScrollTop('scrollTopPerson'); |
| ... | @@ -84,6 +87,7 @@ const userInfo = ref({}); | ... | @@ -84,6 +87,7 @@ const userInfo = ref({}); |
| 84 | // 因为不能让空图标提前出来的写法 | 87 | // 因为不能让空图标提前出来的写法 |
| 85 | const emptyStatus = ref(false); | 88 | const emptyStatus = ref(false); |
| 86 | 89 | ||
| 90 | +const donateInfo = ref({}) | ||
| 87 | onMounted(async () => { | 91 | onMounted(async () => { |
| 88 | // 获取表演者信息 | 92 | // 获取表演者信息 |
| 89 | const { data } = await perfInfoAPI({ perf_id: $route.query.perf_id }); | 93 | const { data } = await perfInfoAPI({ perf_id: $route.query.perf_id }); |
| ... | @@ -95,8 +99,21 @@ onMounted(async () => { | ... | @@ -95,8 +99,21 @@ onMounted(async () => { |
| 95 | }) | 99 | }) |
| 96 | userInfo.value = data; | 100 | userInfo.value = data; |
| 97 | } | 101 | } |
| 102 | + const donateData = await prepareDonateAPI({ perf_id: $route.query.perf_id }); | ||
| 103 | + donateInfo.value = donateData.data; | ||
| 98 | }); | 104 | }); |
| 99 | 105 | ||
| 106 | +// 弹出捐赠弹框模块 | ||
| 107 | +const showDonate = ref(false); | ||
| 108 | + | ||
| 109 | +const toDonate = () => { | ||
| 110 | + showDonate.value = true; | ||
| 111 | +} | ||
| 112 | + | ||
| 113 | +const closeDonate = (v) => { | ||
| 114 | + showDonate.value = v; | ||
| 115 | +} | ||
| 116 | + | ||
| 100 | // 关注个人用户 | 117 | // 关注个人用户 |
| 101 | const followUser = async () => { | 118 | const followUser = async () => { |
| 102 | const { msg } = await addFollowAPI({ perf_id: $route.query.perf_id }); | 119 | const { msg } = await addFollowAPI({ perf_id: $route.query.perf_id }); | ... | ... |
-
Please register or login to post a comment