hookehuyr

🦄 refactor: 用户类型使用常量编码,优化代码

...@@ -2,67 +2,59 @@ ...@@ -2,67 +2,59 @@
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-06-07 16:33:09 5 + * @LastEditTime: 2022-06-08 21:21:09
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" @click="toDonate"><slot /></div> 11 + <div class="text" @click="showDonate=true">
12 + <slot />
13 + </div>
12 </div> 14 </div>
13 - <donate-flower :user-type="donateType" :show-popup="showDonate" :item="donateInfo" @on-close="closeDonate" /> 15 + <donate-flower
16 + :user-type="donateType"
17 + :show-popup="showDonate"
18 + :item="donateInfo"
19 + @on-close="showDonate=false"
20 + />
14 </template> 21 </template>
15 22
16 <script setup> 23 <script setup>
17 import { ref, onMounted } from 'vue' 24 import { ref, onMounted } from 'vue'
18 import { useRoute } from 'vue-router' 25 import { useRoute } from 'vue-router'
19 26
20 -import { Cookies, $, _, axios, storeToRefs, mainStore, Toast, useTitle } from '@/utils/generatePackage.js'
21 -//import { } from '@/utils/generateModules.js'
22 -//import { } from '@/utils/generateIcons.js'
23 -//import { } from '@/composables'
24 import { DonateFlower } from '@/utils/generateModules' 27 import { DonateFlower } from '@/utils/generateModules'
25 import { prepareDonateAPI } from '@/api/C/donate.js' 28 import { prepareDonateAPI } from '@/api/C/donate.js'
29 +import { USER_TYPE } from '@/constant'
26 30
27 const $route = useRoute(); 31 const $route = useRoute();
28 -useTitle($route.meta.title);
29 -
30 const props = defineProps({ 32 const props = defineProps({
31 donateType: { 33 donateType: {
32 type: String, 34 type: String,
33 default: (value) => value, 35 default: (value) => value,
34 validator: value => { 36 validator: value => {
35 - return ['C', 'V', 'K'].includes(value); // type: C | V | K, 儿童|访客|幼儿园 37 + return [
38 + USER_TYPE.CHILDREN,
39 + USER_TYPE.VISIT,
40 + USER_TYPE.KINDERGARTEN
41 + ].includes(value);
36 } 42 }
37 } 43 }
38 }) 44 })
39 45
40 -// 捐钱-游客 type: V 46 +// 查询参数
41 -// 捐钱-幼儿园 type: K
42 -// 捐钱-指定儿童 type: C
43 -const donateInfo = ref({})
44 let params = {}; 47 let params = {};
45 -if (props.donateType === 'C') { // 助力TA 48 +if (props.donateType === USER_TYPE.CHILDREN) params = { perf_id: $route.query.perf_id };
46 - params = { perf_id: $route.query.perf_id } 49 +if (props.donateType === USER_TYPE.KINDERGARTEN) params = { kg_id: $route.query.kg_id };
47 -} else if (props.donateType === 'K') { 50 +
48 - params = { kg_id: $route.query.kg_id } 51 +const donateInfo = ref({})
49 -}
50 onMounted(async () => { 52 onMounted(async () => {
51 const { data } = await prepareDonateAPI(params); 53 const { data } = await prepareDonateAPI(params);
52 donateInfo.value = data; 54 donateInfo.value = data;
53 }) 55 })
54 56
55 -// 弹出捐赠弹框模块
56 const showDonate = ref(false); 57 const showDonate = ref(false);
57 -
58 -const toDonate = () => {
59 - showDonate.value = true;
60 -}
61 -
62 -const closeDonate = (v) => {
63 - showDonate.value = v;
64 -}
65 -
66 </script> 58 </script>
67 59
68 <style lang="less" scoped> 60 <style lang="less" scoped>
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
2 * @Author: hookehuyr hookehuyr@gmail.com 2 * @Author: hookehuyr hookehuyr@gmail.com
3 * @Date: 2022-05-25 18:34:17 3 * @Date: 2022-05-25 18:34:17
4 * @LastEditors: hookehuyr hookehuyr@gmail.com 4 * @LastEditors: hookehuyr hookehuyr@gmail.com
5 - * @LastEditTime: 2022-06-02 21:14:14 5 + * @LastEditTime: 2022-06-08 21:07:19
6 * @FilePath: /tswj/src/constant.js 6 * @FilePath: /tswj/src/constant.js
7 * @Description: 7 * @Description:
8 */ 8 */
...@@ -17,3 +17,25 @@ export const styleColor = { ...@@ -17,3 +17,25 @@ export const styleColor = {
17 baseColor: '#11D2B1', 17 baseColor: '#11D2B1',
18 baseFontColor: '#FFFFFF' 18 baseFontColor: '#FFFFFF'
19 } 19 }
20 +
21 +/**
22 + * 客户端类型
23 + * @param CLIENT 家长端
24 + * @param BUSINESS 老师端
25 + */
26 +export const USER_ROLE = {
27 + CLIENT: 'C',
28 + BUSINESS: 'B',
29 +}
30 +
31 +/**
32 + * 用户身份
33 + * @param CHILDREN 儿童
34 + * @param VISIT 访客
35 + * @param KINDERGARTEN 幼儿园
36 + */
37 +export const USER_TYPE = {
38 + CHILDREN: 'C',
39 + VISIT: 'V',
40 + KINDERGARTEN: 'K',
41 +}
......
...@@ -5,24 +5,8 @@ ...@@ -5,24 +5,8 @@
5 <div v-if="kg_id" :class="[kgInfo.multi_name ? 'height3rem' : 'height3rem', 'belong-school']"> 5 <div v-if="kg_id" :class="[kgInfo.multi_name ? 'height3rem' : 'height3rem', 'belong-school']">
6 <van-row align="center" justify="center" style="position: relative; top: 50%; transform: translateY(-50%)"> 6 <van-row align="center" justify="center" style="position: relative; top: 50%; transform: translateY(-50%)">
7 <van-col span="2"> 7 <van-col span="2">
8 - <van-image 8 + <van-image round width="3rem" height="3rem" lazy-load :src="kgInfo.logo ? kgInfo.logo : icon_logo"
9 - v-if="kgInfo.logo" round width="3rem" height="3rem" lazy-load 9 + style="vertical-align: text-bottom" />
10 - :src="kgInfo.logo"
11 - style="vertical-align: text-bottom"
12 - >
13 - <template #error>
14 - 加载失败
15 - </template>
16 - </van-image>
17 - <van-image
18 - v-else round width="3rem" height="3rem" lazy-load
19 - :src="icon_logo"
20 - style="vertical-align: text-bottom"
21 - >
22 - <template #error>
23 - 加载失败
24 - </template>
25 - </van-image>
26 </van-col> 10 </van-col>
27 <van-col span="22"> 11 <van-col span="22">
28 <div v-if="kgInfo.multi_name" class="title"> 12 <div v-if="kgInfo.multi_name" class="title">
...@@ -54,13 +38,13 @@ ...@@ -54,13 +38,13 @@
54 </div> 38 </div>
55 <div class="book-list"> 39 <div class="book-list">
56 <template v-for="(item, key) in kgInfo.book_list" :key="key"> 40 <template v-for="(item, key) in kgInfo.book_list" :key="key">
57 - <book-card type="C" :item="item" @on-click="go('/client/bookDetail', { id: item.id, kg_id })" /> 41 + <book-card :type="USER_ROLE.CLIENT" :item="item" @on-click="go('/client/bookDetail', { id: item.id, kg_id })" />
58 </template> 42 </template>
59 <van-empty v-if="emptyStatus" class="custom-image" :image="no_image" description="暂无书籍信息" /> 43 <van-empty v-if="emptyStatus" class="custom-image" :image="no_image" description="暂无书籍信息" />
60 </div> 44 </div>
61 <div style="height: 5rem" /> 45 <div style="height: 5rem" />
62 <donate-bar :donate-type="donateType">爱心助力</donate-bar> 46 <donate-bar :donate-type="donateType">爱心助力</donate-bar>
63 - <shortcut-fixed type="C" :item="shortcutItem" /> 47 + <shortcut-fixed :type="USER_ROLE.CLIENT" :item="shortcutItem" />
64 </div> 48 </div>
65 </template> 49 </template>
66 50
...@@ -71,11 +55,12 @@ import { styleObject3 } from '@/settings/designSetting.js'; ...@@ -71,11 +55,12 @@ import { styleObject3 } from '@/settings/designSetting.js';
71 import { useBookList, useShortcutBar } from '@/composables'; 55 import { useBookList, useShortcutBar } from '@/composables';
72 import { useGo } from '@/hooks/useGo'; 56 import { useGo } from '@/hooks/useGo';
73 import { killPages, store } from '@/hooks/useKeepAlive'; 57 import { killPages, store } from '@/hooks/useKeepAlive';
74 -import { Cookies, $, _, axios, storeToRefs, mainStore, Toast, useTitle } from '@/utils/generatePackage.js' 58 +import { Cookies } from '@/utils/generatePackage.js'
75 import { DonateBar } from '@/utils/generateModules.js' 59 import { DonateBar } from '@/utils/generateModules.js'
76 -import { ref, computed } from 'vue' 60 +import { computed } from 'vue'
77 -const go = useGo(); 61 +import { USER_ROLE, USER_TYPE } from '@/constant'
78 62
63 +const go = useGo();
79 // 删除所有的 keep-alive 缓存 64 // 删除所有的 keep-alive 缓存
80 killPages(); 65 killPages();
81 // 清空记录位置 66 // 清空记录位置
...@@ -87,7 +72,7 @@ const { shortcutItem } = useShortcutBar(); // 配置快捷跳转条 ...@@ -87,7 +72,7 @@ const { shortcutItem } = useShortcutBar(); // 配置快捷跳转条
87 const userType = Cookies.get('userType') 72 const userType = Cookies.get('userType')
88 // 判断是访客进入还是幼儿园进入 73 // 判断是访客进入还是幼儿园进入
89 const donateType = computed(() => { 74 const donateType = computed(() => {
90 - return userType === 'client' ? 'K' : 'V'; 75 + return userType === 'client' ? USER_TYPE.KINDERGARTEN : USER_TYPE.VISIT;
91 }) 76 })
92 </script> 77 </script>
93 78
...@@ -103,6 +88,7 @@ const donateType = computed(() => { ...@@ -103,6 +88,7 @@ const donateType = computed(() => {
103 .choose-book-page { 88 .choose-book-page {
104 .belong-school { 89 .belong-school {
105 padding: 1.5rem; 90 padding: 1.5rem;
91 +
106 .title { 92 .title {
107 color: #222222; 93 color: #222222;
108 display: inline-block; 94 display: inline-block;
...@@ -110,9 +96,11 @@ const donateType = computed(() => { ...@@ -110,9 +96,11 @@ const donateType = computed(() => {
110 margin-left: 2rem; 96 margin-left: 2rem;
111 } 97 }
112 } 98 }
99 +
113 .height3rem { 100 .height3rem {
114 height: 3rem; 101 height: 3rem;
115 } 102 }
103 +
116 .height6rem { 104 .height6rem {
117 height: 6rem; 105 height: 6rem;
118 } 106 }
...@@ -145,6 +133,7 @@ const donateType = computed(() => { ...@@ -145,6 +133,7 @@ const donateType = computed(() => {
145 right: 8rem; 133 right: 8rem;
146 } 134 }
147 } 135 }
136 +
148 .fix-btn { 137 .fix-btn {
149 position: fixed; 138 position: fixed;
150 bottom: 0; 139 bottom: 0;
......