Authored by huangyCode

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

@@ -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}`,
@@ -169,8 +169,6 @@ @@ -169,8 +169,6 @@
169 }); 169 });
170 } 170 }
171 })(); 171 })();
172 -  
173 - window.appBaseLogs = {events: [{}], device: {ak: '', udid: ''}, status: [{av: '', udid: '', sid: ''}]};  
174 </script> 172 </script>
175 </body> 173 </body>
176 </html> 174 </html>
@@ -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 };
@@ -115,7 +115,7 @@ export default { @@ -115,7 +115,7 @@ export default {
115 } 115 }
116 } 116 }
117 .account-footer { 117 .account-footer {
118 - position: absolute; 118 + position: fixed;
119 padding: 28px 0; 119 padding: 28px 0;
120 left: 40px; 120 left: 40px;
121 right: 40px; 121 right: 40px;
@@ -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">
@@ -18,7 +18,6 @@ const routers = [ @@ -18,7 +18,6 @@ const routers = [
18 }; 18 };
19 }, 19 },
20 beforeEnter: (to, from, next) => { 20 beforeEnter: (to, from, next) => {
21 - // ...  
22 next(); 21 next();
23 }, 22 },
24 }, 23 },
@@ -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 };
@@ -275,6 +275,7 @@ export default { @@ -275,6 +275,7 @@ export default {
275 height: 0; 275 height: 0;
276 padding-bottom: 100%; 276 padding-bottom: 100%;
277 position: relative; 277 position: relative;
  278 + box-sizing: border-box;
278 } 279 }
279 280
280 .size { 281 .size {
@@ -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>&nbsp;</template> 13 <template v-else>&nbsp;</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": {