Authored by lea guo

物流信息

@@ -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 <incomeHeader></incomeHeader> 4 <incomeHeader></incomeHeader>
5 </div> 5 </div>
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 };
  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