Showing
15 changed files
with
216 additions
and
43 deletions
@@ -88,13 +88,21 @@ export default { | @@ -88,13 +88,21 @@ export default { | ||
88 | this.hide(); | 88 | this.hide(); |
89 | this.$emit('closeAction'); | 89 | this.$emit('closeAction'); |
90 | }, | 90 | }, |
91 | - pay() { | 91 | + delay(ns) { |
92 | + return new Promise(resolve => { | ||
93 | + setTimeout(resolve, ns); | ||
94 | + }); | ||
95 | + }, | ||
96 | + async pay() { | ||
92 | this.$emit('confirmAction'); | 97 | this.$emit('confirmAction'); |
93 | 98 | ||
94 | const toast = this.$createToast({ | 99 | const toast = this.$createToast({ |
95 | - txt: '正在调起支付宝' | 100 | + txt: '正在调起支付宝', |
101 | + mask: true | ||
96 | }).show(); | 102 | }).show(); |
97 | 103 | ||
104 | + await this.delay(1500); | ||
105 | + | ||
98 | this.payAction({ | 106 | this.payAction({ |
99 | orderCode: this.orderCode | 107 | orderCode: this.orderCode |
100 | }).then((result) => { | 108 | }).then((result) => { |
@@ -13,6 +13,8 @@ import OrderPromotionList from 'components/order-promotion-list'; | @@ -13,6 +13,8 @@ import OrderPromotionList from 'components/order-promotion-list'; | ||
13 | import Bind from 'components/bind'; | 13 | import Bind from 'components/bind'; |
14 | 14 | ||
15 | import sdk from 'yoho-activity-sdk'; | 15 | import sdk from 'yoho-activity-sdk'; |
16 | + | ||
17 | +import { initClient } from 'utils/init-client'; | ||
16 | import 'statics/scss/common.scss'; | 18 | import 'statics/scss/common.scss'; |
17 | import 'statics/font/iconfont.css'; | 19 | import 'statics/font/iconfont.css'; |
18 | import 'statics/font/ufofont.css'; | 20 | import 'statics/font/ufofont.css'; |
1 | <template> | 1 | <template> |
2 | <div class="income-filter"> | 2 | <div class="income-filter"> |
3 | - <div class="month-filter" @click="showDate">{{monthPicker}}<i class="cubeic-select"></i></div> | 3 | + <div class="month-filter" @click="showDate">{{currentYear}}年{{currentMonth}}月 <i class="cubeic-select"></i></div> |
4 | <div class="type-filter" @click="showPicker"><span class="filter-img"></span><span>{{typeFilter}}</span></div> | 4 | <div class="type-filter" @click="showPicker"><span class="filter-img"></span><span>{{typeFilter}}</span></div> |
5 | </div> | 5 | </div> |
6 | </template> | 6 | </template> |
@@ -14,7 +14,8 @@ export default { | @@ -14,7 +14,8 @@ export default { | ||
14 | name: 'income-filter', | 14 | name: 'income-filter', |
15 | data() { | 15 | data() { |
16 | return { | 16 | return { |
17 | - monthPicker: '2019年9月 ', | 17 | + currentYear: '', |
18 | + currentMonth: '', | ||
18 | typeFilter: '筛选', | 19 | typeFilter: '筛选', |
19 | } | 20 | } |
20 | }, | 21 | }, |
@@ -27,21 +28,35 @@ export default { | @@ -27,21 +28,35 @@ export default { | ||
27 | }, | 28 | }, |
28 | created() { | 29 | created() { |
29 | this.fetchWalletFilter() | 30 | this.fetchWalletFilter() |
31 | + this.setCurrentDate() | ||
30 | }, | 32 | }, |
31 | methods: { | 33 | methods: { |
32 | ...mapActions(['fetchWalletFilter','fetchWallet']), | 34 | ...mapActions(['fetchWalletFilter','fetchWallet']), |
35 | + setCurrentDate() { | ||
36 | + let year = moment().year() | ||
37 | + let month = moment().month() + 1 | ||
38 | + this.currentYear = ''+year | ||
39 | + this.currentMonth = ''+month | ||
40 | + }, | ||
41 | + | ||
33 | showDate() { | 42 | showDate() { |
43 | + // 计算picker当前选中索引值 | ||
44 | + let yearArr = this.getYearMonth[0].map((item) => item.value) | ||
45 | + let monthArr = this.getYearMonth[1].map((item) => item.value) | ||
46 | + let yearIndex = yearArr.indexOf(this.currentYear) | ||
47 | + let monthIndex = monthArr.indexOf(this.currentMonth) | ||
34 | if (!this.datePicker) { | 48 | if (!this.datePicker) { |
35 | this.datePicker = this.$createPicker({ | 49 | this.datePicker = this.$createPicker({ |
36 | data: this.getYearMonth, | 50 | data: this.getYearMonth, |
51 | + selectedIndex: [yearIndex, monthIndex], | ||
37 | onSelect: this.selectHandle | 52 | onSelect: this.selectHandle |
38 | }) | 53 | }) |
39 | } | 54 | } |
40 | this.datePicker.show() | 55 | this.datePicker.show() |
41 | }, | 56 | }, |
42 | selectHandle(selectedVal, selectedIndex, selectedText) { | 57 | selectHandle(selectedVal, selectedIndex, selectedText) { |
43 | - this.monthPicker = selectedText[0]+'年'+selectedText[1] + '月 '; | ||
44 | - | 58 | + this.currentYear = selectedText[0]; |
59 | + this.currentMonth = selectedText[1]; | ||
45 | let selected = selectedVal.join('-') | 60 | let selected = selectedVal.join('-') |
46 | let days = moment(selected, "YYYY-MM").daysInMonth(); | 61 | let days = moment(selected, "YYYY-MM").daysInMonth(); |
47 | let startDay = selected+'-01'; | 62 | let startDay = selected+'-01'; |
@@ -78,7 +93,7 @@ export default { | @@ -78,7 +93,7 @@ export default { | ||
78 | <style lang="scss" scoped> | 93 | <style lang="scss" scoped> |
79 | 94 | ||
80 | .income-filter { | 95 | .income-filter { |
81 | - background-color: #F5F7F9; | 96 | + background-color: #F0F0F0; |
82 | padding: 0 40px; | 97 | padding: 0 40px; |
83 | height: 90px; | 98 | height: 90px; |
84 | line-height: 90px; | 99 | line-height: 90px; |
@@ -48,8 +48,7 @@ export default { | @@ -48,8 +48,7 @@ export default { | ||
48 | margin: 0 40px; | 48 | margin: 0 40px; |
49 | justify-content: space-between; | 49 | justify-content: space-between; |
50 | align-items: center; | 50 | align-items: center; |
51 | - padding-top: 30px; | ||
52 | - padding-bottom: 30px; | 51 | + height: 140px; |
53 | border-bottom: solid 1px #E0E0E0; | 52 | border-bottom: solid 1px #E0E0E0; |
54 | } | 53 | } |
55 | 54 | ||
@@ -105,7 +104,7 @@ export default { | @@ -105,7 +104,7 @@ export default { | ||
105 | color: #D0021B; | 104 | color: #D0021B; |
106 | } | 105 | } |
107 | .assets-record-income-desc { | 106 | .assets-record-income-desc { |
108 | - color: #999; | 107 | + color: #444; |
109 | margin-top: 5px; | 108 | margin-top: 5px; |
110 | } | 109 | } |
111 | </style> | 110 | </style> |
1 | <template> | 1 | <template> |
2 | - <LayoutApp :show-back="true"> | 2 | + <LayoutApp :show-back="true" title="收入明细"> |
3 | <div class="body" ref="body"> | 3 | <div class="body" ref="body"> |
4 | 4 | ||
5 | <Scroll | 5 | <Scroll |
@@ -9,9 +9,12 @@ | @@ -9,9 +9,12 @@ | ||
9 | @pulling-down="onPullingDown" | 9 | @pulling-down="onPullingDown" |
10 | @pulling-up="onPullingUp"> | 10 | @pulling-up="onPullingUp"> |
11 | <incomeFilter></incomeFilter> | 11 | <incomeFilter></incomeFilter> |
12 | - <template v-for="(item,index) in walletData.list"> | ||
13 | - <incomeItem :data="item" :key="index"></incomeItem> | ||
14 | - </template> | 12 | + <div v-if="walletData.list.length > 0"> |
13 | + <template v-for="(item,index) in walletData.list"> | ||
14 | + <incomeItem :data="item" :key="index"></incomeItem> | ||
15 | + </template> | ||
16 | + </div> | ||
17 | + <UfoNoItem class="noData" :tip="`暂无明细数据`" v-else></UfoNoItem> | ||
15 | <template v-if="customPullDown" slot="pulldown" slot-scope="props"> | 18 | <template v-if="customPullDown" slot="pulldown" slot-scope="props"> |
16 | <pullDown :propsData="props" :pullDownRefreshThreshold="pullDownRefreshThreshold"></pullDown> | 19 | <pullDown :propsData="props" :pullDownRefreshThreshold="pullDownRefreshThreshold"></pullDown> |
17 | </template> | 20 | </template> |
@@ -27,8 +30,9 @@ import pullDown from './components/pullDown'; | @@ -27,8 +30,9 @@ import pullDown from './components/pullDown'; | ||
27 | import { createNamespacedHelpers } from 'vuex'; | 30 | import { createNamespacedHelpers } from 'vuex'; |
28 | import {Style, Scroll} from 'cube-ui'; | 31 | import {Style, Scroll} from 'cube-ui'; |
29 | import scrollMixin from '../../../mixins/scroll'; | 32 | import scrollMixin from '../../../mixins/scroll'; |
30 | - | 33 | +import UfoNoItem from '../../../components/ufo-no-item' |
31 | const {mapState, mapActions} = createNamespacedHelpers('home/mine'); | 34 | const {mapState, mapActions} = createNamespacedHelpers('home/mine'); |
35 | +import moment from 'moment'; | ||
32 | export default { | 36 | export default { |
33 | mixins: [scrollMixin], | 37 | mixins: [scrollMixin], |
34 | data() { | 38 | data() { |
@@ -47,8 +51,20 @@ export default { | @@ -47,8 +51,20 @@ export default { | ||
47 | }), | 51 | }), |
48 | 52 | ||
49 | }, | 53 | }, |
54 | + watch: { | ||
55 | + "walletData.list": function(val) { | ||
56 | + if(val.length === 0) { | ||
57 | + this.$refs.scroll.disable() | ||
58 | + } else { | ||
59 | + this.$refs.scroll.enable() | ||
60 | + } | ||
61 | + } | ||
62 | + }, | ||
50 | created() { | 63 | created() { |
51 | - this.fetchWallet({isRefresh:true}) | 64 | + let startDay = moment().format('YYYY-MM') + '-01'; |
65 | + let startTime = moment(startDay).startOf('d').unix(); | ||
66 | + let endTime = moment(Date.now()).unix(); | ||
67 | + this.fetchWallet({isRefresh:true, startTime, endTime}) | ||
52 | }, | 68 | }, |
53 | methods: { | 69 | methods: { |
54 | ...mapActions(['fetchWallet']), | 70 | ...mapActions(['fetchWallet']), |
@@ -68,7 +84,8 @@ export default { | @@ -68,7 +84,8 @@ export default { | ||
68 | incomeFilter, | 84 | incomeFilter, |
69 | pullDown, | 85 | pullDown, |
70 | Style, | 86 | Style, |
71 | - Scroll | 87 | + Scroll, |
88 | + UfoNoItem | ||
72 | } | 89 | } |
73 | }; | 90 | }; |
74 | </script> | 91 | </script> |
@@ -80,4 +97,7 @@ export default { | @@ -80,4 +97,7 @@ export default { | ||
80 | background-color: white; | 97 | background-color: white; |
81 | color: #999; | 98 | color: #999; |
82 | } | 99 | } |
100 | +.noData { | ||
101 | + margin: 90px 0; | ||
102 | +} | ||
83 | </style> | 103 | </style> |
1 | <template> | 1 | <template> |
2 | - <LayoutApp :show-back="true"> | 2 | + <LayoutApp :show-back="true" title="我的"> |
3 | <div class="body" ref="body"> | 3 | <div class="body" ref="body"> |
4 | <div v-for="(value, key) in getMineList" :key="key"> | 4 | <div v-for="(value, key) in getMineList" :key="key"> |
5 | <tab-item v-if="key === 'board'" :data="value" noLine icon="cubeic-notification" small grey> | 5 | <tab-item v-if="key === 'board'" :data="value" noLine icon="cubeic-notification" small grey> |
@@ -60,27 +60,34 @@ export default { | @@ -60,27 +60,34 @@ export default { | ||
60 | type: 6 | 60 | type: 6 |
61 | }; | 61 | }; |
62 | }, | 62 | }, |
63 | - | 63 | + deactivated: function() { |
64 | + this.initData(); | ||
65 | + }, | ||
64 | activated: function() { | 66 | activated: function() { |
65 | this.changeArrow(); | 67 | this.changeArrow(); |
66 | let params = this.$route.query; | 68 | let params = this.$route.query; |
67 | 69 | ||
68 | if (Object.keys(params).length && params.listType) { | 70 | if (Object.keys(params).length && params.listType) { |
69 | this.listType = params.listType; | 71 | this.listType = params.listType; |
72 | + delete params.listType; | ||
70 | } | 73 | } |
71 | if (Object.keys(params).length && params.type) { | 74 | if (Object.keys(params).length && params.type) { |
72 | this.type = params.type; | 75 | this.type = params.type; |
76 | + } else { | ||
77 | + params.type = 6; | ||
73 | } | 78 | } |
79 | + !params.order && (params.order = 'sale_desc'); | ||
80 | + params.listPage = true | ||
74 | this.fetchProductList({...params, isReset: true}); | 81 | this.fetchProductList({...params, isReset: true}); |
75 | this.fetchFilterData(params); | 82 | this.fetchFilterData(params); |
76 | 83 | ||
77 | }, | 84 | }, |
78 | methods: { | 85 | methods: { |
79 | - ...mapActions(['fetchProductList', 'fetchFilterData']), | 86 | + ...mapActions(['fetchProductList', 'fetchFilterData', 'initData']), |
80 | 87 | ||
81 | // 上拉加载 | 88 | // 上拉加载 |
82 | async onPullingUp() { | 89 | async onPullingUp() { |
83 | - await this.fetchProductList({listType: this.listType}); | 90 | + await this.fetchProductList(); |
84 | }, | 91 | }, |
85 | 92 | ||
86 | // 点击tab type, 0: 推荐, 1: 价格, 2: 人气, 3: 新品 | 93 | // 点击tab type, 0: 推荐, 1: 价格, 2: 人气, 3: 新品 |
@@ -11,7 +11,7 @@ const ALIPAY_DOMAIN = 'https://openapi.alipay.com/gateway.do'; | @@ -11,7 +11,7 @@ const ALIPAY_DOMAIN = 'https://openapi.alipay.com/gateway.do'; | ||
11 | 11 | ||
12 | export default { | 12 | export default { |
13 | name: 'PayPage', | 13 | name: 'PayPage', |
14 | - props: ['orderCode', 'payParams', 'type'], | 14 | + props: ['orderCode', 'payParams', 'extra'], |
15 | mounted() { | 15 | mounted() { |
16 | if (this.payParams) { | 16 | if (this.payParams) { |
17 | const url = ALIPAY_DOMAIN + '?' + this.payParams; | 17 | const url = ALIPAY_DOMAIN + '?' + this.payParams; |
@@ -17,10 +17,12 @@ | @@ -17,10 +17,12 @@ | ||
17 | <size-list class="select-content size-list" :list="list" :addSize="canAddSize" :selected="selectedSize" | 17 | <size-list class="select-content size-list" :list="list" :addSize="canAddSize" :selected="selectedSize" |
18 | @select="onSelectSize" | 18 | @select="onSelectSize" |
19 | @add="onAdd" /> | 19 | @add="onAdd" /> |
20 | - <div class="footer"> | ||
21 | - <cube-button v-if="config.type === 'sell'" @click="convertToCash" :class="{active: isMarketable}">变现<span> <i>¥</i>{{cashPrice}}</span></cube-button> | ||
22 | - <cube-button @click="select" :class="{active: isTradable }">{{config.title}}</cube-button> | ||
23 | - </div> | 20 | + <transition name="slide-up"> |
21 | + <div class="footer" v-if="isTradable"> | ||
22 | + <cube-button v-if="config.type === 'sell'" @click="convertToCash" :class="{active: isMarketable}">变现<span> <i>¥</i>{{cashPrice}}</span></cube-button> | ||
23 | + <cube-button @click="select" class="active">{{config.title}}</cube-button> | ||
24 | + </div> | ||
25 | + </transition> | ||
24 | </div> | 26 | </div> |
25 | </div> | 27 | </div> |
26 | </action-sheet> | 28 | </action-sheet> |
@@ -275,6 +277,7 @@ export default { | @@ -275,6 +277,7 @@ export default { | ||
275 | justify-content: space-between; | 277 | justify-content: space-between; |
276 | 278 | ||
277 | @include cube-ufo-btn; | 279 | @include cube-ufo-btn; |
280 | + | ||
278 | span { | 281 | span { |
279 | font-size: 28px; | 282 | font-size: 28px; |
280 | 283 | ||
@@ -284,4 +287,14 @@ export default { | @@ -284,4 +287,14 @@ export default { | ||
284 | } | 287 | } |
285 | } | 288 | } |
286 | } | 289 | } |
290 | + .slide-up-enter, | ||
291 | + .slide-up-leave-to { | ||
292 | + transform: translateY(60%); | ||
293 | + opacity: 0; | ||
294 | + } | ||
295 | + | ||
296 | + .slide-up-enter-active, | ||
297 | + .slide-up-leave-active { | ||
298 | + transition: all 0.3s ease-in; | ||
299 | + } | ||
287 | </style> | 300 | </style> |
@@ -165,7 +165,7 @@ export default function() { | @@ -165,7 +165,7 @@ export default function() { | ||
165 | for (let i = 0; i <= monthNum; i++) { | 165 | for (let i = 0; i <= monthNum; i++) { |
166 | let month = Number(beginMonth) + i; | 166 | let month = Number(beginMonth) + i; |
167 | 167 | ||
168 | - month = month < 10 ? '0' + month : month; | 168 | + month = month < 10 ? '0' + month : '' + month; |
169 | monthsData.push({ text: month, value: month }); | 169 | monthsData.push({ text: month, value: month }); |
170 | } | 170 | } |
171 | 171 | ||
@@ -405,10 +405,8 @@ export default function() { | @@ -405,10 +405,8 @@ export default function() { | ||
405 | { commit, state }, | 405 | { commit, state }, |
406 | { isRefresh, tradeType = 0, startTime = 0, endTime = 0 }, | 406 | { isRefresh, tradeType = 0, startTime = 0, endTime = 0 }, |
407 | ) { | 407 | ) { |
408 | - if (isRefresh) { | ||
409 | - commit('changeWalletType', tradeType); | ||
410 | - commit('changeWalletTime', { startTime, endTime }); | ||
411 | - } | 408 | + commit('changeWalletType', tradeType); |
409 | + (startTime && endTime) && commit('changeWalletTime', { startTime, endTime }); | ||
412 | let { | 410 | let { |
413 | isFetching, | 411 | isFetching, |
414 | endReached, | 412 | endReached, |
@@ -425,7 +423,6 @@ export default function() { | @@ -425,7 +423,6 @@ export default function() { | ||
425 | } | 423 | } |
426 | let oldList = isRefresh ? [] : list; | 424 | let oldList = isRefresh ? [] : list; |
427 | 425 | ||
428 | - // commit('assetFetching', {isFetching: true}); | ||
429 | let page = isRefresh ? 1 : currentPage + 1; | 426 | let page = isRefresh ? 1 : currentPage + 1; |
430 | const result = await this.$api.get('/api/ufo/mine/wallet', { | 427 | const result = await this.$api.get('/api/ufo/mine/wallet', { |
431 | page, | 428 | page, |
@@ -436,7 +433,6 @@ export default function() { | @@ -436,7 +433,6 @@ export default function() { | ||
436 | endTime, | 433 | endTime, |
437 | }); | 434 | }); |
438 | 435 | ||
439 | - // commit('assetFetching', {isFetching: false}); | ||
440 | if (result.code === 200) { | 436 | if (result.code === 200) { |
441 | let data = result.data; | 437 | let data = result.data; |
442 | 438 |
1 | -import {get} from 'lodash'; | ||
2 | - | ||
3 | export default function() { | 1 | export default function() { |
4 | return { | 2 | return { |
5 | namespaced: true, | 3 | namespaced: true, |
@@ -18,7 +16,7 @@ export default function() { | @@ -18,7 +16,7 @@ export default function() { | ||
18 | }, | 16 | }, |
19 | searchParams: { | 17 | searchParams: { |
20 | type: 0, // type:0,推荐;1,热销;2,即将发售; 3,品类; 4,品牌;5,系列;6,搜索 7, 收藏 | 18 | type: 0, // type:0,推荐;1,热销;2,即将发售; 3,品类; 4,品牌;5,系列;6,搜索 7, 收藏 |
21 | - order: 'sale_desc', // 指定排序 | 19 | + order: '', // 指定排序 |
22 | productPool: null, // 商品池id | 20 | productPool: null, // 商品池id |
23 | sort: null, // 品类id | 21 | sort: null, // 品类id |
24 | brand: null, // 品牌id | 22 | brand: null, // 品牌id |
@@ -59,7 +57,8 @@ export default function() { | @@ -59,7 +57,8 @@ export default function() { | ||
59 | } | 57 | } |
60 | }, | 58 | }, |
61 | setSearchParams(state, {params}) { | 59 | setSearchParams(state, {params}) { |
62 | - state.searchParams = Object.assign(state.searchParams, params); | 60 | + console.log(params) |
61 | + state.searchParams = params || {}; | ||
63 | }, | 62 | }, |
64 | addFilterData(state, {filter}) { | 63 | addFilterData(state, {filter}) { |
65 | state.filterData = filter; | 64 | state.filterData = filter; |
@@ -87,23 +86,74 @@ export default function() { | @@ -87,23 +86,74 @@ export default function() { | ||
87 | }, | 86 | }, |
88 | setDefaultSearchWords(state, {defaultSearchWord}) { | 87 | setDefaultSearchWords(state, {defaultSearchWord}) { |
89 | state.defaultSearchWord = defaultSearchWord; | 88 | state.defaultSearchWord = defaultSearchWord; |
89 | + }, | ||
90 | + initData(state) { | ||
91 | + state = { | ||
92 | + productList: { | ||
93 | + showErrorPage: false, | ||
94 | + isFetching: false, | ||
95 | + error: null, | ||
96 | + page: 0, // 当前页 | ||
97 | + page_size: 10, // 每页数量 | ||
98 | + page_total: 0, // 总共多少页 | ||
99 | + total: 0, // 总共多少条 | ||
100 | + endReached: false, // 到达底部 | ||
101 | + list: [], // 商品列表 | ||
102 | + isEmpty: false, | ||
103 | + }, | ||
104 | + searchParams: { | ||
105 | + type: 0, // type:0,推荐;1,热销;2,即将发售; 3,品类; 4,品牌;5,系列;6,搜索 7, 收藏 | ||
106 | + order: '', // 指定排序 | ||
107 | + productPool: null, // 商品池id | ||
108 | + sort: null, // 品类id | ||
109 | + brand: null, // 品牌id | ||
110 | + series: null, // 系列id | ||
111 | + gender: null, // 性别 | ||
112 | + size: null, // 尺码id | ||
113 | + isSoonSale: null, // 是否是即将售卖 | ||
114 | + query: null, // 搜索词 | ||
115 | + limit: null, // 每页记录数 | ||
116 | + page: null, // 当前页号 | ||
117 | + coupon_token: null, // 优惠券token | ||
118 | + }, | ||
119 | + filterParams: { | ||
120 | + sort: [], // 品类id | ||
121 | + brand: [], // 品牌id | ||
122 | + gender: [], // 性别 | ||
123 | + size: [], // 尺码id | ||
124 | + }, | ||
125 | + filterData: [], | ||
126 | + filterVisible: false, | ||
127 | + searchWord: [], | ||
128 | + defaultSearchWord: [], | ||
129 | + searchSuggestList: [], | ||
130 | + }; | ||
90 | } | 131 | } |
91 | }, | 132 | }, |
92 | actions: { | 133 | actions: { |
134 | + //查询商品列表 | ||
93 | fetchProductList: async function({commit, state}, params) { | 135 | fetchProductList: async function({commit, state}, params) { |
94 | let searchParams = state.searchParams; | 136 | let searchParams = state.searchParams; |
95 | let list = state.productList; | 137 | let list = state.productList; |
96 | let pageSize = list.page_size; | 138 | let pageSize = list.page_size; |
97 | - let isReset = false; | 139 | + let isReset = false, isHome = false; |
98 | 140 | ||
99 | if (params && params.isReset) { | 141 | if (params && params.isReset) { |
100 | isReset = true; | 142 | isReset = true; |
101 | delete params.isReset; | 143 | delete params.isReset; |
102 | } | 144 | } |
103 | - if (params && Object.keys(params).length) { | ||
104 | - searchParams = Object.assign({...searchParams}, params); | 145 | + |
146 | + if (params && params.isHome) { | ||
147 | + isHome = true; | ||
148 | + delete params.isHome; | ||
149 | + } | ||
150 | + | ||
151 | + if (!isHome && params && Object.keys(params).length) { | ||
152 | + searchParams = Object.assign({...searchParams}, params) | ||
105 | commit('setSearchParams', {params: searchParams}); | 153 | commit('setSearchParams', {params: searchParams}); |
106 | } | 154 | } |
155 | + | ||
156 | + isHome && (searchParams = params || {}); | ||
107 | if (!isReset && (list.endReached || (!list.endReached && list.page_total === 1))) { | 157 | if (!isReset && (list.endReached || (!list.endReached && list.page_total === 1))) { |
108 | return; | 158 | return; |
109 | } | 159 | } |
@@ -129,6 +179,8 @@ export default function() { | @@ -129,6 +179,8 @@ export default function() { | ||
129 | 179 | ||
130 | return result.data ? result.data.length : 0; | 180 | return result.data ? result.data.length : 0; |
131 | }, | 181 | }, |
182 | + | ||
183 | + //查询筛选列表 | ||
132 | fetchFilterData: async function({commit, state}) { | 184 | fetchFilterData: async function({commit, state}) { |
133 | let searchParams = state.searchParams; | 185 | let searchParams = state.searchParams; |
134 | 186 | ||
@@ -140,28 +192,42 @@ export default function() { | @@ -140,28 +192,42 @@ export default function() { | ||
140 | commit('addFilterData', {filter: data.filter}); | 192 | commit('addFilterData', {filter: data.filter}); |
141 | } | 193 | } |
142 | }, | 194 | }, |
195 | + | ||
196 | + // 设置筛选参数 | ||
143 | setFilterParam: function({commit}, params) { | 197 | setFilterParam: function({commit}, params) { |
144 | commit('setFilterParam', {filter: params}); | 198 | commit('setFilterParam', {filter: params}); |
145 | }, | 199 | }, |
200 | + | ||
201 | + // 设置查询参数 | ||
146 | setSearchQuery: function({commit}, query) { | 202 | setSearchQuery: function({commit}, query) { |
147 | commit('setSearchQuery', {query}); | 203 | commit('setSearchQuery', {query}); |
148 | 204 | ||
149 | }, | 205 | }, |
206 | + | ||
207 | + // 请求查询关键词 | ||
150 | fetchSearchWords: async function({commit}) { | 208 | fetchSearchWords: async function({commit}) { |
151 | let result = await this.$api.get('/api/ufo/list/searchWords', { word_type: 0}); | 209 | let result = await this.$api.get('/api/ufo/list/searchWords', { word_type: 0}); |
152 | 210 | ||
153 | commit('setSearchWords', {searchWord: result.data}); | 211 | commit('setSearchWords', {searchWord: result.data}); |
154 | }, | 212 | }, |
213 | + | ||
214 | + // 请求默认查询关键词 | ||
155 | fetchDefaultSearchWords: async function({commit}) { | 215 | fetchDefaultSearchWords: async function({commit}) { |
156 | let result = await this.$api.get('/api/ufo/list/searchWords', { word_type: 1}); | 216 | let result = await this.$api.get('/api/ufo/list/searchWords', { word_type: 1}); |
157 | 217 | ||
158 | commit('setDefaultSearchWords', {defaultSearchWord: result.data}); | 218 | commit('setDefaultSearchWords', {defaultSearchWord: result.data}); |
159 | }, | 219 | }, |
220 | + | ||
221 | + // 联动查询输入关键词 | ||
160 | fetchSearchSuggest: async function({commit}, query) { | 222 | fetchSearchSuggest: async function({commit}, query) { |
161 | let result = await this.$api.get('/api/ufo/list/searchSuggest', {query}); | 223 | let result = await this.$api.get('/api/ufo/list/searchSuggest', {query}); |
162 | 224 | ||
163 | commit('setSearchSuggest', {searchSuggestList: result.data}); | 225 | commit('setSearchSuggest', {searchSuggestList: result.data}); |
164 | 226 | ||
227 | + }, | ||
228 | + | ||
229 | + initData: function({commit}) { | ||
230 | + commit('initData'); | ||
165 | } | 231 | } |
166 | } | 232 | } |
167 | }; | 233 | }; |
apps/utils/init-client.js
0 → 100644
1 | +import Vue from 'vue'; | ||
2 | + | ||
3 | +const setWindowSize = (store) => { | ||
4 | + const { clientWidth, clientHeight } = document.body; | ||
5 | + | ||
6 | + store.commit('SET_WINDOW_SIZE', { clientWidth, clientHeight }); | ||
7 | +}; | ||
8 | + | ||
9 | +const initClient = (store) => { | ||
10 | + setWindowSize(store); | ||
11 | + window.onresize = () => { | ||
12 | + setWindowSize(store); | ||
13 | + }; | ||
14 | + | ||
15 | + let supportsPassive = false; | ||
16 | + | ||
17 | + try { | ||
18 | + const opts = Object.defineProperty({}, 'passive', { | ||
19 | + get() { | ||
20 | + supportsPassive = true; | ||
21 | + return true; | ||
22 | + } | ||
23 | + }); | ||
24 | + | ||
25 | + window.addEventListener('test', null, opts); | ||
26 | + } catch (e) { } //eslint-disable-line | ||
27 | + store.commit('SET_SUPPORT_PASSIVE', { supportsPassive }); | ||
28 | + | ||
29 | + let img = new Image(); | ||
30 | + | ||
31 | + img.onload = () => { | ||
32 | + if (img.width > 0 && img.height > 0) { | ||
33 | + store.commit('SET_SUPPORT_WEBP', { supportWebp: true }); | ||
34 | + } | ||
35 | + }; | ||
36 | + img.src = 'data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA'; | ||
37 | + | ||
38 | + Vue.$sdk.getUser().then(user => { | ||
39 | + if (user && user.uid) { | ||
40 | + store.commit('SET_LOGIN_INFO', user); | ||
41 | + } | ||
42 | + }); | ||
43 | +}; | ||
44 | + | ||
45 | +export { | ||
46 | + initClient | ||
47 | +}; |
@@ -12,10 +12,10 @@ module.exports = { | @@ -12,10 +12,10 @@ module.exports = { | ||
12 | // 查询是否收藏 | 12 | // 查询是否收藏 |
13 | '/api/ufo/product/fav': { | 13 | '/api/ufo/product/fav': { |
14 | ufo: true, | 14 | ufo: true, |
15 | - auth: false, | 15 | + auth: true, |
16 | api: 'ufo.user.isFavorite', | 16 | api: 'ufo.user.isFavorite', |
17 | params: { | 17 | params: { |
18 | - product_id: {type: Number}, // 商品id | 18 | + productId: {type: Number}, // 商品id |
19 | }, | 19 | }, |
20 | }, | 20 | }, |
21 | 21 |
-
Please register or login to post a comment