Authored by yyq

Merge branch 'develop' of git.yoho.cn:fe/xianyu-ufo-app-web into develop

@@ -8,7 +8,15 @@ @@ -8,7 +8,15 @@
8 export default { 8 export default {
9 name: 'LayoutLink', 9 name: 'LayoutLink',
10 props: { 10 props: {
11 - href: String 11 + href: String,
  12 + report: {
  13 + type: Object,
  14 + }
  15 + },
  16 + watch: {
  17 + 'report': function(newVal) {
  18 + console.log(newVal);
  19 + }
12 }, 20 },
13 methods: { 21 methods: {
14 jumpTo() { 22 jumpTo() {
@@ -17,7 +17,7 @@ @@ -17,7 +17,7 @@
17 <input class="search-input" type="search" disabled="true" placeholder="搜索商品名称或货号"/> 17 <input class="search-input" type="search" disabled="true" placeholder="搜索商品名称或货号"/>
18 </div> 18 </div>
19 <template v-for="(item, index) in channelList.list"> 19 <template v-for="(item, index) in channelList.list">
20 - <Swiper @click="getParams" :list="item.data" :key="index" v-if="item.template_name == 'threePicture'"/> 20 + <Swiper :list="item" :index="index" :key="index" v-if="item.template_name == 'threePicture'"/>
21 <Hot :list="item.data" :key="index" v-if="item.template_name == 'image_list'"/> 21 <Hot :list="item.data" :key="index" v-if="item.template_name == 'image_list'"/>
22 <Banner :list="item.data" :key="index" v-if="item.template_name == 'single_image'"/> 22 <Banner :list="item.data" :key="index" v-if="item.template_name == 'single_image'"/>
23 <TwoBanner :list="item.data" :key="index" v-if="item.template_name == 'twoPicture'"/> 23 <TwoBanner :list="item.data" :key="index" v-if="item.template_name == 'twoPicture'"/>
@@ -56,6 +56,7 @@ export default { @@ -56,6 +56,7 @@ export default {
56 props: ['hideHeader'], 56 props: ['hideHeader'],
57 data() { 57 data() {
58 return { 58 return {
  59 + reportParams: {},
59 options: { 60 options: {
60 pullUpLoad: true, 61 pullUpLoad: true,
61 // pullDownRefresh: true, 62 // pullDownRefresh: true,
@@ -73,7 +74,6 @@ export default { @@ -73,7 +74,6 @@ export default {
73 listBaseParams: { 74 listBaseParams: {
74 isHome: true, 75 isHome: true,
75 }, 76 },
76 -  
77 productList: { 77 productList: {
78 showErrorPage: false, 78 showErrorPage: false,
79 isFetching: false, 79 isFetching: false,
@@ -118,13 +118,11 @@ export default { @@ -118,13 +118,11 @@ export default {
118 if (!this.channelList.list || !this.channelList.list.length) { 118 if (!this.channelList.list || !this.channelList.list.length) {
119 this.fetchChannelList(); 119 this.fetchChannelList();
120 } 120 }
  121 + this.init();
121 }, 122 },
122 async serverPrefetch() { 123 async serverPrefetch() {
123 return this.fetchChannelList(); 124 return this.fetchChannelList();
124 }, 125 },
125 - mounted() {  
126 - this.init();  
127 - },  
128 methods: { 126 methods: {
129 ...mapActions(['fetchChannelList']), 127 ...mapActions(['fetchChannelList']),
130 ...mapActionsList(['fetchProductList']), 128 ...mapActionsList(['fetchProductList']),
@@ -225,9 +223,26 @@ export default { @@ -225,9 +223,26 @@ export default {
225 }); 223 });
226 }, 224 },
227 225
228 - getParams() {  
229 - console.log("2222"); 226 + getParams(params) {
  227 + this.reportParams = params;
  228 + console.log(this.reportParams);
230 } 229 }
  230 +
  231 + // getReportParams(item, index) {
  232 + // let { template_id, template_name } = item;
  233 + // let PAGE_URL = window.location.href;
  234 +
  235 + // this.searchParams = {
  236 + // F_ID: template_id,
  237 + // PAGE_URL,
  238 + // F_INDEX: index + 1,
  239 + // F_NAME: template_name,
  240 + // I_INDEX: '',
  241 + // F_URL: '',
  242 + // }
  243 + // console.log(item);
  244 + // console.log(this.searchParams);
  245 + // }
231 // onPullingDown() { 246 // onPullingDown() {
232 // let params = this.searchParams; 247 // let params = this.searchParams;
233 248
1 <template> 1 <template>
2 - <div v-if="list.length" class="swiper"> 2 + <div class="swiper" v-if="list.data && list.data.length > 0">
3 <div class="swiper-item swiper-item-left"> 3 <div class="swiper-item swiper-item-left">
4 - <LayoutLink :href="list[0].url" :report="reportParams" class="img-link">  
5 - <ImageFormat :lazy="false" class="item-imge" :src="list[0].src" :width="310" :height="402"></ImageFormat> 4 + <LayoutLink :href="list.data[0].url" class="img-link" :report="{...params, I_INDEX: 1, F_URL: list.data[0].url}">
  5 + <ImageFormat :lazy="false" class="item-imge" :src="list.data[0].src" :width="310" :height="402"></ImageFormat>
6 </LayoutLink> 6 </LayoutLink>
7 </div> 7 </div>
8 <div class="swiper-item swiper-item-right"> 8 <div class="swiper-item swiper-item-right">
9 - <LayoutLink :href="list[1].url" class="img-link">  
10 - <ImageFormat :lazy="false" class="item-imge" :src="list[1].src" :width="380" :height="196"></ImageFormat> 9 + <LayoutLink :href="list.data[1].url" class="img-link" :report="{...params, I_INDEX: 2, F_URL: list.data[1].url}">
  10 + <ImageFormat :lazy="false" class="item-imge" :src="list.data[1].src" :width="380" :height="196"></ImageFormat>
11 </LayoutLink> 11 </LayoutLink>
12 - <LayoutLink :href="list[2].url" class="img-link">  
13 - <ImageFormat :lazy="false" class="item-imge" :src="list[2].src" :width="380" :height="196"></ImageFormat> 12 + <LayoutLink :href="list.data[2].url" class="img-link" :report="{...params, I_INDEX: 3, F_URL: list.data[2].url}">
  13 + <ImageFormat :lazy="false" class="item-imge" :src="list.data[2].src" :width="380" :height="196"></ImageFormat>
14 </LayoutLink> 14 </LayoutLink>
15 </div> 15 </div>
16 </div> 16 </div>
@@ -21,24 +21,37 @@ export default { @@ -21,24 +21,37 @@ export default {
21 name: 'swiper', 21 name: 'swiper',
22 props: { 22 props: {
23 list: { 23 list: {
24 - type: Array,  
25 - default: [] 24 + type: Object,
26 }, 25 },
  26 + index: {
  27 + type: Number,
  28 + }
27 }, 29 },
28 data() { 30 data() {
29 return { 31 return {
30 - reportParams: {  
31 - P_NAME: 'XY_UFOHome',  
32 - P_PARAM: 'f788335b57b67c1711f255648c744dab',  
33 - PAGE_URL: '当前页面URL',  
34 - F_ID: '楼层唯一id',  
35 - F_NAME: '楼层名称',  
36 - F_INDEX: '楼层顺序号',  
37 - I_INDEX: '楼层内部顺序号,从1开始,所有more按钮传0',  
38 - ACTION_URL: '跳转URL',  
39 - }, 32 + params: {},
40 } 33 }
41 - } 34 + },
  35 + mounted() {
  36 + console.log(this.list)
  37 + },
  38 + activated() {
  39 + let { template_id, template_name } = this.list;
  40 + let PAGE_URL = window.location.href;
  41 + let F_INDEX = this.index + 1;
  42 + let params = {
  43 + P_NAME: 'XY_UFOHome',
  44 + P_PARAM: 'cfcd8de156d3edc26c84091804c43e23',
  45 + F_ID: template_id,
  46 + PAGE_URL,
  47 + F_INDEX,
  48 + F_NAME: template_name,
  49 + }
  50 + this.params = params;
  51 + },
  52 + methods: {
  53 +
  54 + },
42 }; 55 };
43 </script> 56 </script>
44 57
1 <template> 1 <template>
2 - <LayoutApp> 2 + <LayoutApp title="我的优惠券">
3 <div class="tab"> 3 <div class="tab">
4 <div class="item right-line" :class="type ==='unused' ? 'item-selected' : 'item-default'" 4 <div class="item right-line" :class="type ==='unused' ? 'item-selected' : 'item-default'"
5 @click="onChangeList('unused')">未使用{{unused.total && '('+ unused.total + ')' || null}} 5 @click="onChangeList('unused')">未使用{{unused.total && '('+ unused.total + ')' || null}}
@@ -84,7 +84,8 @@ export default { @@ -84,7 +84,8 @@ export default {
84 bounce: { 84 bounce: {
85 top: false 85 top: false
86 }, 86 },
87 - pullUpLoad: true 87 + pullUpLoad: true,
  88 + pullDownRefresh: false
88 }, 89 },
89 type: 'unused', 90 type: 'unused',
90 list: [], 91 list: [],
1 <template> 1 <template>
2 <div class="bg"> 2 <div class="bg">
3 - <div class="item" v-if="list.length" v-for="(product,index) in list" @click="goDetail(product)" 3 + <div class="product-list-item" v-if="list.length" v-for="(product,index) in list" @click="goDetail(product, index)"
4 :key="index" :class="(index) % 2 === 0 && 'magrin-right'"> 4 :key="index" :class="(index) % 2 === 0 && 'magrin-right'">
5 <div class="item-top"> 5 <div class="item-top">
6 <div class="item-price"> 6 <div class="item-price">
@@ -21,15 +21,87 @@ import ImgSize from '../../../components/img-size'; @@ -21,15 +21,87 @@ import ImgSize from '../../../components/img-size';
21 export default { 21 export default {
22 props: { 22 props: {
23 list: Array, 23 list: Array,
  24 + param: Object,
  25 + },
  26 + data: function() {
  27 + return {
  28 + yasFirstId: 0,
  29 + };
24 }, 30 },
25 methods: { 31 methods: {
26 - goDetail(product) { 32 + goDetail(product, index) {
  33 + this.yasDetail(product.id,index);
27 this.$router.push({ 34 this.$router.push({
28 name: 'ProductDetail', 35 name: 'ProductDetail',
29 params: { 36 params: {
30 productId: product.id, 37 productId: product.id,
31 } 38 }
32 }); 39 });
  40 + },
  41 + yasShowEvent(height) {
  42 + // 获取列表单个元素高度
  43 + let index = 0;
  44 +
  45 + if (height) {
  46 + // 获取第一个曝光元素
  47 + let item = document.querySelector('.product-list-item');
  48 + let itemHeight = item.offsetHeight;
  49 + let row = parseInt((height - 12) / itemHeight) + 1;
  50 +
  51 + index = row * 2 - 2;
  52 + }
  53 +
  54 + // 获取曝光列表
  55 + let list = [];
  56 +
  57 + for (let i = 0; i < 6; i++) {
  58 + if (this.list[i + index]) {
  59 + list.push(this.list[i + index]);
  60 + }
  61 + }
  62 +
  63 + // 判断是否是重复曝光
  64 + if (list.length && list[0].id !== this.yasFirstId) {
  65 + this.yasFirstId = list[0].id;
  66 +
  67 + // 1.P_NAME:页面名称,XY_UFOSearchList,XY_UFOSeriesList,XY_UFOBrandList、XY_UFOProductPoolList等;
  68 + // 2.TYPE_ID:列表页入口类型,1-搜索结果页,2-系列,3-品牌,4-商品池;
  69 + // 3.P_PARAM:页面参数,搜索关键词,系列ID,品牌ID,商品池ID;
  70 + // 4.TAB_ID:tab切id,1-人气,2-价格,3-新品;
  71 + // 5.TAB_NAME:tab切名称,人气,价格,新品;
  72 + // 6.I_INDEX:曝光顺序;
  73 + // 7.PRD_ID:商品id;
  74 + let DATA = [];
  75 +
  76 + list.map((value, i) => {
  77 + DATA.push({...this.param, I_INDEX: i + index, PRD_ID: value.id});
  78 + });
  79 + console.log(DATA)
  80 + this.$store.dispatch('reportYas', {
  81 + params: {
  82 + param: {DATA},
  83 + appop: 'XY_UFO_SHOW_EVENT'
  84 + }
  85 + });
  86 + }
  87 + },
  88 +
  89 + yasDetail(id, index) {
  90 + // XY_UFO_PRD_LIST_C
  91 + // 1.P_NAME:页面名称,XY_UFOSearchList,XY_UFOSeriesList,XY_UFOBrandList、XY_UFOProductPoolList等;
  92 + // 2.TYPE_ID:列表页入口类型,1-搜索结果页,2-系列,3-品牌,4-商品池;
  93 + // 3.P_PARAM:页面参数,搜索关键词,系列ID,品牌ID,商品池ID;
  94 + // 4.TAB_ID:tab切id,1-人气,2-价格,3-新品;
  95 + // 5.TAB_NAME:tab切名称,人气,价格,新品;
  96 + // 6.I_INDEX:商品顺序号,从1开始递增;
  97 + // 7.PRD_ID:商品id
  98 + console.log({...this.param, I_INDEX: index, PRD_ID: id })
  99 + this.$store.dispatch('reportYas', {
  100 + params: {
  101 + param: {...this.param, I_INDEX: index, PRD_ID: id },
  102 + appop: 'XY_UFO_SHOW_EVENT'
  103 + }
  104 + });
33 } 105 }
34 }, 106 },
35 components: { 107 components: {
@@ -44,7 +116,7 @@ export default { @@ -44,7 +116,7 @@ export default {
44 margin-right: 14px; 116 margin-right: 14px;
45 } 117 }
46 118
47 - .item { 119 + .product-list-item {
48 border-radius: 16px; 120 border-radius: 16px;
49 width: 344px; 121 width: 344px;
50 padding: 24px; 122 padding: 24px;
@@ -169,7 +169,6 @@ export default { @@ -169,7 +169,6 @@ export default {
169 for (let key in filter) { 169 for (let key in filter) {
170 filterParams[key] = filter[key]; 170 filterParams[key] = filter[key];
171 } 171 }
172 - console.log(filterParams);  
173 this.filterParams = filterParams; 172 this.filterParams = filterParams;
174 } 173 }
175 }, 174 },
@@ -19,12 +19,14 @@ @@ -19,12 +19,14 @@
19 </div> 19 </div>
20 </div> 20 </div>
21 <Scroll ref="scroll" class="product-list" v-show="!productList.isEmpty" 21 <Scroll ref="scroll" class="product-list" v-show="!productList.isEmpty"
  22 + :scroll-events="['scroll-end']"
22 :options="scrollOptions" 23 :options="scrollOptions"
23 :data="productList.list" 24 :data="productList.list"
  25 + @scroll-end="scrollHandler"
24 @pulling-up="onPullingUp"> 26 @pulling-up="onPullingUp">
25 - <ProductList :list="productList.list"></ProductList> 27 + <ProductList ref="product" :list="productList.list" :param="yasParams"></ProductList>
26 </Scroll> 28 </Scroll>
27 - <EmptyList class="empty-wrapper product-list" :tip="`暂无数据`" v-show="productList.isEmpty" > 29 + <EmptyList class="empty-wrapper product-list" :tip="`暂无数据`" v-show="productList.isEmpty">
28 </EmptyList> 30 </EmptyList>
29 </LayoutApp> 31 </LayoutApp>
30 <Filtrate ref="filtrate"></Filtrate> 32 <Filtrate ref="filtrate"></Filtrate>
@@ -48,19 +50,21 @@ export default { @@ -48,19 +50,21 @@ export default {
48 Filtrate, 50 Filtrate,
49 EmptyList 51 EmptyList
50 }, 52 },
51 - data() { 53 + data: function () {
52 return { 54 return {
53 scrollOptions: { 55 scrollOptions: {
54 bounce: { 56 bounce: {
55 top: false 57 top: false
56 }, 58 },
57 - pullUpLoad: true 59 + pullUpLoad: true,
  60 + pullDownRefresh: false
58 }, 61 },
59 fixed: false, 62 fixed: false,
60 selectedType: 2, // tab类型高亮 63 selectedType: 2, // tab类型高亮
61 priceDesc: true, 64 priceDesc: true,
62 arrowImage: '', 65 arrowImage: '',
63 title: '', 66 title: '',
  67 + yasParams: {P_NAME: 'XY_UFOSearchList', TYPE_ID: 1},
64 productList: { 68 productList: {
65 showErrorPage: false, 69 showErrorPage: false,
66 isFetching: false, 70 isFetching: false,
@@ -98,6 +102,7 @@ export default { @@ -98,6 +102,7 @@ export default {
98 this.changeArrow(); 102 this.changeArrow();
99 let params = {...this.$route.query}; 103 let params = {...this.$route.query};
100 104
  105 + this.setYasParam({param: params, tab: {index: 1, name: '人气'}});
101 if (params.title) { 106 if (params.title) {
102 this.title = params.title; 107 this.title = params.title;
103 delete params.title; 108 delete params.title;
@@ -120,6 +125,12 @@ export default { @@ -120,6 +125,12 @@ export default {
120 await this.fetchList(); 125 await this.fetchList();
121 }, 126 },
122 127
  128 + scrollHandler({y}) {
  129 + let height = -y;
  130 +
  131 + this.$refs.product.yasShowEvent(height);
  132 + },
  133 +
123 // 查询商品列表 134 // 查询商品列表
124 fetchList: async function(params) { 135 fetchList: async function(params) {
125 let searchParams = this.searchParams; 136 let searchParams = this.searchParams;
@@ -190,18 +201,21 @@ export default { @@ -190,18 +201,21 @@ export default {
190 201
191 this.selectedType = flag; 202 this.selectedType = flag;
192 if (flag === 1) { 203 if (flag === 1) {
  204 + this.setYasParam({tab: {index: 2, name: '价格'}});
193 this.priceDesc = !this.priceDesc; 205 this.priceDesc = !this.priceDesc;
194 - params.order = this.priceDesc ? 'p_desc' : 'p_asc'; 206 + params.order = this.priceDesc ? 'availableNowPrice:asc' : 'availableNowPrice:desc';
195 } else if (flag === 2) { 207 } else if (flag === 2) {
  208 + this.setYasParam({tab: {index: 1, name: '人气'}});
196 this.priceDesc = true; 209 this.priceDesc = true;
197 params.order = 'sale_desc'; 210 params.order = 'sale_desc';
198 } else if (flag === 3) { 211 } else if (flag === 3) {
  212 + this.setYasParam({tab: {index: 3, name: '新品'}});
199 this.priceDesc = true; 213 this.priceDesc = true;
200 params.order = 'st_desc'; 214 params.order = 'st_desc';
201 } 215 }
202 params.isReset = true; 216 params.isReset = true;
203 this.fetchList(params); 217 this.fetchList(params);
204 - this.$refs.scroll.scrollTo(0, 0, 300) 218 + this.$refs.scroll.scrollTo(0, 0, 300);
205 this.changeArrow(); 219 this.changeArrow();
206 }, 220 },
207 goSearch() { 221 goSearch() {
@@ -215,7 +229,43 @@ export default { @@ -215,7 +229,43 @@ export default {
215 }, 229 },
216 goFilter() { 230 goFilter() {
217 this.$refs.filtrate.show(); 231 this.$refs.filtrate.show();
218 - } 232 + },
  233 + setYasParam: function({param, tab}) {
  234 + if (param && typeof param === 'object' && Object.keys(param).length) {
  235 + let P_NAME = 'XY_UFOSearchList', TYPE_ID = 1;
  236 +
  237 + for (let key in param) {
  238 + if (key === 'brand' && param[key] && param.type !== 6) {
  239 + P_NAME = 'XY_UFOBrandList';
  240 + TYPE_ID = 3;
  241 + }
  242 + if (key === 'series' && param[key] && param.type !== 6) {
  243 + P_NAME = 'XY_UFOSeriesList';
  244 + TYPE_ID = 2;
  245 + }
  246 + if (key === 'productPool' && param[key] && param.type !== 6) {
  247 + P_NAME = 'XY_UFOProductPoolList';
  248 + TYPE_ID = 4;
  249 + }
  250 + if (!param[key]) {
  251 + delete param[key];
  252 + }
  253 + }
  254 + Object.assign(this.yasParams, {
  255 + P_NAME,
  256 + P_PARAM: JSON.stringify(param),
  257 + TYPE_ID,
  258 + TAB_ID: this.tabIndex || '',
  259 + TAB_NAME: this.tabName || ''
  260 + });
  261 + }
  262 +
  263 + if(tab && typeof tab === 'object' && Object.keys(tab).length) {
  264 + this.yasParams.TAB_ID = tab.index;
  265 + this.yasParams.TAB_NAME = tab.name;
  266 + }
  267 + },
  268 +
219 } 269 }
220 }; 270 };
221 </script> 271 </script>
1 <!--买家求购确认页--> 1 <!--买家求购确认页-->
2 <template> 2 <template>
3 <LayoutApp :show-back="true" title="出价求购"> 3 <LayoutApp :show-back="true" title="出价求购">
  4 + <Scroll :options="options">
4 <div class="body" ref="body"> 5 <div class="body" ref="body">
  6 +
5 <div class="topContainer"> 7 <div class="topContainer">
6 <!--<div class="topView">--> 8 <!--<div class="topView">-->
7 <!--<div class="title"></div>--> 9 <!--<div class="title"></div>-->
@@ -73,6 +75,7 @@ @@ -73,6 +75,7 @@
73 <div class="line"></div> 75 <div class="line"></div>
74 76
75 </div> 77 </div>
  78 +
76 </div> 79 </div>
77 <div class="bottomContainer"> 80 <div class="bottomContainer">
78 <OrderAgree :value="isAgreeTerms" @input="isAgreeTerms = !isAgreeTerms" class="agree-wrapper" :desc="agreeDesc" :url="url"></OrderAgree> 81 <OrderAgree :value="isAgreeTerms" @input="isAgreeTerms = !isAgreeTerms" class="agree-wrapper" :desc="agreeDesc" :url="url"></OrderAgree>
@@ -80,12 +83,13 @@ @@ -80,12 +83,13 @@
80 <YohoButton class="submit-btn" :txt="submitText" :disable="!isAgreeTerms" @click="submitClick"></YohoButton> 83 <YohoButton class="submit-btn" :txt="submitText" :disable="!isAgreeTerms" @click="submitClick"></YohoButton>
81 </div> 84 </div>
82 </div> 85 </div>
  86 + </Scroll>
83 </LayoutApp> 87 </LayoutApp>
84 </template> 88 </template>
85 89
86 <script> 90 <script>
87 91
88 -import {Input, Button} from 'cube-ui'; 92 +import {Input, Button, Scroll} from 'cube-ui';
89 import OrderAddress from './components/confirm/address'; 93 import OrderAddress from './components/confirm/address';
90 import DayChoose from './components/askorder/day-choose'; 94 import DayChoose from './components/askorder/day-choose';
91 import OrderAgree from './components/confirm/agree'; 95 import OrderAgree from './components/confirm/agree';
@@ -103,6 +107,7 @@ export default { @@ -103,6 +107,7 @@ export default {
103 Input, 107 Input,
104 OrderAddress, 108 OrderAddress,
105 Button, 109 Button,
  110 + Scroll,
106 }, 111 },
107 data() { 112 data() {
108 return { 113 return {
@@ -111,6 +116,7 @@ export default { @@ -111,6 +116,7 @@ export default {
111 url: 'https://activity.yoho.cn/feature/6775.html?share_id=9481&title=%E9%97%B2%E9%B1%BC%E4%B9%B0%E5%AE%B6%E5%8D%8F%E8%AE%AE', 116 url: 'https://activity.yoho.cn/feature/6775.html?share_id=9481&title=%E9%97%B2%E9%B1%BC%E4%B9%B0%E5%AE%B6%E5%8D%8F%E8%AE%AE',
112 agreeDesc: '有货买家协议', 117 agreeDesc: '有货买家协议',
113 submitText: '提交', 118 submitText: '提交',
  119 + options: {pullDownRefresh: false}
114 }; 120 };
115 }, 121 },
116 122
@@ -25,7 +25,7 @@ @@ -25,7 +25,7 @@
25 25
26 <div class="item item2"> 26 <div class="item item2">
27 <span>商品包装费</span> 27 <span>商品包装费</span>
28 - <span>{{data.platformFee.appraiseFee}}</span> 28 + <span>{{data.platformFee.packageFee}}</span>
29 </div> 29 </div>
30 30
31 <div class="item item2"> 31 <div class="item item2">
@@ -12,8 +12,8 @@ @@ -12,8 +12,8 @@
12 <div class="item-info"> 12 <div class="item-info">
13 <div> 13 <div>
14 <div v-if="$route.params.owner === 'buy'" class="price-status"> 14 <div v-if="$route.params.owner === 'buy'" class="price-status">
15 - <span class="price">¥{{ order.realPrice }}</span>  
16 - <span class="delivery-fee-tip" >{{order.bidType && (order.statuStr == '求购中' || order.statuStr == '待付定金') ? '' : '(含运费)'}}</span> 15 + <span class="price">¥{{specialBid ? goodsInfo.goodPrice : order.realPrice }}</span>
  16 + <span class="delivery-fee-tip" >{{specialBid ? '' : '(含运费)'}}</span>
17 </div> 17 </div>
18 <div v-else class="price-status"> 18 <div v-else class="price-status">
19 <span class="price">¥{{ goodsInfo.goodPrice }}</span> 19 <span class="price">¥{{ goodsInfo.goodPrice }}</span>
@@ -56,6 +56,12 @@ export default { @@ -56,6 +56,12 @@ export default {
56 params: { code: this.order.orderCode, owner } 56 params: { code: this.order.orderCode, owner }
57 }; 57 };
58 }, 58 },
  59 +
  60 + specialBid: {
  61 + get() {
  62 + return this.order.bidType && (this.order.statuStr === '求购中' || this.order.statuStr === '待付定金')
  63 + }
  64 + }
59 } 65 }
60 }; 66 };
61 </script> 67 </script>
@@ -72,7 +72,7 @@ export default { @@ -72,7 +72,7 @@ export default {
72 return `当前${this.skc.sizeName}码最低售价: ¥-`; 72 return `当前${this.skc.sizeName}码最低售价: ¥-`;
73 }, 73 },
74 postLoading() { 74 postLoading() {
75 - console.log(this.fetchingChangePrice, this.calced); 75 + // console.log(this.fetchingChangePrice, this.calced);
76 return this.fetchingChangePrice || !this.calced; 76 return this.fetchingChangePrice || !this.calced;
77 } 77 }
78 }, 78 },
@@ -49,7 +49,7 @@ export default { @@ -49,7 +49,7 @@ export default {
49 }, 49 },
50 methods: { 50 methods: {
51 show({skc}) { 51 show({skc}) {
52 - console.log(skc); 52 + // console.log(skc);
53 this.skc = skc; 53 this.skc = skc;
54 this.unStockNum = 1; 54 this.unStockNum = 1;
55 this.storageNum = skc.storageNum; 55 this.storageNum = skc.storageNum;
@@ -97,7 +97,6 @@ export default { @@ -97,7 +97,6 @@ export default {
97 &-content { 97 &-content {
98 position: relative; 98 position: relative;
99 background-color: #fff; 99 background-color: #fff;
100 - /*top: 314px;*/  
101 border: 0; 100 border: 0;
102 width: 600px; 101 width: 600px;
103 background-clip: padding-box; 102 background-clip: padding-box;
@@ -37,7 +37,7 @@ export default { @@ -37,7 +37,7 @@ export default {
37 } 37 }
38 }, 38 },
39 mounted() { 39 mounted() {
40 - console.log(this.value); 40 + // console.log(this.value);
41 }, 41 },
42 methods: { 42 methods: {
43 onNoSale() { 43 onNoSale() {
@@ -95,7 +95,7 @@ export default { @@ -95,7 +95,7 @@ export default {
95 pageSize: this.pageSize 95 pageSize: this.pageSize
96 }); 96 });
97 97
98 - console.log(result); 98 + // console.log(result);
99 const afterCount = this.skcs.length; 99 const afterCount = this.skcs.length;
100 100
101 if (afterCount > beginCount) { 101 if (afterCount > beginCount) {
@@ -130,7 +130,7 @@ export default { @@ -130,7 +130,7 @@ export default {
130 pageSize: this.pageSize, 130 pageSize: this.pageSize,
131 refresh: true 131 refresh: true
132 }); 132 });
133 - 133 +
134 // 全部下架后回到出售中列表 134 // 全部下架后回到出售中列表
135 let data = get(result, 'data.data') 135 let data = get(result, 'data.data')
136 if(data.length === 0) { 136 if(data.length === 0) {
@@ -155,7 +155,7 @@ export default { @@ -155,7 +155,7 @@ export default {
155 this.$refs.modalUnstock.show({skc}); 155 this.$refs.modalUnstock.show({skc});
156 }, 156 },
157 async onNoSaleSure({skc, num}) { // 商品下架确认 157 async onNoSaleSure({skc, num}) { // 商品下架确认
158 - console.log(skc, num); 158 + // console.log(skc, num);
159 const result = await this.postNoSale({ 159 const result = await this.postNoSale({
160 product_id: this.productInfo.productId, 160 product_id: this.productInfo.productId,
161 storage_id: skc.storageId, 161 storage_id: skc.storageId,
@@ -179,7 +179,7 @@ export default { @@ -179,7 +179,7 @@ export default {
179 } 179 }
180 }, 180 },
181 async onChangePriceSure({skc, price}) { 181 async onChangePriceSure({skc, price}) {
182 - console.log(skc, price); 182 + // console.log(skc, price);
183 const result = await this.postChangePrice({ 183 const result = await this.postChangePrice({
184 product_id: this.productInfo.productId, 184 product_id: this.productInfo.productId,
185 storage_id: skc.storageId, 185 storage_id: skc.storageId,
@@ -119,20 +119,20 @@ @@ -119,20 +119,20 @@
119 </template> 119 </template>
120 120
121 <script> 121 <script>
122 -import LayoutApp from "../../../components/layout/layout-app";  
123 -import ScrollView from "../../../components/layout/scroll-view";  
124 -import ImgSize from "../../../components/img-size";  
125 -import { createNamespacedHelpers } from "vuex";  
126 -import InputUfo from "./components/input-ufo";  
127 -import { Checkbox } from "cube-ui";  
128 -import { get } from "lodash";  
129 -import Modal from "./components/modal";  
130 -import OrderCheck from "../components/confirm/agree";  
131 -  
132 -const { mapState, mapActions } = createNamespacedHelpers("order/priceChange"); 122 +import LayoutApp from '../../../components/layout/layout-app';
  123 +import ScrollView from '../../../components/layout/scroll-view';
  124 +import ImgSize from '../../../components/img-size';
  125 +import { createNamespacedHelpers } from 'vuex';
  126 +import InputUfo from './components/input-ufo';
  127 +import { Checkbox } from 'cube-ui';
  128 +import { get } from 'lodash';
  129 +import Modal from './components/modal';
  130 +import OrderCheck from '../components/confirm/agree';
  131 +
  132 +const { mapState, mapActions } = createNamespacedHelpers('order/priceChange');
133 // orderCode = 1233499619151 133 // orderCode = 1233499619151
134 export default { 134 export default {
135 - name: "noEntryDetail", 135 + name: 'noEntryDetail',
136 components: { 136 components: {
137 OrderCheck, 137 OrderCheck,
138 Modal, 138 Modal,
@@ -144,35 +144,35 @@ export default { @@ -144,35 +144,35 @@ export default {
144 }, 144 },
145 data() { 145 data() {
146 return { 146 return {
147 - title: "调价", 147 + title: '调价',
148 agreementURL: 148 agreementURL:
149 - "https://activity.yoho.cn/feature/3187.html?share_id=5851&title=ufo-%E5%8D%96%E5%AE%B6%E5%8D%8F%E8%AE%AE", 149 + 'https://activity.yoho.cn/feature/3187.html?share_id=5851&title=ufo-%E5%8D%96%E5%AE%B6%E5%8D%8F%E8%AE%AE',
150 platformFeeModalVisible: false, 150 platformFeeModalVisible: false,
151 platformFee: { 151 platformFee: {
152 - amount: "-¥0",  
153 - appraiseFee: "¥0.00",  
154 - packageFee: "¥0.00",  
155 - serviceFee: "¥0.00",  
156 - goodsPaymentRatePercent: "0.00%",  
157 - payChannelPercentage: "0.00%" 152 + amount: '-¥0',
  153 + appraiseFee: '¥0.00',
  154 + packageFee: '¥0.00',
  155 + serviceFee: '¥0.00',
  156 + goodsPaymentRatePercent: '0.00%',
  157 + payChannelPercentage: '0.00%'
158 }, 158 },
159 - bankTransferFee: "-¥0",  
160 - income: "¥0",  
161 - errorTip: "",  
162 - chgPrice: "", 159 + bankTransferFee: '-¥0',
  160 + income: '¥0',
  161 + errorTip: '',
  162 + chgPrice: '',
163 calced: false, 163 calced: false,
164 - earnestMoney: "¥0", 164 + earnestMoney: '¥0',
165 // 保证金 165 // 保证金
166 earnestPrice: 0, 166 earnestPrice: 0,
167 isAgree: false, 167 isAgree: false,
168 labelOption: { 168 labelOption: {
169 - label: "我已阅读并同意" 169 + label: '我已阅读并同意'
170 }, 170 },
171 time: 15000 171 time: 15000
172 }; 172 };
173 }, 173 },
174 asyncData({ store, router }) { 174 asyncData({ store, router }) {
175 - return store.dispatch("order/priceChange/fetchOrder", { 175 + return store.dispatch('order/priceChange/fetchOrder', {
176 orderCode: router.params.orderCode 176 orderCode: router.params.orderCode
177 }); 177 });
178 }, 178 },
@@ -181,7 +181,7 @@ export default { @@ -181,7 +181,7 @@ export default {
181 // this.inputChange = debounce(this.onChange.bind(this), 500); 181 // this.inputChange = debounce(this.onChange.bind(this), 500);
182 }, 182 },
183 computed: { 183 computed: {
184 - ...mapState(["noEntryOrderInfo"]), 184 + ...mapState(['noEntryOrderInfo']),
185 goodsInfo() { 185 goodsInfo() {
186 return this.noEntryOrderInfo.goodsInfo || {}; 186 return this.noEntryOrderInfo.goodsInfo || {};
187 }, 187 },
@@ -193,37 +193,37 @@ export default { @@ -193,37 +193,37 @@ export default {
193 chgPrice() { 193 chgPrice() {
194 this.calced = false; 194 this.calced = false;
195 this.platformFee = { 195 this.platformFee = {
196 - amount: "-¥0",  
197 - appraiseFee: "¥0.00",  
198 - packageFee: "¥0.00",  
199 - serviceFee: "¥0.00",  
200 - goodsPaymentRatePercent: "0.00%",  
201 - payChannelPercentage: "0.00%" 196 + amount: '-¥0',
  197 + appraiseFee: '¥0.00',
  198 + packageFee: '¥0.00',
  199 + serviceFee: '¥0.00',
  200 + goodsPaymentRatePercent: '0.00%',
  201 + payChannelPercentage: '0.00%'
202 }; 202 };
203 - this.bankTransferFee = "-¥0";  
204 - this.income = "¥0";  
205 - this.earnestMoney = "¥0"; 203 + this.bankTransferFee = '-¥0';
  204 + this.income = '¥0';
  205 + this.earnestMoney = '¥0';
206 this.earnestPrice = 0; 206 this.earnestPrice = 0;
207 } 207 }
208 }, 208 },
209 methods: { 209 methods: {
210 ...mapActions([ 210 ...mapActions([
211 - "fetchOrder",  
212 - "postNoEntryCalcPrice",  
213 - "postNoEntryChangePrice" 211 + 'fetchOrder',
  212 + 'postNoEntryCalcPrice',
  213 + 'postNoEntryChangePrice'
214 ]), 214 ]),
215 checkPrice(price) { 215 checkPrice(price) {
216 let valid = false; 216 let valid = false;
217 217
218 if (!price) { 218 if (!price) {
219 - this.errorTip = "没有价格"; 219 + this.errorTip = '没有价格';
220 return false; 220 return false;
221 } else if (!/^\d+$/.test(price)) { 221 } else if (!/^\d+$/.test(price)) {
222 - this.errorTip = "价格只能为正整数"; 222 + this.errorTip = '价格只能为正整数';
223 } else if (!/9$/.test(price)) { 223 } else if (!/9$/.test(price)) {
224 - this.errorTip = "出售价格必须以9结尾"; 224 + this.errorTip = '出售价格必须以9结尾';
225 } else { 225 } else {
226 - this.errorTip = ""; 226 + this.errorTip = '';
227 valid = true; 227 valid = true;
228 } 228 }
229 console.log(this.errorTip, valid); 229 console.log(this.errorTip, valid);
@@ -233,15 +233,15 @@ export default { @@ -233,15 +233,15 @@ export default {
233 // 点击提交按钮 233 // 点击提交按钮
234 if (this.isAgree && this.calced) { 234 if (this.isAgree && this.calced) {
235 this.$createDialog({ 235 this.$createDialog({
236 - type: "confirm",  
237 - content: "重新出售后本次出售保证金原路返回", 236 + type: 'confirm',
  237 + content: '重新出售后本次出售保证金原路返回',
238 confirmBtn: { 238 confirmBtn: {
239 - text: "我再想想", 239 + text: '我再想想',
240 active: true, 240 active: true,
241 disabled: false 241 disabled: false
242 }, 242 },
243 cancelBtn: { 243 cancelBtn: {
244 - text: "重新出售", 244 + text: '重新出售',
245 active: false, 245 active: false,
246 disabled: false 246 disabled: false
247 }, 247 },
@@ -264,11 +264,11 @@ export default { @@ -264,11 +264,11 @@ export default {
264 console.log(result); 264 console.log(result);
265 265
266 if (result && result.code === 200) { 266 if (result && result.code === 200) {
267 - this.platformFee = get(result, "data.platformFee", "");  
268 - this.bankTransferFee = get(result, "data.bankTransferFee", "");  
269 - this.income = "¥" + get(result, "data.income", "");  
270 - this.earnestMoney = "¥" + get(result, "data.earnestMoney", "");  
271 - this.earnestPrice = get(result, "data.earnestMoney", 0); 267 + this.platformFee = get(result, 'data.platformFee', '');
  268 + this.bankTransferFee = get(result, 'data.bankTransferFee', '');
  269 + this.income = '¥' + get(result, 'data.income', '');
  270 + this.earnestMoney = '¥' + get(result, 'data.earnestMoney', '');
  271 + this.earnestPrice = get(result, 'data.earnestMoney', 0);
272 this.calced = true; 272 this.calced = true;
273 } else { 273 } else {
274 if (result.message) { 274 if (result.message) {
@@ -278,7 +278,7 @@ export default { @@ -278,7 +278,7 @@ export default {
278 278
279 this.$createToast({ 279 this.$createToast({
280 txt: this.errorTip, 280 txt: this.errorTip,
281 - type: "txt" 281 + type: 'txt'
282 }).show(); 282 }).show();
283 } 283 }
284 }, 284 },
@@ -289,7 +289,7 @@ export default { @@ -289,7 +289,7 @@ export default {
289 } else { 289 } else {
290 this.$createToast({ 290 this.$createToast({
291 txt: this.errorTip, 291 txt: this.errorTip,
292 - type: "txt" 292 + type: 'txt'
293 }).show(); 293 }).show();
294 } 294 }
295 }, 295 },
@@ -300,7 +300,7 @@ export default { @@ -300,7 +300,7 @@ export default {
300 300
301 showEarnestQuestion() { 301 showEarnestQuestion() {
302 // 跳转保证金说明页 302 // 跳转保证金说明页
303 - console.log("showEarnest"); 303 + console.log('showEarnest');
304 this.$xianyu.goXianyuNewPage({ url: this.agreementURL }); 304 this.$xianyu.goXianyuNewPage({ url: this.agreementURL });
305 }, 305 },
306 306
@@ -322,14 +322,14 @@ export default { @@ -322,14 +322,14 @@ export default {
322 this.$createOrderPayType({ 322 this.$createOrderPayType({
323 orderCode: result.data.orderCode, 323 orderCode: result.data.orderCode,
324 price: parseFloat(`${earnestPrice}`).toFixed(2), 324 price: parseFloat(`${earnestPrice}`).toFixed(2),
325 - desc: "保证金", 325 + desc: '保证金',
326 extra: JSON.stringify({ 326 extra: JSON.stringify({
327 - type: "sell", 327 + type: 'sell',
328 back: { 328 back: {
329 - name: "InSaleOrderList" 329 + name: 'InSaleOrderList'
330 }, 330 },
331 forward: { 331 forward: {
332 - name: "SellPayOk", 332 + name: 'SellPayOk',
333 query: { 333 query: {
334 orderCode: result.data.orderCode 334 orderCode: result.data.orderCode
335 } 335 }
@@ -338,9 +338,9 @@ export default { @@ -338,9 +338,9 @@ export default {
338 onCloseAction() { 338 onCloseAction() {
339 that.clearData(); 339 that.clearData();
340 that.$router.replace({ 340 that.$router.replace({
341 - name: "sellOrderDetail", 341 + name: 'sellOrderDetail',
342 params: { 342 params: {
343 - owner: "sell", 343 + owner: 'sell',
344 code: result.data.orderCode 344 code: result.data.orderCode
345 } 345 }
346 }); 346 });
@@ -348,8 +348,8 @@ export default { @@ -348,8 +348,8 @@ export default {
348 }).show(); 348 }).show();
349 } else { 349 } else {
350 this.$createToast({ 350 this.$createToast({
351 - txt: result.message || "调价失败",  
352 - type: "txt" 351 + txt: result.message || '调价失败',
  352 + type: 'txt'
353 }).show(); 353 }).show();
354 } 354 }
355 355
@@ -357,29 +357,29 @@ export default { @@ -357,29 +357,29 @@ export default {
357 }, 357 },
358 clearData() { 358 clearData() {
359 // 清空数据状态 359 // 清空数据状态
360 - console.log(this.$router); 360 + // console.log(this.$router);
361 this.platformFeeModalVisible = false; 361 this.platformFeeModalVisible = false;
362 this.platformFee = { 362 this.platformFee = {
363 - amount: "-¥0",  
364 - appraiseFee: "¥0.00",  
365 - packageFee: "¥0.00",  
366 - serviceFee: "¥0.00",  
367 - goodsPaymentRatePercent: "0.00%",  
368 - payChannelPercentage: "0.00%" 363 + amount: '-¥0',
  364 + appraiseFee: '¥0.00',
  365 + packageFee: '¥0.00',
  366 + serviceFee: '¥0.00',
  367 + goodsPaymentRatePercent: '0.00%',
  368 + payChannelPercentage: '0.00%'
369 }; 369 };
370 - this.bankTransferFee = "-¥0";  
371 - this.income = "¥0";  
372 - this.errorTip = "";  
373 - this.chgPrice = ""; 370 + this.bankTransferFee = '-¥0';
  371 + this.income = '¥0';
  372 + this.errorTip = '';
  373 + this.chgPrice = '';
374 this.calced = false; 374 this.calced = false;
375 - this.earnestMoney = "¥0"; 375 + this.earnestMoney = '¥0';
376 this.isAgree = false; 376 this.isAgree = false;
377 } 377 }
378 } 378 }
379 }; 379 };
380 </script> 380 </script>
381 381
382 -<style lang="scss" scoped> 382 +<style lang='scss' scoped>
383 .order-page { 383 .order-page {
384 position: absolute; 384 position: absolute;
385 left: 0; 385 left: 0;
1 <!--卖家求购变现--> 1 <!--卖家求购变现-->
2 <template> 2 <template>
3 <LayoutApp :show-back="true" title="变现"> 3 <LayoutApp :show-back="true" title="变现">
  4 + <Scroll :options="options">
4 <div class="body"> 5 <div class="body">
5 <!--<TitleComp txt="变现"></TitleComp>--> 6 <!--<TitleComp txt="变现"></TitleComp>-->
  7 +
6 <ProductInfo :data="originProductData" class="product-info" :priceType="'现货最高求购价:'"></ProductInfo> 8 <ProductInfo :data="originProductData" class="product-info" :priceType="'现货最高求购价:'"></ProductInfo>
7 <div class="inputView"> 9 <div class="inputView">
8 <span class="inputViewIcon"> 10 <span class="inputViewIcon">
@@ -13,13 +15,16 @@ @@ -13,13 +15,16 @@
13 <OrderMargin class="order-item order-margin" :data="computeTip" :url="url" :superSell="isEntry" ></OrderMargin> 15 <OrderMargin class="order-item order-margin" :data="computeTip" :url="url" :superSell="isEntry" ></OrderMargin>
14 <OrderFee class="order-item" :data="computeTip"></OrderFee> 16 <OrderFee class="order-item" :data="computeTip"></OrderFee>
15 <AddressInfo :data="addressInfo" class="order-item"></AddressInfo> 17 <AddressInfo :data="addressInfo" class="order-item"></AddressInfo>
  18 +
16 </div> 19 </div>
  20 + </Scroll>
17 <div class="footer"> 21 <div class="footer">
18 <OrderAgree :value="isAgreeTerms" @input="isAgreeTerms = !isAgreeTerms" class="agree-wrapper" :desc="agreeDesc" :url="url"></OrderAgree> 22 <OrderAgree :value="isAgreeTerms" @input="isAgreeTerms = !isAgreeTerms" class="agree-wrapper" :desc="agreeDesc" :url="url"></OrderAgree>
19 <div class="btn-wrapper"> 23 <div class="btn-wrapper">
20 <YohoButton :txt="submitText"class="submit-btn" :disable="!isAgreeTerms" @click="submitClick"></YohoButton> 24 <YohoButton :txt="submitText"class="submit-btn" :disable="!isAgreeTerms" @click="submitClick"></YohoButton>
21 </div> 25 </div>
22 </div> 26 </div>
  27 +
23 </LayoutApp> 28 </LayoutApp>
24 </template> 29 </template>
25 30
@@ -64,6 +69,7 @@ export default { @@ -64,6 +69,7 @@ export default {
64 url: 'http://m.yohobuy.com/activity/student/detail/renzhen?openby:yohobuy={\"action\":\"go.h5\",\"params\":{\"url\":\"https://activity.yoho.cn/feature/3187.html?title=卖家协议\"}}', 69 url: 'http://m.yohobuy.com/activity/student/detail/renzhen?openby:yohobuy={\"action\":\"go.h5\",\"params\":{\"url\":\"https://activity.yoho.cn/feature/3187.html?title=卖家协议\"}}',
65 isEntry: false, 70 isEntry: false,
66 submitText: '提交', 71 submitText: '提交',
  72 + options: {pullDownRefresh: false},
67 }; 73 };
68 }, 74 },
69 75
1 <template> 1 <template>
2 <LayoutApp :show-back="true" title="出售" :back-action="backAction"> 2 <LayoutApp :show-back="true" title="出售" :back-action="backAction">
3 <div class="body"> 3 <div class="body">
4 - <Scroll :options="scrollOption"> 4 +<!-- <Scroll :options="scrollOption">-->
5 <ProductInfo :data="productDetail" class="product-info"></ProductInfo> 5 <ProductInfo :data="productDetail" class="product-info"></ProductInfo>
6 <InputPrice @input="changePrice" 6 <InputPrice @input="changePrice"
7 :num="num" :value="price" 7 :num="num" :value="price"
@@ -12,7 +12,7 @@ @@ -12,7 +12,7 @@
12 <OrderMargin class="order-item order-margin" :data="fee" :super-sell="superSell" :url="tipUrl"></OrderMargin> 12 <OrderMargin class="order-item order-margin" :data="fee" :super-sell="superSell" :url="tipUrl"></OrderMargin>
13 <OrderFee class="order-item" :data="fee"></OrderFee> 13 <OrderFee class="order-item" :data="fee"></OrderFee>
14 <AddressInfo :data="address" class="order-item"></AddressInfo> 14 <AddressInfo :data="address" class="order-item"></AddressInfo>
15 - </Scroll> 15 +<!-- </Scroll>-->
16 </div> 16 </div>
17 <div class="footer"> 17 <div class="footer">
18 <OrderAgree :value="agree" @input="changeAgree" class="agree-wrapper" :desc="agreeDesc" :url="url"></OrderAgree> 18 <OrderAgree :value="agree" @input="changeAgree" class="agree-wrapper" :desc="agreeDesc" :url="url"></OrderAgree>
@@ -62,7 +62,8 @@ export default { @@ -62,7 +62,8 @@ export default {
62 superSell: false, 62 superSell: false,
63 addNumError: false, 63 addNumError: false,
64 scrollOption: { 64 scrollOption: {
65 - bounce: false 65 + bounce: false,
  66 + click: true
66 }, 67 },
67 tipUrl: 'https://activity.yoho.cn/feature/6773.html?share_id=9479&title=%E9%97%B2%E9%B1%BC%E6%BD%AE%E5%8D%96%E5%AE%B6%E5%8D%8F%E8%AE%AE' 68 tipUrl: 'https://activity.yoho.cn/feature/6773.html?share_id=9479&title=%E9%97%B2%E9%B1%BC%E6%BD%AE%E5%8D%96%E5%AE%B6%E5%8D%8F%E8%AE%AE'
68 }; 69 };
@@ -115,11 +115,7 @@ module.exports = { @@ -115,11 +115,7 @@ module.exports = {
115 auth: true, 115 auth: true,
116 path: '/ufo-gateway/coupon', 116 path: '/ufo-gateway/coupon',
117 api: 'ufo.coupons.list', 117 api: 'ufo.coupons.list',
118 - param: {  
119 - page: {type: Number},  
120 - limit: {type: Number},  
121 - type: {type: String},  
122 - } 118 + param: {}
123 }, 119 },
124 '/api/ufo/home/bindAliPayAccount': { 120 '/api/ufo/home/bindAliPayAccount': {
125 ufo: true, 121 ufo: true,
1 { 1 {
2 "name": "xianyu-ufo-app-web", 2 "name": "xianyu-ufo-app-web",
3 - "version": "0.0.2-beta-34", 3 + "version": "0.0.2-beta-35",
4 "private": true, 4 "private": true,
5 "description": "Xianyu Project With Express", 5 "description": "Xianyu Project With Express",
6 "repository": { 6 "repository": {