hookehuyr

🎈 perf: 角色判断使用常量,快捷访问传参优化

...@@ -3,18 +3,18 @@ ...@@ -3,18 +3,18 @@
3 <van-row> 3 <van-row>
4 <van-col span="8"> 4 <van-col span="8">
5 <van-image width="7rem" height="7rem" :src="item.cover" fit="contain" lazy-load style="text-align: center;"> 5 <van-image width="7rem" height="7rem" :src="item.cover" fit="contain" lazy-load style="text-align: center;">
6 - <template #:loading> 6 + <template #loading>
7 <van-loading type="spinner" size="20" /> 7 <van-loading type="spinner" size="20" />
8 </template> 8 </template>
9 </van-image> 9 </van-image>
10 </van-col> 10 </van-col>
11 <van-col class="wrapper" span="16"> 11 <van-col class="wrapper" span="16">
12 <p class="title van-multi-ellipsis--l2">{{ item.name }}</p> 12 <p class="title van-multi-ellipsis--l2">{{ item.name }}</p>
13 - <div v-if="type === 'C'" class="van-multi-ellipsis--l2 content">{{ item.note }}</div> 13 + <div v-if="type === USER_ROLE.CLIENT" class="van-multi-ellipsis--l2 content">{{ item.note }}</div>
14 <div class="sub"> 14 <div class="sub">
15 <van-icon :name="icon_video" />&nbsp;&nbsp;<span>{{ item.prod_num }}个作品</span> 15 <van-icon :name="icon_video" />&nbsp;&nbsp;<span>{{ item.prod_num }}个作品</span>
16 </div> 16 </div>
17 - <div v-if="type === 'B'" class="upload" @click="onUpload(item)">上传视频</div> 17 + <div v-if="type === USER_ROLE.BUSINESS" class="upload" @click="onUpload(item)">上传视频</div>
18 </van-col> 18 </van-col>
19 </van-row> 19 </van-row>
20 </div> 20 </div>
...@@ -29,10 +29,10 @@ ...@@ -29,10 +29,10 @@
29 <script setup> 29 <script setup>
30 import icon_video from '@images/video.png' 30 import icon_video from '@images/video.png'
31 31
32 -import { ref, reactive, onMounted } from 'vue' 32 +import { ref } from 'vue'
33 -import { useRoute, useRouter, onBeforeRouteLeave } from 'vue-router' 33 +import { onBeforeRouteLeave } from 'vue-router'
34 34
35 -import { JSJ_FORM_B } from '@/constant' 35 +import { JSJ_FORM_B, USER_ROLE } from '@/constant'
36 36
37 const props = defineProps({ 37 const props = defineProps({
38 item: Object, 38 item: Object,
...@@ -41,7 +41,7 @@ const props = defineProps({ ...@@ -41,7 +41,7 @@ const props = defineProps({
41 }) 41 })
42 const emit = defineEmits(['on-click']); 42 const emit = defineEmits(['on-click']);
43 const handle = () => { 43 const handle = () => {
44 - if (props.type === 'C') { // 类型是客户端时,才能查看 44 + if (props.type === USER_ROLE.CLIENT) { // 类型是客户端时,才能查看
45 emit('on-click', props.item) 45 emit('on-click', props.item)
46 } 46 }
47 } 47 }
......
...@@ -6,9 +6,9 @@ export const useShortcutBar = (item) => { ...@@ -6,9 +6,9 @@ export const useShortcutBar = (item) => {
6 const $route = useRoute(); 6 const $route = useRoute();
7 const path = $route.path; 7 const path = $route.path;
8 const isClient = Cookies.get('userType') === 'client' ? true : false; // 判断C端入口位置,访客/客户 8 const isClient = Cookies.get('userType') === 'client' ? true : false; // 判断C端入口位置,访客/客户
9 - const case1 = ['home', 'me', 'rank']; 9 + // const case1 = ['home', 'me', 'rank'];
10 - const case2 = ['home']; 10 + // const case2 = ['home'];
11 - const case3 = ['me']; 11 + // const case3 = ['me'];
12 const shortcutItem = ref([]); 12 const shortcutItem = ref([]);
13 13
14 // 配置快捷跳转条 14 // 配置快捷跳转条
...@@ -17,18 +17,18 @@ export const useShortcutBar = (item) => { ...@@ -17,18 +17,18 @@ export const useShortcutBar = (item) => {
17 } else { 17 } else {
18 if (path === '/client/chooseBook') { // 爱心捐书页面 18 if (path === '/client/chooseBook') { // 爱心捐书页面
19 if (isClient) { 19 if (isClient) {
20 - shortcutItem.value = case1 20 + shortcutItem.value = ['home', 'me', 'rank']
21 } else { 21 } else {
22 - shortcutItem.value = case3 22 + shortcutItem.value = ['me']
23 } 23 }
24 } 24 }
25 25
26 if (path === '/client/donateCertificate') { 26 if (path === '/client/donateCertificate') {
27 - shortcutItem.value = case2 27 + shortcutItem.value = ['home']
28 } 28 }
29 29
30 if (path === '/business/index') { 30 if (path === '/business/index') {
31 - shortcutItem.value = case3 31 + shortcutItem.value = ['me']
32 } 32 }
33 } 33 }
34 34
......
1 <template> 1 <template>
2 <div class="all-book-page content-bg"> 2 <div class="all-book-page content-bg">
3 - <div class="modify-top"></div> 3 + <div class="modify-top" />
4 <div class="belong-school"> 4 <div class="belong-school">
5 <van-row align="center" justify="center" style="position: relative; top: 50%; transform: translateY(-50%);"> 5 <van-row align="center" justify="center" style="position: relative; top: 50%; transform: translateY(-50%);">
6 <van-col span="2"> 6 <van-col span="2">
7 - <van-image v-if="kgInfo.logo" round width="3rem" height="3rem" lazy-load :src="kgInfo.logo" style="vertical-align: text-bottom;" > 7 + <van-image round width="3rem" height="3rem" lazy-load :src="kgInfo.logo ? kgInfo.logo : icon_logo" style="vertical-align: text-bottom;" />
8 - <template v-slot:error>加载失败</template>
9 - </van-image>
10 - <van-image v-else round width="3rem" height="3rem" lazy-load :src="icon_avatar" style="vertical-align: text-bottom;" >
11 - <template v-slot:error>加载失败</template>
12 - </van-image>
13 </van-col> 8 </van-col>
14 <van-col span="22"> 9 <van-col span="22">
15 <p class="title">{{ kgInfo.name }}</p> 10 <p class="title">{{ kgInfo.name }}</p>
...@@ -17,14 +12,15 @@ ...@@ -17,14 +12,15 @@
17 </van-row> 12 </van-row>
18 </div> 13 </div>
19 <div class="summary"> 14 <div class="summary">
20 - <div class="ding left"></div> 15 + <div class="ding left" />
21 <div class="wrapper"> 16 <div class="wrapper">
22 <div class="content-box"> 17 <div class="content-box">
23 <van-row class="van-hairline--bottom"> 18 <van-row class="van-hairline--bottom">
24 <van-col span="12" class="van-hairline--right"> 19 <van-col span="12" class="van-hairline--right">
25 <div class="text-box"> 20 <div class="text-box">
26 <span class="text bg-gradient">视频上传</span> 21 <span class="text bg-gradient">视频上传</span>
27 - <span class="number">&nbsp;{{ kgInfo.mission_num }}<span style="color: #888888;">/{{ kgInfo.mission_target }}</span></span> 22 + <span class="number">&nbsp;{{ kgInfo.mission_num }}<span style="color: #888888;">/{{
23 + kgInfo.mission_target }}</span></span>
28 </div> 24 </div>
29 </van-col> 25 </van-col>
30 <van-col span="12"> 26 <van-col span="12">
...@@ -50,7 +46,7 @@ ...@@ -50,7 +46,7 @@
50 </van-row> 46 </van-row>
51 </div> 47 </div>
52 </div> 48 </div>
53 - <div class="ding right"></div> 49 + <div class="ding right" />
54 </div> 50 </div>
55 <div class="book-list"> 51 <div class="book-list">
56 <div class="header van-hairline--bottom"> 52 <div class="header van-hairline--bottom">
...@@ -58,7 +54,7 @@ ...@@ -58,7 +54,7 @@
58 <van-col span="8" class="left"> 54 <van-col span="8" class="left">
59 <span class="text bg-gradient">所有书籍</span> 55 <span class="text bg-gradient">所有书籍</span>
60 </van-col> 56 </van-col>
61 - <van-col span="8"></van-col> 57 + <van-col span="8" />
62 <van-col span="8" class="right"> 58 <van-col span="8" class="right">
63 <van-icon :name="icon_book" size="0.8rem" style="vertical-align: middle;" /> 59 <van-icon :name="icon_book" size="0.8rem" style="vertical-align: middle;" />
64 &nbsp;<span style="vertical-align: middle;">共 {{ kgInfo.book_num }} 种</span> 60 &nbsp;<span style="vertical-align: middle;">共 {{ kgInfo.book_num }} 种</span>
...@@ -66,29 +62,23 @@ ...@@ -66,29 +62,23 @@
66 </van-row> 62 </van-row>
67 </div> 63 </div>
68 <template v-for="(item, key) in kgInfo.book" :key="key"> 64 <template v-for="(item, key) in kgInfo.book" :key="key">
69 - <book-card :item="item" type="B" :user_id="kgInfo.user_id"></book-card> 65 + <book-card :item="item" :type="USER_ROLE.BUSINESS" :user_id="kgInfo.user_id" />
70 </template> 66 </template>
71 - <van-empty v-if="emptyStatus" 67 + <van-empty v-if="emptyStatus" class="custom-image" :image="no_image" description="暂无书籍" />
72 - class="custom-image"
73 - :image="no_image"
74 - description="暂无书籍"
75 - />
76 </div> 68 </div>
77 - <div style="height: 1rem;"></div> 69 + <div style="height: 1rem;" />
78 - <shortcut-fixed type="B" :item="shortcutItem"></shortcut-fixed> 70 + <shortcut-fixed :type="USER_ROLE.BUSINESS" :item="['me']" />
79 </div> 71 </div>
80 </template> 72 </template>
81 73
82 <script setup> 74 <script setup>
83 -import { no_image, icon_avatar, icon_book } from '@/utils/generateIcons' 75 +import { no_image, icon_logo, icon_book } from '@/utils/generateIcons'
84 import { ShortcutFixed, BookCard } from '@/utils/generateModules' 76 import { ShortcutFixed, BookCard } from '@/utils/generateModules'
77 +import { USER_ROLE } from '@/constant'
85 78
86 import { ref } from 'vue' 79 import { ref } from 'vue'
87 import axios from '@/utils/axios'; 80 import axios from '@/utils/axios';
88 import { Toast } from 'vant'; 81 import { Toast } from 'vant';
89 -import { useShortcutBar } from '@/composables';
90 -
91 -const { shortcutItem } = useShortcutBar(['me']); // 配置快捷跳转条
92 82
93 // 因为不能让空图标提前出来的写法 83 // 因为不能让空图标提前出来的写法
94 const emptyStatus = ref(false); 84 const emptyStatus = ref(false);
......
1 <template> 1 <template>
2 <div class="top-content"> 2 <div class="top-content">
3 - <van-image v-if="myKgInfo.logo" round width="4rem" height="4rem" :src="myKgInfo.logo" /> 3 + <van-image round width="4rem" height="4rem" :src="myKgInfo.logo ? myKgInfo.logo : icon_logo" />
4 - <van-image v-else round width="4rem" height="4rem" :src="icon_avatar" />
5 <p style="margin-top: 1rem; font-size: 1.05rem; font-weight: bold;">{{ myKgInfo.name }}</p> 4 <p style="margin-top: 1rem; font-size: 1.05rem; font-weight: bold;">{{ myKgInfo.name }}</p>
6 </div> 5 </div>
7 <template v-for="(item, key) in itemList" :key="key"> 6 <template v-for="(item, key) in itemList" :key="key">
...@@ -10,24 +9,26 @@ ...@@ -10,24 +9,26 @@
10 <van-col span="12">{{ item.name }}</van-col> 9 <van-col span="12">{{ item.name }}</van-col>
11 <van-col span="12" style="text-align: right; color: #777777;"> 10 <van-col span="12" style="text-align: right; color: #777777;">
12 <span v-if="!item.tag">{{ item.sum }}&nbsp;&nbsp;</span> 11 <span v-if="!item.tag">{{ item.sum }}&nbsp;&nbsp;</span>
13 - <span v-else><van-tag round color="red">{{ item.sum }}</van-tag>&nbsp;&nbsp;</span> 12 + <span v-else>
14 - <van-icon name="arrow" /></van-col> 13 + <van-tag round color="red">{{ item.sum }}</van-tag>&nbsp;&nbsp;
14 + </span>
15 + <van-icon name="arrow" />
16 + </van-col>
15 </van-row> 17 </van-row>
16 </div> 18 </div>
17 </template> 19 </template>
18 - <div @click="exitLogin" class="exit-btn">退出登录</div> 20 + <div class="exit-btn" @click="exitLogin">退出登录</div>
19 - <shortcut-fixed type="B" :item="['home']"></shortcut-fixed> 21 + <shortcut-fixed :type="USER_ROLE.BUSINESS" :item="['home']" />
20 </template> 22 </template>
21 23
22 <script setup> 24 <script setup>
23 import ShortcutFixed from '@/components/ShortcutFixed/index.vue' 25 import ShortcutFixed from '@/components/ShortcutFixed/index.vue'
24 -import icon_avatar from '@images/que-logo@2x.png' 26 +import { icon_logo } from '@/utils/generateIcons';
25 - 27 +import { USER_ROLE } from '@/constant'
26 -import { ref, reactive, onMounted } from 'vue' 28 +import { ref} from 'vue'
27 -import { useRoute, useRouter } from 'vue-router' 29 +import { useRouter } from 'vue-router'
28 import axios from '@/utils/axios'; 30 import axios from '@/utils/axios';
29 import { Toast } from 'vant'; 31 import { Toast } from 'vant';
30 -const $route = useRoute();
31 const $router = useRouter(); 32 const $router = useRouter();
32 33
33 const myKgInfo = ref({}); 34 const myKgInfo = ref({});
......
...@@ -97,7 +97,7 @@ ...@@ -97,7 +97,7 @@
97 <my-button type="primary" @on-click="toDonate">爱心助力</my-button> 97 <my-button type="primary" @on-click="toDonate">爱心助力</my-button>
98 </div> 98 </div>
99 </div> 99 </div>
100 - <shortcut-fixed type="C" :item="shortcutItem" /> 100 + <shortcut-fixed :type="USER_ROLE.CLIENT" :item="['home', 'me']" />
101 </div> 101 </div>
102 102
103 <!-- 上传时,如果没有默认儿童提示弹框, 如果没有实名认证提示弹框 --> 103 <!-- 上传时,如果没有默认儿童提示弹框, 如果没有实名认证提示弹框 -->
...@@ -123,11 +123,11 @@ import { Cookies, _, storeToRefs, mainStore, Toast, hasEllipsis } from '@/utils/ ...@@ -123,11 +123,11 @@ import { Cookies, _, storeToRefs, mainStore, Toast, hasEllipsis } from '@/utils/
123 import { MyButton, VideoCard, NoticeOverlay, DonateFlower, ShortcutFixed } from '@/utils/generateModules' 123 import { MyButton, VideoCard, NoticeOverlay, DonateFlower, ShortcutFixed } from '@/utils/generateModules'
124 import { icon_video, icon_up, icon_down, icon_subscribed, icon_unsubscribe, no_image } from '@/utils/generateIcons' 124 import { icon_video, icon_up, icon_down, icon_subscribed, icon_unsubscribe, no_image } from '@/utils/generateIcons'
125 import { JSJ_FORM_C } from '@/constant' 125 import { JSJ_FORM_C } from '@/constant'
126 -import { useVideoList, useDefaultPerf, useShortcutBar, useScrollTop } from '@/composables'; 126 +import { useVideoList, useDefaultPerf, useScrollTop } from '@/composables';
127 import { addSubscribeAPI } from '@/api/C/book.js' 127 import { addSubscribeAPI } from '@/api/C/book.js'
128 import { prepareDonateAPI } from '@/api/C/donate.js' 128 import { prepareDonateAPI } from '@/api/C/donate.js'
129 +import { USER_ROLE, USER_TYPE } from '@/constant'
129 130
130 -const { shortcutItem } = useShortcutBar(['home', 'me']); // 配置快捷跳转条
131 const { resetScrollTop } = useScrollTop(); // 页面滚动恢复 131 const { resetScrollTop } = useScrollTop(); // 页面滚动恢复
132 resetScrollTop('scrollTop'); 132 resetScrollTop('scrollTop');
133 133
...@@ -141,7 +141,7 @@ const donateInfo = ref({}) ...@@ -141,7 +141,7 @@ const donateInfo = ref({})
141 const userType = Cookies.get('userType') 141 const userType = Cookies.get('userType')
142 // 判断是访客进入还是幼儿园进入 142 // 判断是访客进入还是幼儿园进入
143 const donateType = computed(() => { 143 const donateType = computed(() => {
144 - return userType === 'client' ? 'K' : 'V'; 144 + return userType === 'client' ? USER_TYPE.KINDERGARTEN : USER_TYPE.VISIT;
145 }) 145 })
146 onMounted(async () => { 146 onMounted(async () => {
147 const { data } = await prepareDonateAPI({ kg_id: $route.query.kg_id }); 147 const { data } = await prepareDonateAPI({ kg_id: $route.query.kg_id });
......
...@@ -52,12 +52,12 @@ ...@@ -52,12 +52,12 @@
52 import { no_image, icon_logo } from '@/utils/generateIcons'; 52 import { no_image, icon_logo } from '@/utils/generateIcons';
53 import { MyButton, ShortcutFixed, BookCard } from '@/utils/generateModules'; 53 import { MyButton, ShortcutFixed, BookCard } from '@/utils/generateModules';
54 import { styleObject3 } from '@/settings/designSetting.js'; 54 import { styleObject3 } from '@/settings/designSetting.js';
55 -import { useBookList, useShortcutBar } from '@/composables'; 55 +import { useBookList } from '@/composables';
56 import { useGo } from '@/hooks/useGo'; 56 import { useGo } from '@/hooks/useGo';
57 import { killPages, store } from '@/hooks/useKeepAlive'; 57 import { killPages, store } from '@/hooks/useKeepAlive';
58 import { Cookies } from '@/utils/generatePackage.js' 58 import { Cookies } from '@/utils/generatePackage.js'
59 import { DonateBar } from '@/utils/generateModules.js' 59 import { DonateBar } from '@/utils/generateModules.js'
60 -import { computed } from 'vue' 60 +import { computed, ref } from 'vue'
61 import { USER_ROLE, USER_TYPE } from '@/constant' 61 import { USER_ROLE, USER_TYPE } from '@/constant'
62 62
63 const go = useGo(); 63 const go = useGo();
...@@ -67,7 +67,14 @@ killPages(); ...@@ -67,7 +67,14 @@ killPages();
67 store.changeScrollTop(0); 67 store.changeScrollTop(0);
68 68
69 const { kg_id, kgInfo, emptyStatus } = useBookList(); 69 const { kg_id, kgInfo, emptyStatus } = useBookList();
70 -const { shortcutItem } = useShortcutBar(); // 配置快捷跳转条 70 +// 配置快捷访问
71 +const shortcutItem = ref([])
72 +const isClient = Cookies.get('userType') === 'client' ? true : false; // 判断C端入口位置,访客/客户
73 +if (isClient) {
74 + shortcutItem.value = ['home', 'me', 'rank']
75 +} else {
76 + shortcutItem.value = ['me']
77 +}
71 78
72 const userType = Cookies.get('userType') 79 const userType = Cookies.get('userType')
73 // 判断是访客进入还是幼儿园进入 80 // 判断是访客进入还是幼儿园进入
......
1 +<!--
2 + * @Author: hookehuyr hookehuyr@gmail.com
3 + * @Date: 2022-04-27 10:23:05
4 + * @LastEditors: hookehuyr hookehuyr@gmail.com
5 + * @LastEditTime: 2022-06-09 01:38:37
6 + * @FilePath: /tswj/src/views/client/donateCertificate.vue
7 + * @Description: 捐赠成功后显示证书页面
8 +-->
1 <template> 9 <template>
2 <div class="donate-certificate-page content-bg"> 10 <div class="donate-certificate-page content-bg">
3 <donate-cert :item="certItem" /> 11 <donate-cert :item="certItem" />
4 </div> 12 </div>
5 - <shortcut-fixed type="C" :item="shortcutItem" /> 13 + <shortcut-fixed :type="USER_ROLE.CLIENT" :item="['home']" />
6 </template> 14 </template>
7 15
8 <script setup> 16 <script setup>
9 import DonateCert from '@/components/DonateCert/index' 17 import DonateCert from '@/components/DonateCert/index'
10 import ShortcutFixed from '@/components/ShortcutFixed/index' 18 import ShortcutFixed from '@/components/ShortcutFixed/index'
11 - 19 +import { USER_ROLE } from '@/constant'
12 import { ref } from 'vue' 20 import { ref } from 'vue'
13 import { useRoute } from 'vue-router' 21 import { useRoute } from 'vue-router'
14 import axios from '@/utils/axios'; 22 import axios from '@/utils/axios';
15 import { Toast } from 'vant'; 23 import { Toast } from 'vant';
16 -import { useShortcutBar } from '@/composables';
17 24
18 const $route = useRoute(); 25 const $route = useRoute();
19 26
20 -// 配置快捷跳转条
21 -// const shortcutItem = ref(['home']);
22 -const { shortcutItem } = useShortcutBar(['home']); // 配置快捷跳转条
23 -
24 const certItem = ref('') 27 const certItem = ref('')
25 // 捐款成功后,查询生成捐赠证书 28 // 捐款成功后,查询生成捐赠证书
26 axios.get('/srv/?a=one_cert', { 29 axios.get('/srv/?a=one_cert', {
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
2 * @Author: hookehuyr hookehuyr@gmail.com 2 * @Author: hookehuyr hookehuyr@gmail.com
3 * @Date: 2022-04-26 16:06:31 3 * @Date: 2022-04-26 16:06:31
4 * @LastEditors: hookehuyr hookehuyr@gmail.com 4 * @LastEditors: hookehuyr hookehuyr@gmail.com
5 - * @LastEditTime: 2022-06-07 14:04:30 5 + * @LastEditTime: 2022-06-09 01:52:33
6 * @FilePath: /tswj/src/views/client/finishUpload.vue 6 * @FilePath: /tswj/src/views/client/finishUpload.vue
7 * @Description: 作品上传成功提示页面 7 * @Description: 作品上传成功提示页面
8 --> 8 -->
...@@ -31,7 +31,7 @@ ...@@ -31,7 +31,7 @@
31 31
32 <script setup> 32 <script setup>
33 import icon_success from '@images/que-sucess@2x.png' 33 import icon_success from '@images/que-sucess@2x.png'
34 - 34 +import { USER_TYPE } from '@/constant'
35 import MyButton from '@/components/MyButton/index.vue' 35 import MyButton from '@/components/MyButton/index.vue'
36 import DonateFlower from '@/components/DonateFlower/index.vue' 36 import DonateFlower from '@/components/DonateFlower/index.vue'
37 37
...@@ -57,7 +57,7 @@ const donateInfo = ref({}) ...@@ -57,7 +57,7 @@ const donateInfo = ref({})
57 const userType = Cookies.get('userType') 57 const userType = Cookies.get('userType')
58 // 判断是访客进入还是幼儿园进入 58 // 判断是访客进入还是幼儿园进入
59 const donateType = computed(() => { 59 const donateType = computed(() => {
60 - return userType === 'client' ? 'K' : 'V'; 60 + return userType === 'client' ? USER_TYPE.KINDERGARTEN : USER_TYPE.VISIT;
61 }) 61 })
62 onMounted(async () => { 62 onMounted(async () => {
63 const { data } = await prepareDonateAPI({ kg_id: $route.query.kg_id }); 63 const { data } = await prepareDonateAPI({ kg_id: $route.query.kg_id });
......