Merge branch 'develop' of http://git.yoho.cn/fe/xianyu-ufo-app-web into develop
Showing
28 changed files
with
372 additions
and
160 deletions
@@ -86,7 +86,7 @@ export default { | @@ -86,7 +86,7 @@ export default { | ||
86 | ...mapOrderAction(['payAction']), | 86 | ...mapOrderAction(['payAction']), |
87 | show() { | 87 | show() { |
88 | this.$refs.actionSheet.show(); | 88 | this.$refs.actionSheet.show(); |
89 | - this.pay() | 89 | + this.pay(); |
90 | }, | 90 | }, |
91 | hide() { | 91 | hide() { |
92 | this.$refs.actionSheet.hide(); | 92 | this.$refs.actionSheet.hide(); |
@@ -127,7 +127,8 @@ export default { | @@ -127,7 +127,8 @@ export default { | ||
127 | appop: this.appOp().pay, | 127 | appop: this.appOp().pay, |
128 | param: { | 128 | param: { |
129 | ORD_NUM: this.orderCode, | 129 | ORD_NUM: this.orderCode, |
130 | - PAY_TYPE: 1 | 130 | + PAY_TYPE: 1, |
131 | + ORD_TYPE: this.appOp().type | ||
131 | }, | 132 | }, |
132 | }, | 133 | }, |
133 | }); | 134 | }); |
@@ -139,44 +140,18 @@ export default { | @@ -139,44 +140,18 @@ export default { | ||
139 | time: 1500, | 140 | time: 1500, |
140 | type: 'txt' | 141 | type: 'txt' |
141 | }).show(); | 142 | }).show(); |
142 | - | ||
143 | - //数据埋点 | ||
144 | - this.$store.dispatch('reportYas', { | ||
145 | - params: { | ||
146 | - appop: this.appOp().result, | ||
147 | - param: { | ||
148 | - ORD_NUM: this.orderCode, | ||
149 | - PAY_TYPE: 1, //1支付宝支付,2微信支付 | ||
150 | - PAY_RES: 0, //0支付失败,1支付成功 | ||
151 | - ORDER_AMOUNT: this.price | ||
152 | - }, | ||
153 | - }, | ||
154 | - }); | ||
155 | - | ||
156 | }, | 143 | }, |
157 | onSuccess(result) { | 144 | onSuccess(result) { |
158 | this.hide(); | 145 | this.hide(); |
159 | this.$emit('paySuccess'); | 146 | this.$emit('paySuccess'); |
160 | 147 | ||
161 | - //数据埋点 | ||
162 | - this.$store.dispatch('reportYas', { | ||
163 | - params: { | ||
164 | - appop: this.appOp().result, | ||
165 | - param: { | ||
166 | - ORD_NUM: this.orderCode, | ||
167 | - PAY_TYPE: 1, | ||
168 | - PAY_RES: 1, | ||
169 | - ORDER_AMOUNT: this.price | ||
170 | - }, | ||
171 | - }, | ||
172 | - }); | ||
173 | - | ||
174 | this.$router.replace({ | 148 | this.$router.replace({ |
175 | name: 'OrderPay', | 149 | name: 'OrderPay', |
176 | query: { | 150 | query: { |
177 | orderCode: this.orderCode, | 151 | orderCode: this.orderCode, |
178 | payParams: result.data.payParams, | 152 | payParams: result.data.payParams, |
179 | - extra: this.extra | 153 | + extra: this.extra, |
154 | + price: this.price | ||
180 | } | 155 | } |
181 | }); | 156 | }); |
182 | 157 | ||
@@ -211,19 +186,29 @@ export default { | @@ -211,19 +186,29 @@ export default { | ||
211 | case 'sell': { | 186 | case 'sell': { |
212 | return { | 187 | return { |
213 | pay: 'XY_UFO_SALE_PAY', | 188 | pay: 'XY_UFO_SALE_PAY', |
214 | - result: 'XY_UFO_SALE_PAY_RES' | 189 | + result: 'XY_UFO_SALE_PAY_RES', |
190 | + type: 1, | ||
215 | }; | 191 | }; |
216 | } | 192 | } |
217 | case 'buy': { | 193 | case 'buy': { |
218 | return { | 194 | return { |
219 | - pay: 'XY_UFO_SC_PAY', | ||
220 | - result: 'XY_UFO_SC_PAY_RES' | 195 | + pay: 'XY_UFO_SALE_PAY', |
196 | + result: 'XY_UFO_SALE_PAY_RES', | ||
197 | + type: 2, | ||
221 | }; | 198 | }; |
222 | } | 199 | } |
223 | case 'qiugou_buy': { | 200 | case 'qiugou_buy': { |
224 | return { | 201 | return { |
225 | - pay: 'XY_UFO_WTBUY_PAY', | ||
226 | - result: 'XY_UFO_WTBUY_PAY_RES' | 202 | + pay: 'XY_UFO_SALE_PAY', |
203 | + result: 'XY_UFO_SALE_PAY_RES', | ||
204 | + type: 3 | ||
205 | + }; | ||
206 | + } | ||
207 | + case 'bianxian': { | ||
208 | + return { | ||
209 | + pay: 'XY_UFO_SALE_PAY', | ||
210 | + result: 'XY_UFO_SALE_PAY_RES', | ||
211 | + type: 4 | ||
227 | }; | 212 | }; |
228 | } | 213 | } |
229 | default: { | 214 | default: { |
@@ -77,7 +77,7 @@ Vue.use(ChangeBidPriceDialog); | @@ -77,7 +77,7 @@ Vue.use(ChangeBidPriceDialog); | ||
77 | initClient(store); | 77 | initClient(store); |
78 | 78 | ||
79 | xianyu.$router = router; | 79 | xianyu.$router = router; |
80 | -yoho.auth = async (args) => { | 80 | +yoho.auth = async(args) => { |
81 | let { | 81 | let { |
82 | refer, | 82 | refer, |
83 | loginUrl, | 83 | loginUrl, |
@@ -108,7 +108,7 @@ yoho.auth = async (args) => { | @@ -108,7 +108,7 @@ yoho.auth = async (args) => { | ||
108 | } | 108 | } |
109 | }; | 109 | }; |
110 | 110 | ||
111 | -yoho.authRealName = async () => { | 111 | +yoho.authRealName = async() => { |
112 | if (await yoho.auth()) { | 112 | if (await yoho.auth()) { |
113 | let res = await api.get('/api/ufo/sellerOrder/entryStatus'); | 113 | let res = await api.get('/api/ufo/sellerOrder/entryStatus'); |
114 | 114 | ||
@@ -158,7 +158,7 @@ const trackPage = path => { | @@ -158,7 +158,7 @@ const trackPage = path => { | ||
158 | router.onReady(() => { | 158 | router.onReady(() => { |
159 | store.dispatch('reportYas', { | 159 | store.dispatch('reportYas', { |
160 | params: { | 160 | params: { |
161 | - appop: 'YB_H5_PAGE_OPEN_L', | 161 | + appop: 'XY_H5_PAGE_OPEN_L', |
162 | param: { | 162 | param: { |
163 | F_URL: `${location.origin}${router.currentRoute.fullPath}`, | 163 | F_URL: `${location.origin}${router.currentRoute.fullPath}`, |
164 | PAGE_URL: '', | 164 | PAGE_URL: '', |
@@ -189,7 +189,18 @@ router.onReady(() => { | @@ -189,7 +189,18 @@ router.onReady(() => { | ||
189 | 189 | ||
190 | store.dispatch('reportYas', { | 190 | store.dispatch('reportYas', { |
191 | params: { | 191 | params: { |
192 | - appop: 'YB_H5_PAGE_OPEN_L', | 192 | + appop: 'XY_H5_PAGE_OPEN_L', |
193 | + param: { | ||
194 | + F_URL: `${location.origin}${from.fullPath}`, | ||
195 | + PAGE_URL: `${location.origin}${to.fullPath}`, | ||
196 | + PAGE_NAME: to.name, | ||
197 | + }, | ||
198 | + }, | ||
199 | + }); | ||
200 | + | ||
201 | + store.dispatch('reportYas', { | ||
202 | + params: { | ||
203 | + appop: 'XY_H5_PAGE_EXIT_L', | ||
193 | param: { | 204 | param: { |
194 | F_URL: `${location.origin}${to.fullPath}`, | 205 | F_URL: `${location.origin}${to.fullPath}`, |
195 | PAGE_URL: `${location.origin}${from.fullPath}`, | 206 | PAGE_URL: `${location.origin}${from.fullPath}`, |
@@ -5,8 +5,8 @@ | @@ -5,8 +5,8 @@ | ||
5 | <CInput | 5 | <CInput |
6 | label="收货人" | 6 | label="收货人" |
7 | place-holder="请写姓名" | 7 | place-holder="请写姓名" |
8 | - v-model="model.consignee" | ||
9 | - :textValue="model.consignee" | 8 | + v-model="consignee" |
9 | + :textValue="consignee" | ||
10 | type="text" | 10 | type="text" |
11 | ></CInput> | 11 | ></CInput> |
12 | </FormItem> | 12 | </FormItem> |
@@ -14,8 +14,8 @@ | @@ -14,8 +14,8 @@ | ||
14 | <CInput | 14 | <CInput |
15 | label="手机号" | 15 | label="手机号" |
16 | place-holder="请填写手机号" | 16 | place-holder="请填写手机号" |
17 | - v-model="model.mobile" | ||
18 | - :textValue="model.mobile" | 17 | + v-model="mobile" |
18 | + :textValue="mobile" | ||
19 | ></CInput> | 19 | ></CInput> |
20 | </FormItem> | 20 | </FormItem> |
21 | 21 | ||
@@ -24,8 +24,8 @@ | @@ -24,8 +24,8 @@ | ||
24 | <div class="wrapper-area"> | 24 | <div class="wrapper-area"> |
25 | <label class="input-label">所在区域</label> | 25 | <label class="input-label">所在区域</label> |
26 | <div class="wrapper-arrow" @click="chooseArea"> | 26 | <div class="wrapper-arrow" @click="chooseArea"> |
27 | - <template v-if="model.area"> | ||
28 | - <label class="text-label">{{ model.area }}</label> | 27 | + <template v-if="area"> |
28 | + <label class="text-label">{{ area }}</label> | ||
29 | </template> | 29 | </template> |
30 | <template v-else> | 30 | <template v-else> |
31 | <label class="choose-area">请选择</label> | 31 | <label class="choose-area">请选择</label> |
@@ -40,8 +40,8 @@ | @@ -40,8 +40,8 @@ | ||
40 | <CInput | 40 | <CInput |
41 | label="详细地址" | 41 | label="详细地址" |
42 | place-holder="请输入详细地址" | 42 | place-holder="请输入详细地址" |
43 | - v-model="model.address" | ||
44 | - :textValue="model.address" | 43 | + v-model="address" |
44 | + :textValue="address" | ||
45 | ></CInput> | 45 | ></CInput> |
46 | </FormItem> | 46 | </FormItem> |
47 | <!-- 订单修改地址隐藏 --> | 47 | <!-- 订单修改地址隐藏 --> |
@@ -53,8 +53,8 @@ | @@ -53,8 +53,8 @@ | ||
53 | <Radio | 53 | <Radio |
54 | class="tag-radio" | 54 | class="tag-radio" |
55 | :label="{ text: `${tag.name}`, value: `${tag.code}` }" | 55 | :label="{ text: `${tag.name}`, value: `${tag.code}` }" |
56 | - v-model="model.tag_code" | ||
57 | - checked="tag.code === model.tag_code" | 56 | + v-model="tag_code" |
57 | + :checked="tag.code === tag_code" | ||
58 | ></Radio> | 58 | ></Radio> |
59 | </div> | 59 | </div> |
60 | </RadioGroup> | 60 | </RadioGroup> |
@@ -66,8 +66,8 @@ | @@ -66,8 +66,8 @@ | ||
66 | class="radio" | 66 | class="radio" |
67 | :label="{ text: '设为默认地址', value: true }" | 67 | :label="{ text: '设为默认地址', value: true }" |
68 | style="flex: 0 1 100%;" | 68 | style="flex: 0 1 100%;" |
69 | - checked="model.is_default" | ||
70 | - v-model="model.is_default" | 69 | + checked="is_default" |
70 | + v-model="is_default" | ||
71 | ></Radio> | 71 | ></Radio> |
72 | </div> | 72 | </div> |
73 | </div> | 73 | </div> |
@@ -117,20 +117,19 @@ export default { | @@ -117,20 +117,19 @@ export default { | ||
117 | isMobileNumEdit: false, | 117 | isMobileNumEdit: false, |
118 | title: '', | 118 | title: '', |
119 | orderCode: '', | 119 | orderCode: '', |
120 | - model: { | ||
121 | - consignee: '', | ||
122 | - address_id: '', | ||
123 | - mobile: '', | ||
124 | - area_code: '', | ||
125 | - area: '', | ||
126 | - address: '', | ||
127 | - tag_code: '', | ||
128 | - is_default: false | ||
129 | - } | 120 | + |
121 | + consignee: '', | ||
122 | + address_id: '', | ||
123 | + mobile: '', | ||
124 | + area_code: '', | ||
125 | + area: '', | ||
126 | + address: '', | ||
127 | + tag_code: '', | ||
128 | + is_default: false | ||
130 | }; | 129 | }; |
131 | }, | 130 | }, |
132 | watch: { | 131 | watch: { |
133 | - 'model.mobile': function(val) { | 132 | + mobile: function(val) { |
134 | if (val === this.updateMobileNum) { | 133 | if (val === this.updateMobileNum) { |
135 | this.isMobileNumEdit = false; | 134 | this.isMobileNumEdit = false; |
136 | } else { | 135 | } else { |
@@ -150,10 +149,10 @@ export default { | @@ -150,10 +149,10 @@ export default { | ||
150 | }, | 149 | }, |
151 | inNotEmpty() { | 150 | inNotEmpty() { |
152 | return ( | 151 | return ( |
153 | - this.model.consignee && | ||
154 | - this.model.mobile && | ||
155 | - this.model.area && | ||
156 | - this.model.address | 152 | + this.consignee && |
153 | + this.mobile && | ||
154 | + this.area && | ||
155 | + this.address | ||
157 | ); | 156 | ); |
158 | } | 157 | } |
159 | }, | 158 | }, |
@@ -209,8 +208,7 @@ export default { | @@ -209,8 +208,7 @@ export default { | ||
209 | } | 208 | } |
210 | }, | 209 | }, |
211 | validator() { | 210 | validator() { |
212 | - let info = this.model; | ||
213 | - let username = info.consignee.replace(/(^\s+)|(\s+$)/g, ''); | 211 | + let username = this.consignee.replace(/(^\s+)|(\s+$)/g, ''); |
214 | 212 | ||
215 | // 简单的表单校验 | 213 | // 简单的表单校验 |
216 | if (!username) { | 214 | if (!username) { |
@@ -230,38 +228,38 @@ export default { | @@ -230,38 +228,38 @@ export default { | ||
230 | reg = /^[0123456789]{11}$/; | 228 | reg = /^[0123456789]{11}$/; |
231 | } | 229 | } |
232 | 230 | ||
233 | - if (!info.mobile) { | 231 | + if (!this.mobile) { |
234 | this.showToast('手机号不能为空'); | 232 | this.showToast('手机号不能为空'); |
235 | return false; | 233 | return false; |
236 | } else { | 234 | } else { |
237 | - if (!reg.test(info.mobile)) { | 235 | + if (!reg.test(this.mobile)) { |
238 | this.showToast('请输入正确11位手机号码'); | 236 | this.showToast('请输入正确11位手机号码'); |
239 | return; | 237 | return; |
240 | } | 238 | } |
241 | } | 239 | } |
242 | 240 | ||
243 | - if (!info.area_code || !info.area) { | 241 | + if (!this.area_code || !this.area) { |
244 | this.showToast('省市区不能为空'); | 242 | this.showToast('省市区不能为空'); |
245 | return false; | 243 | return false; |
246 | } | 244 | } |
247 | - if (!info.address) { | 245 | + if (!this.address) { |
248 | this.showToast('地址不能为空'); | 246 | this.showToast('地址不能为空'); |
249 | return false; | 247 | return false; |
250 | } | 248 | } |
251 | 249 | ||
252 | return { | 250 | return { |
253 | - id: info.address_id || '', | 251 | + id: this.address_id || '', |
254 | consignee: username, | 252 | consignee: username, |
255 | - mobile: info.mobile, | ||
256 | - area_code: info.area_code, | ||
257 | - area: info.area, | ||
258 | - address: info.address, | ||
259 | - is_default: info.is_default ? 'Y' : 'N', | ||
260 | - tag_code: info.tag_code | 253 | + mobile: this.mobile, |
254 | + area_code: this.area_code, | ||
255 | + area: this.area, | ||
256 | + address: this.address, | ||
257 | + is_default: this.is_default ? 'Y' : 'N', | ||
258 | + tag_code: this.tag_code | ||
261 | }; | 259 | }; |
262 | }, | 260 | }, |
263 | async delAddress() { | 261 | async delAddress() { |
264 | - const result = await this.deleteUserAddress(this.model.address_id); | 262 | + const result = await this.deleteUserAddress(this.address_id); |
265 | if (result && result.code === 200) { | 263 | if (result && result.code === 200) { |
266 | this.$createToast({ | 264 | this.$createToast({ |
267 | type: 'txt', | 265 | type: 'txt', |
@@ -282,7 +280,7 @@ export default { | @@ -282,7 +280,7 @@ export default { | ||
282 | this.isShowProvince = true; | 280 | this.isShowProvince = true; |
283 | 281 | ||
284 | this.$refs.addressAct.parentHandleclick({ | 282 | this.$refs.addressAct.parentHandleclick({ |
285 | - areaCode: this.model.area_code | 283 | + areaCode: this.area_code |
286 | }); | 284 | }); |
287 | }, | 285 | }, |
288 | popHidden() { | 286 | popHidden() { |
@@ -292,8 +290,8 @@ export default { | @@ -292,8 +290,8 @@ export default { | ||
292 | modifyAddressAct(info) { | 290 | modifyAddressAct(info) { |
293 | if (info) { | 291 | if (info) { |
294 | let that = this; | 292 | let that = this; |
295 | - that.model.area_code = info.code; | ||
296 | - that.model.area = info.area; | 293 | + that.area_code = info.code; |
294 | + that.area = info.area; | ||
297 | } | 295 | } |
298 | }, | 296 | }, |
299 | showToast(tip) { | 297 | showToast(tip) { |
@@ -325,16 +323,17 @@ export default { | @@ -325,16 +323,17 @@ export default { | ||
325 | 323 | ||
326 | if (addressInfo.isUpdate) { | 324 | if (addressInfo.isUpdate) { |
327 | this.updateMobileNum = addressInfo.mobile; | 325 | this.updateMobileNum = addressInfo.mobile; |
328 | - this.model.consignee = addressInfo.consignee; | ||
329 | - this.model.address_id = addressInfo.address_id; | ||
330 | - this.model.mobile = addressInfo.mobile; | ||
331 | - this.model.area_code = addressInfo.area_code || addressInfo.areaCode; | ||
332 | - this.model.area = addressInfo.area; | ||
333 | - this.model.address = addressInfo.address; | ||
334 | - this.model.tag_code = addressInfo.tag_code; | ||
335 | - this.model.is_default = addressInfo.is_default === 'Y' ? true : false; | 326 | + this.consignee = addressInfo.consignee; |
327 | + this.address_id = addressInfo.address_id; | ||
328 | + this.mobile = addressInfo.mobile; | ||
329 | + this.area_code = addressInfo.area_code || addressInfo.areaCode; | ||
330 | + this.area = addressInfo.area; | ||
331 | + this.address = addressInfo.address; | ||
332 | + this.tag_code = addressInfo.tag_code || ''; | ||
333 | + this.is_default = addressInfo.is_default === 'Y' ? true : false; | ||
336 | } else { | 334 | } else { |
337 | - this.model = {}; | 335 | + // 重置data数据 |
336 | + Object.assign(this.$data, this.$options.data()); | ||
338 | } | 337 | } |
339 | } | 338 | } |
340 | }; | 339 | }; |
@@ -132,6 +132,9 @@ export default { | @@ -132,6 +132,9 @@ export default { | ||
132 | 'channelList.list': function() { | 132 | 'channelList.list': function() { |
133 | this.init(); | 133 | this.init(); |
134 | }, | 134 | }, |
135 | + 'isShow': function() { | ||
136 | + this.init(); | ||
137 | + }, | ||
135 | navList() { | 138 | navList() { |
136 | this.$nextTick(() => { | 139 | this.$nextTick(() => { |
137 | this.refreshProductList(this.active); | 140 | this.refreshProductList(this.active); |
@@ -327,12 +330,8 @@ export default { | @@ -327,12 +330,8 @@ export default { | ||
327 | if (this.navTop) { | 330 | if (this.navTop) { |
328 | if (this.scrollY >= this.navTop) { | 331 | if (this.scrollY >= this.navTop) { |
329 | this.isShow = true; | 332 | this.isShow = true; |
330 | - | ||
331 | - // this.isA = false; | ||
332 | } else { | 333 | } else { |
333 | this.isShow = false; | 334 | this.isShow = false; |
334 | - | ||
335 | - // this.isA = true; | ||
336 | } | 335 | } |
337 | } | 336 | } |
338 | }, | 337 | }, |
@@ -377,9 +377,10 @@ export default { | @@ -377,9 +377,10 @@ export default { | ||
377 | reportType: 'qiugou_buy', | 377 | reportType: 'qiugou_buy', |
378 | type: 'buy', | 378 | type: 'buy', |
379 | back: { | 379 | back: { |
380 | - name: 'ProductDetail', | 380 | + name: 'buyOrderDetail', |
381 | params: { | 381 | params: { |
382 | - productId: get(this.originProductData, 'productId', '') | 382 | + owner: 'buy', |
383 | + code: get(this.publishresult, 'orderCode', ''), | ||
383 | } | 384 | } |
384 | }, | 385 | }, |
385 | forward: { | 386 | forward: { |
@@ -224,9 +224,10 @@ export default { | @@ -224,9 +224,10 @@ export default { | ||
224 | type: UserType.buy, | 224 | type: UserType.buy, |
225 | reportType: 'buy', | 225 | reportType: 'buy', |
226 | back: { | 226 | back: { |
227 | - name: 'ProductDetail', | 227 | + name: 'buyOrderDetail', |
228 | params: { | 228 | params: { |
229 | - productId: this.productId | 229 | + owner: UserType.buy, |
230 | + code: result.data.orderCode | ||
230 | } | 231 | } |
231 | }, | 232 | }, |
232 | forward: { | 233 | forward: { |
@@ -2,15 +2,15 @@ | @@ -2,15 +2,15 @@ | ||
2 | <div class="fee-detail"> | 2 | <div class="fee-detail"> |
3 | <div class="item"> | 3 | <div class="item"> |
4 | <div>平台费用:<i class="iconfont iconquestion icon-class" @click="onClick"></i></div> | 4 | <div>平台费用:<i class="iconfont iconquestion icon-class" @click="onClick"></i></div> |
5 | - <div>{{data.platformFee.amount || '¥0'}}</div> | 5 | + <div>{{feeInfo.platformFee.amount || '¥0'}}</div> |
6 | </div> | 6 | </div> |
7 | <div class="item"> | 7 | <div class="item"> |
8 | <div>银行转账费(1%):</div> | 8 | <div>银行转账费(1%):</div> |
9 | - <div>{{data.bankTransferFee || '¥0'}}</div> | 9 | + <div>{{feeInfo.bankTransferFee || '¥0'}}</div> |
10 | </div> | 10 | </div> |
11 | <div class="item"> | 11 | <div class="item"> |
12 | <div class="total-fee">实际收入:</div> | 12 | <div class="total-fee">实际收入:</div> |
13 | - <div class="fee">{{data.income || '¥0'}}</div> | 13 | + <div class="fee">{{feeInfo.income || '¥0'}}</div> |
14 | </div> | 14 | </div> |
15 | 15 | ||
16 | <Modal ref="dialog" v-model="showModal"> | 16 | <Modal ref="dialog" v-model="showModal"> |
@@ -20,17 +20,17 @@ | @@ -20,17 +20,17 @@ | ||
20 | 20 | ||
21 | <div class="item item2"> | 21 | <div class="item item2"> |
22 | <span>商品鉴定费</span> | 22 | <span>商品鉴定费</span> |
23 | - <span>{{data.platformFee.appraiseFee}}</span> | 23 | + <span>{{feeInfo.platformFee.appraiseFee}}</span> |
24 | </div> | 24 | </div> |
25 | 25 | ||
26 | <div class="item item2"> | 26 | <div class="item item2"> |
27 | <span>商品包装费</span> | 27 | <span>商品包装费</span> |
28 | - <span>{{data.platformFee.packageFee}}</span> | 28 | + <span>{{feeInfo.platformFee.packageFee}}</span> |
29 | </div> | 29 | </div> |
30 | 30 | ||
31 | <div class="item item2"> | 31 | <div class="item item2"> |
32 | - <span>平台服务费({{data.platformFee.goodsPaymentRatePercent}})</span> | ||
33 | - <span>{{data.platformFee.serviceFee}}</span> | 32 | + <span>平台服务费({{feeInfo.platformFee.goodsPaymentRatePercent}})</span> |
33 | + <span>{{feeInfo.platformFee.serviceFee}}</span> | ||
34 | </div> | 34 | </div> |
35 | 35 | ||
36 | <template slot="footer"> | 36 | <template slot="footer"> |
@@ -58,7 +58,8 @@ export default { | @@ -58,7 +58,8 @@ export default { | ||
58 | data() { | 58 | data() { |
59 | return { | 59 | return { |
60 | confirmBtn: {}, | 60 | confirmBtn: {}, |
61 | - showModal: false | 61 | + showModal: false, |
62 | + feeInfo: this.$props.data || {platformFee: {}} | ||
62 | }; | 63 | }; |
63 | }, | 64 | }, |
64 | components: { | 65 | components: { |
@@ -67,7 +68,7 @@ export default { | @@ -67,7 +68,7 @@ export default { | ||
67 | }, | 68 | }, |
68 | methods: { | 69 | methods: { |
69 | onClick() { | 70 | onClick() { |
70 | - if (!this.data.income) { | 71 | + if (!this.feeInfo.income) { |
71 | return this.$createToast({ | 72 | return this.$createToast({ |
72 | txt: '没有价格', | 73 | txt: '没有价格', |
73 | time: 1500, | 74 | time: 1500, |
1 | <template> | 1 | <template> |
2 | <div> | 2 | <div> |
3 | - <div class="tip" v-if="!superSell">需支付保证金:<span class="red">{{data.earnestMoneyStr || '¥0'}}</span><i v-if="!hiddenIcon" | ||
4 | - class="iconfont iconquestion icon-class" | ||
5 | - @click="onClick"></i></div> | ||
6 | - <div class="tip2">所有商品必须为国内现货,且承诺36小时内发货,交易成功后将自动退还保证金</div> | 3 | + <div class="tip" v-if="!superSell"> |
4 | + 需支付保证金:<span class="red">{{ earnestInfo.earnestMoneyStr || "¥0" }}</span> | ||
5 | + <i | ||
6 | + v-if="!hiddenIcon" | ||
7 | + class="iconfont iconquestion icon-class" | ||
8 | + @click="onClick" | ||
9 | + ></i> | ||
10 | + </div> | ||
11 | + <div class="tip2"> | ||
12 | + 所有商品必须为国内现货,且承诺36小时内发货,交易成功后将自动退还保证金 | ||
13 | + </div> | ||
7 | </div> | 14 | </div> |
8 | </template> | 15 | </template> |
9 | 16 | ||
10 | <script> | 17 | <script> |
11 | export default { | 18 | export default { |
12 | - name: 'OrderFee', | 19 | + name: "OrderFee", |
13 | props: { | 20 | props: { |
14 | data: { | 21 | data: { |
15 | type: Object, | 22 | type: Object, |
@@ -31,13 +38,18 @@ export default { | @@ -31,13 +38,18 @@ export default { | ||
31 | }, | 38 | }, |
32 | url: { | 39 | url: { |
33 | type: String, | 40 | type: String, |
34 | - default: '' | 41 | + default: "" |
42 | + } | ||
43 | + }, | ||
44 | + data() { | ||
45 | + return { | ||
46 | + earnestInfo: this.$props.data || {} | ||
35 | } | 47 | } |
36 | }, | 48 | }, |
37 | methods: { | 49 | methods: { |
38 | onClick() { | 50 | onClick() { |
39 | if (this.url) { | 51 | if (this.url) { |
40 | - this.$xianyu.goXianyuNewPage({url: this.url}); | 52 | + this.$xianyu.goXianyuNewPage({ url: this.url }); |
41 | } | 53 | } |
42 | } | 54 | } |
43 | } | 55 | } |
1 | <template> | 1 | <template> |
2 | - <layout-app class="address-wrapper" title="商品回寄地址"> | ||
3 | - <SellOrderAddress :isOnlyShowBack="true" /> | 2 | + <layout-app title="商品回寄地址"> |
3 | + <div class="address-wrapper"> | ||
4 | + <SellOrderAddress :isOnlyShowBack="true" /> | ||
5 | + </div> | ||
4 | </layout-app> | 6 | </layout-app> |
5 | </template> | 7 | </template> |
6 | 8 |
@@ -20,6 +20,7 @@ export default [ | @@ -20,6 +20,7 @@ export default [ | ||
20 | orderCode: route.query.orderCode, | 20 | orderCode: route.query.orderCode, |
21 | payParams: route.query.payParams, | 21 | payParams: route.query.payParams, |
22 | extra: route.query.extra, | 22 | extra: route.query.extra, |
23 | + price: route.query.price | ||
23 | }), | 24 | }), |
24 | }, | 25 | }, |
25 | { | 26 | { |
@@ -3,7 +3,6 @@ | @@ -3,7 +3,6 @@ | ||
3 | <layout-app | 3 | <layout-app |
4 | :title="'\u200E'" | 4 | :title="'\u200E'" |
5 | class="buyer-order-detail-wrapper" | 5 | class="buyer-order-detail-wrapper" |
6 | - :backAction="onBack" | ||
7 | > | 6 | > |
8 | <div class="order-detail-wrapper"> | 7 | <div class="order-detail-wrapper"> |
9 | <div class="content"> | 8 | <div class="content"> |
@@ -3,7 +3,6 @@ | @@ -3,7 +3,6 @@ | ||
3 | <layout-app | 3 | <layout-app |
4 | :title="'\u200E'" | 4 | :title="'\u200E'" |
5 | class="seller-order-detail-wrapper" | 5 | class="seller-order-detail-wrapper" |
6 | - :backAction="onBack" | ||
7 | > | 6 | > |
8 | <div class="order-detail-wrapper"> | 7 | <div class="order-detail-wrapper"> |
9 | <div class="content"> | 8 | <div class="content"> |
@@ -22,7 +22,7 @@ const { mapActions: mapOrderAction } = createNamespacedHelpers('order/orderConfi | @@ -22,7 +22,7 @@ const { mapActions: mapOrderAction } = createNamespacedHelpers('order/orderConfi | ||
22 | 22 | ||
23 | export default { | 23 | export default { |
24 | name: 'PayPage', | 24 | name: 'PayPage', |
25 | - props: ['orderCode', 'payParams', 'extra'], | 25 | + props: ['orderCode', 'payParams', 'extra', 'price'], |
26 | data() { | 26 | data() { |
27 | return { | 27 | return { |
28 | count: 60, | 28 | count: 60, |
@@ -68,10 +68,14 @@ export default { | @@ -68,10 +68,14 @@ export default { | ||
68 | if (this.page.forward) { | 68 | if (this.page.forward) { |
69 | this.$router.replace(this.page.forward); | 69 | this.$router.replace(this.page.forward); |
70 | } | 70 | } |
71 | + | ||
72 | + this.paySuccess(); | ||
71 | }, () => { | 73 | }, () => { |
72 | if (this.page.back) { | 74 | if (this.page.back) { |
73 | this.$router.replace(this.page.back); | 75 | this.$router.replace(this.page.back); |
74 | } | 76 | } |
77 | + | ||
78 | + this.payError(); | ||
75 | }); | 79 | }); |
76 | } else { | 80 | } else { |
77 | const url = config.alipayUrl + '?' + this.payParams; | 81 | const url = config.alipayUrl + '?' + this.payParams; |
@@ -175,6 +179,77 @@ export default { | @@ -175,6 +179,77 @@ export default { | ||
175 | break; | 179 | break; |
176 | } | 180 | } |
177 | } | 181 | } |
182 | + }, | ||
183 | + | ||
184 | + appOp() { | ||
185 | + switch (this.page.reportType) { | ||
186 | + case 'sell': { | ||
187 | + return { | ||
188 | + pay: 'XY_UFO_SALE_PAY', | ||
189 | + result: 'XY_UFO_SALE_PAY_RES', | ||
190 | + type: 1, | ||
191 | + }; | ||
192 | + } | ||
193 | + case 'buy': { | ||
194 | + return { | ||
195 | + pay: 'XY_UFO_SALE_PAY', | ||
196 | + result: 'XY_UFO_SALE_PAY_RES', | ||
197 | + type: 2, | ||
198 | + }; | ||
199 | + } | ||
200 | + case 'qiugou_buy': { | ||
201 | + return { | ||
202 | + pay: 'XY_UFO_SALE_PAY', | ||
203 | + result: 'XY_UFO_SALE_PAY_RES', | ||
204 | + type: 3 | ||
205 | + }; | ||
206 | + } | ||
207 | + case 'bianxian': { | ||
208 | + return { | ||
209 | + pay: 'XY_UFO_SALE_PAY', | ||
210 | + result: 'XY_UFO_SALE_PAY_RES', | ||
211 | + type: 4 | ||
212 | + }; | ||
213 | + } | ||
214 | + default: { | ||
215 | + // PASS | ||
216 | + return { | ||
217 | + pay: 'XY_UFO_SALE_PAY', | ||
218 | + result: 'XY_UFO_SALE_PAY_RES' | ||
219 | + }; | ||
220 | + } | ||
221 | + } | ||
222 | + }, | ||
223 | + | ||
224 | + paySuccess() { | ||
225 | + //数据埋点 | ||
226 | + this.$store.dispatch('reportYas', { | ||
227 | + params: { | ||
228 | + appop: this.appOp().result, | ||
229 | + param: { | ||
230 | + ORD_NUM: this.orderCode, | ||
231 | + PAY_TYPE: 1, | ||
232 | + PAY_RES: 1, | ||
233 | + ORDER_AMOUNT: this.price, | ||
234 | + ORD_TYPE: this.appOp().type | ||
235 | + }, | ||
236 | + }, | ||
237 | + }); | ||
238 | + }, | ||
239 | + payError() { | ||
240 | + //数据埋点 | ||
241 | + this.$store.dispatch('reportYas', { | ||
242 | + params: { | ||
243 | + appop: this.appOp().result, | ||
244 | + param: { | ||
245 | + ORD_NUM: this.orderCode, | ||
246 | + PAY_TYPE: 1, //1支付宝支付,2微信支付 | ||
247 | + PAY_RES: 0, //0支付失败,1支付成功 | ||
248 | + ORDER_AMOUNT: this.price, | ||
249 | + ORD_TYPE: this.appOp().type | ||
250 | + }, | ||
251 | + }, | ||
252 | + }); | ||
178 | } | 253 | } |
179 | } | 254 | } |
180 | }; | 255 | }; |
@@ -48,7 +48,16 @@ export default { | @@ -48,7 +48,16 @@ export default { | ||
48 | border-color: #f5f5f5; | 48 | border-color: #f5f5f5; |
49 | } | 49 | } |
50 | 50 | ||
51 | + /deep/ input::-webkit-input-placeholder { | ||
52 | + font-size: 0.9rem; | ||
53 | + padding: 0.2rem; | ||
54 | + bottom: 0.4rem; | ||
55 | + } | ||
56 | + | ||
51 | /deep/ .cube-input-field { | 57 | /deep/ .cube-input-field { |
58 | + font-family: "DINAlternate-Bold", "ufofont", "PingFang-SC-Regular", sans-serif; | ||
59 | + padding: 0.25rem; | ||
60 | + font-size: 1rem; | ||
52 | color: #000; | 61 | color: #000; |
53 | } | 62 | } |
54 | } | 63 | } |
@@ -142,7 +142,7 @@ export default { | @@ -142,7 +142,7 @@ export default { | ||
142 | this.sellerPublish({price: this.price, skup: this.skup, address_id: this.addressInfo.address_id}) | 142 | this.sellerPublish({price: this.price, skup: this.skup, address_id: this.addressInfo.address_id}) |
143 | .then((res) => { | 143 | .then((res) => { |
144 | 144 | ||
145 | - if (res && res.code && res.code == 200) { | 145 | + if (res && res.code && res.code === 200) { |
146 | this.$createToast({ | 146 | this.$createToast({ |
147 | time: 1000, | 147 | time: 1000, |
148 | type: 'txt', | 148 | type: 'txt', |
@@ -169,7 +169,7 @@ export default { | @@ -169,7 +169,7 @@ export default { | ||
169 | this.sellerPublish({price: this.price, skup: this.skup, address_id: this.addressInfo.address_id}) | 169 | this.sellerPublish({price: this.price, skup: this.skup, address_id: this.addressInfo.address_id}) |
170 | .then((res) => { | 170 | .then((res) => { |
171 | 171 | ||
172 | - if (res && res.code && res.code == 200) { | 172 | + if (res && res.code && res.code === 200) { |
173 | this.payOrder(); | 173 | this.payOrder(); |
174 | } else { | 174 | } else { |
175 | this.$createToast({ | 175 | this.$createToast({ |
@@ -177,25 +177,26 @@ export default { | @@ -177,25 +177,26 @@ export default { | ||
177 | type: 'txt', | 177 | type: 'txt', |
178 | txt: res.message | 178 | txt: res.message |
179 | }).show(); | 179 | }).show(); |
180 | - | ||
181 | } | 180 | } |
182 | 181 | ||
183 | }); | 182 | }); |
184 | } | 183 | } |
185 | - | ||
186 | }, | 184 | }, |
187 | payOrder() { | 185 | payOrder() { |
188 | let vm = this; | 186 | let vm = this; |
187 | + | ||
189 | this.$createOrderPayType({ | 188 | this.$createOrderPayType({ |
190 | price: get(this.computeTip, 'earnestMoney', 0), | 189 | price: get(this.computeTip, 'earnestMoney', 0), |
191 | desc: '保证金', | 190 | desc: '保证金', |
192 | orderCode: get(this.publishinfo, 'orderCode', ''), | 191 | orderCode: get(this.publishinfo, 'orderCode', ''), |
193 | extra: JSON.stringify({ | 192 | extra: JSON.stringify({ |
194 | type: 'sell', | 193 | type: 'sell', |
194 | + reportType: 'bianxian', | ||
195 | back: { | 195 | back: { |
196 | - name: 'ProductDetail', | 196 | + name: 'sellOrderDetail', |
197 | params: { | 197 | params: { |
198 | - productId: get(this.originProductData, 'productId', '') | 198 | + owner: 'sell', |
199 | + code: get(this.publishinfo, 'orderCode', '') | ||
199 | } | 200 | } |
200 | }, | 201 | }, |
201 | forward: { | 202 | forward: { |
@@ -209,6 +210,12 @@ export default { | @@ -209,6 +210,12 @@ export default { | ||
209 | vm.onClose(get(this.publishinfo, 'orderCode', '')); | 210 | vm.onClose(get(this.publishinfo, 'orderCode', '')); |
210 | } | 211 | } |
211 | }).show(); | 212 | }).show(); |
213 | + | ||
214 | + this.reportYas('XY_UFO_CASH_ORD', { | ||
215 | + ORD_NUM: get(this.publishinfo, 'orderCode', ''), | ||
216 | + PRD_ID: get(this.originProductData, 'productId', ''), | ||
217 | + PRD_SKU: this.skup | ||
218 | + }); | ||
212 | }, | 219 | }, |
213 | 220 | ||
214 | showToast() { | 221 | showToast() { |
@@ -352,12 +352,6 @@ export default { | @@ -352,12 +352,6 @@ export default { | ||
352 | return; | 352 | return; |
353 | } | 353 | } |
354 | 354 | ||
355 | - this.reportYas('XY_UFO_SALE_ORD', { | ||
356 | - ORD_NUM: orderResult.code.orderCode, | ||
357 | - PRD_ID: this.productDetail.productId, | ||
358 | - PRD_SKU: this.productDetail.skup | ||
359 | - }); | ||
360 | - | ||
361 | // 从定金中走了钱,不用支付宝 | 355 | // 从定金中走了钱,不用支付宝 |
362 | if (orderResult.data.orderCode === 0) { | 356 | if (orderResult.data.orderCode === 0) { |
363 | this.$createToast({ | 357 | this.$createToast({ |
@@ -386,9 +380,10 @@ export default { | @@ -386,9 +380,10 @@ export default { | ||
386 | type: UserType.sell, | 380 | type: UserType.sell, |
387 | reportType: 'sell', | 381 | reportType: 'sell', |
388 | back: { | 382 | back: { |
389 | - name: 'ProductDetail', | 383 | + name: 'sellOrderDetail', |
390 | params: { | 384 | params: { |
391 | - productId: this.productId | 385 | + owner: UserType.sell, |
386 | + code: orderResult.data.orderCode | ||
392 | } | 387 | } |
393 | }, | 388 | }, |
394 | forward: { | 389 | forward: { |
@@ -402,6 +397,12 @@ export default { | @@ -402,6 +397,12 @@ export default { | ||
402 | vm.onClose(orderResult.data.orderCode); | 397 | vm.onClose(orderResult.data.orderCode); |
403 | } | 398 | } |
404 | }).show(); | 399 | }).show(); |
400 | + | ||
401 | + this.reportYas('XY_UFO_SALE_ORD', { | ||
402 | + ORD_NUM: orderResult.data.orderCode, | ||
403 | + PRD_ID: this.productDetail.productId, | ||
404 | + PRD_SKU: this.productDetail.skup | ||
405 | + }); | ||
405 | }, | 406 | }, |
406 | onClose(orderCode) { | 407 | onClose(orderCode) { |
407 | this.$router.replace({ | 408 | this.$router.replace({ |
1 | <template> | 1 | <template> |
2 | <layout-app title="商品列表" class="brand-product-list"> | 2 | <layout-app title="商品列表" class="brand-product-list"> |
3 | - <div class="scroll-view" ref="scroll"> | 3 | + <LayoutScroll |
4 | + class="scroll-view" | ||
5 | + @scroll-end="scrollEndHandler"> | ||
4 | <div class="list-wrapper" v-if="brandProductList != null"> | 6 | <div class="list-wrapper" v-if="brandProductList != null"> |
5 | - <product-list :list="brandProductList" priceKey="price"/> | 7 | + <product-list ref="productList" :list="brandProductList" priceKey="price" :yas-params="recommendYasParams"/> |
6 | </div> | 8 | </div> |
7 | - </div> | 9 | + </LayoutScroll> |
8 | </layout-app> | 10 | </layout-app> |
9 | </template> | 11 | </template> |
10 | 12 | ||
@@ -14,7 +16,7 @@ import ScrollView from 'components/layout/scroll-view'; | @@ -14,7 +16,7 @@ import ScrollView from 'components/layout/scroll-view'; | ||
14 | import ProductList from '../list/components/productList'; | 16 | import ProductList from '../list/components/productList'; |
15 | 17 | ||
16 | const STORE_PATH = 'product'; | 18 | const STORE_PATH = 'product'; |
17 | -const { mapActions, mapState } = createNamespacedHelpers(STORE_PATH); | 19 | +const { mapState } = createNamespacedHelpers(STORE_PATH); |
18 | 20 | ||
19 | export default { | 21 | export default { |
20 | name: 'BrandProductList', | 22 | name: 'BrandProductList', |
@@ -35,6 +37,18 @@ export default { | @@ -35,6 +37,18 @@ export default { | ||
35 | observeDOM: false, | 37 | observeDOM: false, |
36 | pullUpLoad: false, | 38 | pullUpLoad: false, |
37 | }, | 39 | }, |
40 | + | ||
41 | + /** | ||
42 | + * 商品详情页-推荐商品曝光时 | ||
43 | + * XY_UFO_SHOW_EVENT | ||
44 | + * 1.P_NAME:页面名称,UFOProductDetail_LIST; | ||
45 | + * 2.P_PARAM:页面参数; | ||
46 | + * 3.I_INDEX:曝光顺序; | ||
47 | + * 4.PRD_SKN:商品id; | ||
48 | + */ | ||
49 | + recommendYasParams: { | ||
50 | + P_NAME: 'UFOProductDetail_LIST', | ||
51 | + }, | ||
38 | }; | 52 | }; |
39 | }, | 53 | }, |
40 | computed: { | 54 | computed: { |
@@ -52,9 +66,10 @@ export default { | @@ -52,9 +66,10 @@ export default { | ||
52 | } | 66 | } |
53 | }, | 67 | }, |
54 | methods: { | 68 | methods: { |
55 | - ...mapActions(['fetchBrandTop']), | ||
56 | - onPullingDown() { | ||
57 | - this.fetchBrandTop({productId: this.productId}); | 69 | + scrollEndHandler({y}) { |
70 | + const scrollTop = Math.abs(y); | ||
71 | + | ||
72 | + this.$refs.productList && this.$refs.productList.yasShowEvent(scrollTop); | ||
58 | }, | 73 | }, |
59 | }, | 74 | }, |
60 | }; | 75 | }; |
@@ -9,7 +9,7 @@ | @@ -9,7 +9,7 @@ | ||
9 | </div> | 9 | </div> |
10 | <div class="product"> | 10 | <div class="product"> |
11 | <div> | 11 | <div> |
12 | - <template v-if="product.least_price >= 0"> ¥{{product.least_price}}</template> | 12 | + <template v-if="selectedPrice != null && selectedPrice >= 0"> ¥{{selectedPrice}}</template> |
13 | <template v-else> </template> | 13 | <template v-else> </template> |
14 | </div> | 14 | </div> |
15 | <div> | 15 | <div> |
@@ -89,6 +89,23 @@ export default { | @@ -89,6 +89,23 @@ export default { | ||
89 | 89 | ||
90 | return {}; | 90 | return {}; |
91 | }, | 91 | }, |
92 | + selectedPrice() { | ||
93 | + let price = this.product.least_price; | ||
94 | + | ||
95 | + if (this.config.type === 'sell') { | ||
96 | + return price; | ||
97 | + } | ||
98 | + | ||
99 | + if (this.selectedSize.size_id > 0) { | ||
100 | + if (this.selectedSize.least_price > 0) { | ||
101 | + price = this.selectedSize.least_price; | ||
102 | + } else { | ||
103 | + price = '-'; | ||
104 | + } | ||
105 | + } | ||
106 | + | ||
107 | + return price; | ||
108 | + }, | ||
92 | goods_name() { | 109 | goods_name() { |
93 | return get(this.product, 'goods_list[0].goods_name', ''); | 110 | return get(this.product, 'goods_list[0].goods_name', ''); |
94 | }, | 111 | }, |
@@ -201,6 +218,23 @@ export default { | @@ -201,6 +218,23 @@ export default { | ||
201 | bid_moster_price: get(this.selectedSize, 'bid_moster_price', ''), | 218 | bid_moster_price: get(this.selectedSize, 'bid_moster_price', ''), |
202 | }); | 219 | }); |
203 | 220 | ||
221 | + /** | ||
222 | + * 数据埋点 | ||
223 | + * 商品详情页点击出售/购买/求购按钮 | ||
224 | + * event: XY_UFO_PRD_DT_SALE_C | ||
225 | + * params: 1.TAB_ID:1-出售,2-购买,3-求购, 4-变现; | ||
226 | + * 2.PRD_ID:商品ID; | ||
227 | + */ | ||
228 | + this.$store.dispatch('reportYas', { | ||
229 | + params: { | ||
230 | + appop: 'XY_UFO_PRD_DT_BUY_SEL_C', | ||
231 | + param: { | ||
232 | + TAB_ID: 4, | ||
233 | + PRD_ID: this.product.product_id, | ||
234 | + }, | ||
235 | + } | ||
236 | + }); | ||
237 | + | ||
204 | // 跳转变现 | 238 | // 跳转变现 |
205 | this.$router.push({ | 239 | this.$router.push({ |
206 | name: 'sellAskOrder', | 240 | name: 'sellAskOrder', |
@@ -14,7 +14,7 @@ export default { | @@ -14,7 +14,7 @@ export default { | ||
14 | return this.productDetail.goods_list[0].image_list; | 14 | return this.productDetail.goods_list[0].image_list; |
15 | }, | 15 | }, |
16 | resource() { | 16 | resource() { |
17 | - return this.productDetail.resource; | 17 | + return this.productDetail.resource || {}; |
18 | }, | 18 | }, |
19 | activity() { | 19 | activity() { |
20 | return this.productDetail.activity; | 20 | return this.productDetail.activity; |
1 | <template> | 1 | <template> |
2 | <div class="layout"> | 2 | <div class="layout"> |
3 | - <LayoutHeader class="layout-header" :show-back="true" :title="'\u200E'"></LayoutHeader> | 3 | + <LayoutHeader class="layout-header" :show-back="true" title="商品详情"></LayoutHeader> |
4 | <div class="layout-context fixscroll"> | 4 | <div class="layout-context fixscroll"> |
5 | <LayoutScroll | 5 | <LayoutScroll |
6 | ref="pageScroll" | 6 | ref="pageScroll" |
@@ -30,7 +30,7 @@ | @@ -30,7 +30,7 @@ | ||
30 | </div> | 30 | </div> |
31 | <div class="info-name"><div>{{productDetail.product_name}}</div></div> | 31 | <div class="info-name"><div>{{productDetail.product_name}}</div></div> |
32 | </div> | 32 | </div> |
33 | - <a class="banner" v-show="resource" @click.prevent="gotoNewPage"> | 33 | + <a class="banner" v-if="resource.src" @click.prevent="gotoNewPage"> |
34 | <img-size ref="resourceImg" :src="sizeImg(resource.src)"/> | 34 | <img-size ref="resourceImg" :src="sizeImg(resource.src)"/> |
35 | </a> | 35 | </a> |
36 | <div class="info"> | 36 | <div class="info"> |
@@ -47,7 +47,8 @@ | @@ -47,7 +47,8 @@ | ||
47 | <div class="info-list-value">{{desc.value}}</div> | 47 | <div class="info-list-value">{{desc.value}}</div> |
48 | </div> | 48 | </div> |
49 | </transition-group> | 49 | </transition-group> |
50 | - <top-list v-if="topList && topList.length !== 0" :list="topList" @itemClick="gotoProduct" @allClick="gotoBrand" /> | 50 | + <!-- 相关商品 --> |
51 | + <top-list ref="topList" v-if="topList && topList.length !== 0" :list="topList" @itemClick="gotoProduct" @allClick="gotoBrand" /> | ||
51 | <img class="ref-img" v-lazy="prdDetailTip"/> | 52 | <img class="ref-img" v-lazy="prdDetailTip"/> |
52 | </div> | 53 | </div> |
53 | 54 | ||
@@ -304,7 +305,30 @@ export default { | @@ -304,7 +305,30 @@ export default { | ||
304 | }, | 305 | }, |
305 | scrollEndHandler({y}) { | 306 | scrollEndHandler({y}) { |
306 | const scrollTop = Math.abs(y); | 307 | const scrollTop = Math.abs(y); |
308 | + const pageScrollHeight = this.$refs.pageScroll.$el.offsetHeight; | ||
307 | 309 | ||
310 | + // 相关商品 | ||
311 | + if (!this._topListYas && this.$refs.topList) { | ||
312 | + if (this._topListTop === undefined) { | ||
313 | + this._topListTop = this.$refs.topList.$el.offsetTop; | ||
314 | + } | ||
315 | + | ||
316 | + if (scrollTop < this._topListTop && (scrollTop + pageScrollHeight) > this._topListTop) { | ||
317 | + const DATA = this.topList.slice(0, 3).map((value, i) => { | ||
318 | + return {...this.recommendYasParams, I_INDEX: i, PRD_ID: value.id, PRD_SKN: value.id}; | ||
319 | + }); | ||
320 | + | ||
321 | + this.$store.dispatch('reportYas', { | ||
322 | + params: { | ||
323 | + param: {DATA}, | ||
324 | + appop: 'XY_UFO_SHOW_EVENT' | ||
325 | + } | ||
326 | + }); | ||
327 | + this._topListYas = true; | ||
328 | + } | ||
329 | + } | ||
330 | + | ||
331 | + // 推荐商品 | ||
308 | if (this._productItemHeight === undefined) { | 332 | if (this._productItemHeight === undefined) { |
309 | let item = document.querySelector('.product-list-item'); | 333 | let item = document.querySelector('.product-list-item'); |
310 | 334 | ||
@@ -313,12 +337,13 @@ export default { | @@ -313,12 +337,13 @@ export default { | ||
313 | } | 337 | } |
314 | } | 338 | } |
315 | 339 | ||
316 | - const listTop = this.$refs.recommendList.$el.offsetTop; | 340 | + if (this.$refs.recommendList) { |
341 | + const listTop = this.$refs.recommendList.$el.offsetTop; | ||
342 | + const productListScrollTop = scrollTop + pageScrollHeight - listTop - this._productItemHeight; | ||
317 | 343 | ||
318 | - const productListScrollTop = scrollTop + this.$refs.pageScroll.$el.offsetHeight - listTop - this._productItemHeight; | ||
319 | - | ||
320 | - if (productListScrollTop > 0) { | ||
321 | - this.$refs.recommendList.yasShowEvent(productListScrollTop); | 344 | + if (productListScrollTop > 0) { |
345 | + this.$refs.recommendList.yasShowEvent(productListScrollTop); | ||
346 | + } | ||
322 | } | 347 | } |
323 | }, | 348 | }, |
324 | yasResourceVisible() { | 349 | yasResourceVisible() { |
@@ -27,7 +27,7 @@ export default { | @@ -27,7 +27,7 @@ export default { | ||
27 | 27 | ||
28 | let [detail, resource, activity, recommend] = await Promise.all(queryTasks); | 28 | let [detail, resource, activity, recommend] = await Promise.all(queryTasks); |
29 | 29 | ||
30 | - resource = get(resource, '[0].data[0]', null); | 30 | + resource = get(resource, '[0].data[0]', {}); |
31 | 31 | ||
32 | commit(Types.UPDATE_PRODUCT_DETAIL, Object.assign(detail.product_info, { | 32 | commit(Types.UPDATE_PRODUCT_DETAIL, Object.assign(detail.product_info, { |
33 | resource, | 33 | resource, |
1 | import Vue from 'vue'; | 1 | import Vue from 'vue'; |
2 | +import cookie from 'yoho-cookie'; | ||
3 | +import xianyu from '../common/xianyu'; | ||
2 | 4 | ||
3 | const setWindowSize = (store) => { | 5 | const setWindowSize = (store) => { |
4 | const { clientWidth, clientHeight } = document.body; | 6 | const { clientWidth, clientHeight } = document.body; |
@@ -36,6 +38,44 @@ const initClient = (store) => { | @@ -36,6 +38,44 @@ const initClient = (store) => { | ||
36 | img.src = 'data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA'; | 38 | img.src = 'data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA'; |
37 | }; | 39 | }; |
38 | 40 | ||
41 | +function getUdid() { | ||
42 | + return cookie.get('udid') || ''; | ||
43 | +} | ||
44 | + | ||
45 | +window.appBaseLogs = { | ||
46 | + status: [ | ||
47 | + { | ||
48 | + ca: '', | ||
49 | + lo: '', | ||
50 | + cy: 'CN', | ||
51 | + av: '', | ||
52 | + udid: getUdid(), | ||
53 | + ln: '', | ||
54 | + ab: '', | ||
55 | + sid: '', | ||
56 | + net: '', | ||
57 | + la: '' | ||
58 | + } | ||
59 | + ], | ||
60 | + device: { | ||
61 | + res: '', | ||
62 | + ifa: '', | ||
63 | + mac: '', | ||
64 | + osv: '', | ||
65 | + ifv: '', | ||
66 | + ps: '', | ||
67 | + os: xianyu.isiOS ? 'iOS' : 'android', | ||
68 | + ak: 'yoho-xianyu_' + (xianyu.isiOS ? 'iOS' : 'android'), | ||
69 | + sv: '', | ||
70 | + ch: '', | ||
71 | + dm: '', | ||
72 | + tdid: '', | ||
73 | + afp: '', | ||
74 | + udid: getUdid() | ||
75 | + }, | ||
76 | + events: [{}] | ||
77 | +}; | ||
78 | + | ||
39 | export { | 79 | export { |
40 | initClient | 80 | initClient |
41 | }; | 81 | }; |
@@ -121,8 +121,6 @@ | @@ -121,8 +121,6 @@ | ||
121 | s.parentNode.insertBefore(hm, s); | 121 | s.parentNode.insertBefore(hm, s); |
122 | })(); | 122 | })(); |
123 | }()); | 123 | }()); |
124 | - | ||
125 | - window.appBaseLogs = {events: [{}], device: {ak: '', udid: ''}, status: [{av: '', udid: '', sid: ''}]}; | ||
126 | }, 500); | 124 | }, 500); |
127 | 125 | ||
128 | </script> | 126 | </script> |
1 | { | 1 | { |
2 | "name": "xianyu-ufo-app-web", | 2 | "name": "xianyu-ufo-app-web", |
3 | - "version": "0.0.1-beta-39", | 3 | + "version": "0.0.1-beta-40", |
4 | "private": true, | 4 | "private": true, |
5 | "description": "Xianyu Project With Express", | 5 | "description": "Xianyu Project With Express", |
6 | "repository": { | 6 | "repository": { |
-
Please register or login to post a comment