金诚优选前端代码
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

458 lines
11 KiB

<template>
<view>
<view class="bargain_contanier">
<view class="bargain_head">
<image mode="widthFix" src="https://cdn.ibrand.cc/heads%20%281%29.png"></image>
</view>
<view class="rule" @tap="changeRule">
活动规则
</view>
<view class="body_box">
<view class="bargain_body" v-for="(items,idx) in list" :key="idx">
<view v-for="(item,index) in items" :key="index">
<view class="bargain_goods">
<view class="goods_left">
<image mode="widthFix" :src="item.goods.img"></image>
</view>
<view class="goods_right">
<view class="goods_name">{{item.goods.name}}</view>
<view class="number">剩余{{item.store_nums}}砍价名额</view>
<view class="past_price">原价 <span>{{item.goods.max_price}}</span></view>
<view class="right_foot">
<view class="new_price">
砍后价{{item.price}}
</view>
<!-- #ifdef MP-WEIXIN -->
<view class="btn" @tap.native.stop="clickBargain" :data-id="item.id">
发起砍价
</view>
<button class="bind-btn" open-type="getUserInfo" @getuserinfo="bindUserInfo" style="opacity: 0;" v-if="token && !user_info_fill">
</button>
<!-- #endif -->
<!-- #ifdef APP-PLUS ||H5 -->
<view class="btn" @tap="clickBargain" :data-id="item.id">
发起砍价
</view>
<!-- #endif -->
</view>
</view>
</view>
</view>
</view>
</view>
<view class="box_body" v-if="show" @tap.stop="changeRule" @touchmove.stop="true">
<scroll-view scroll-y class="rule_box">
<text>{{rule}}</text>
</scroll-view>
<view class="iconfont icon-close" @tap.stop="changeRule"></view>
</view>
</view>
</view>
</template>
<script>
import uParse from '@/components/gaoyia-parse/parse.vue';
import {
pageLogin,
getUrl,
config,
is
} from '@/common/js/utils.js';
export default {
components: {
uParse
},
data() {
return {
show: false,
rule: '京东方公安三季度非附近的双方各见风使舵公开',
list: [],
prices: [],
page: 1,
more: true,
user_info_fill:0,//用户是否完善信息
token:''
}
},
onLoad(e){
// #ifdef H5
var token = this.$cookieStorage.get('user_token');
if(!token){
var env = {
isIPad: /ipad/i.test(window.navigator.userAgent),
isIphone: /iphone|ipad|ipod/i.test(window.navigator.userAgent),
isWechat: /MicroMessenger/i.test(window.navigator.userAgent)
}
if(env.isWechat){
if(e.openid){
this.$cookieStorage.set('openid',e.openid)
}
var openid = this.$cookieStorage.get('openid') || e.openid;
if(openid){
this.postNewQuickLogin(openid);
} else{
let origin = window.location.origin;
var url = origin+'/pages/bargain/index/index';
window.location.href = this.$config.GLOBAL.baseUrl+'oauth/wxOauth?redirect_url='+encodeURIComponent(url);
}
} else{
let url = getUrl();
wx.navigateTo({
url:'/pages/user/loginType/loginType?url='+url
})
}
}
// #endif
var windowHeight = wx.getSystemInfoSync().windowHeight //获取设备的高度
var token = this.$cookieStorage.get('user_token');
this.token = token;
this.Height = windowHeight;
this.getReduceList(1);
this.getHelpText();
if(token){
this.getUserInfo()
}
},
//下拉刷新
onReachBottom(){
if(this.more){
let page = this.page + 1;
this.getReduceList(page);
} else {
wx.showToast({
image: '../../../static/error.png',
title: '再拉也没有啦'
});
}
},
methods: {
//h5微信登陆
postNewQuickLogin(open_id){
wx.showLoading({
title: '正在登录',
mask: true
});
this.$http.post({
api:'api/oauth/newQuickLogin',
data:{
open_id:open_id
}
}).then(res=>{
res = res.data;
if(res.status){
if(res.data.access_token){
var access_token = res.data.token_type + ' ' + res.data.access_token;
var expires_in = res.data.expires_in || 315360000;
this.$cookieStorage.set("user_token", access_token, expires_in);
//如果用户没有绑定手机号
if(res.data.has_bind_mobile == 0){
wx.reLaunch({
url:'/pages/user/bindingphone/bindingphone'
})
}
} else{
wx.showModal({
content: res.message || '请求失败,请重试',
showCancel: false
});
}
} else{
wx.showModal({
content: res.message || '请求失败,请重试',
showCancel: false
});
}
wx.hideLoading()
}).catch(rej=>{
wx.showModal({
content: rej.message || '请求失败,请重试',
showCancel: false
});
wx.hideLoading()
})
},
//绑定用户信息
bindUserInfo(e) {
console.log(e)
if (e.detail.encryptedData) {
this.updateUserInfo(e.detail);
}
},
updateUserInfo(data) {
wx.showLoading({
title: '更新中',
mask: true
});
this.$http.get({
api: 'api/user/bindUserMiniInfo',
data: data,
header: {
Authorization: this.$cookieStorage.get('user_token')
}
}).then(res => {
res = res.data;
if (res.status) {
wx.showModal({
content:"用户信息更新完成,请砍价",
showCancel:false
})
} else {
wx.showModal({
content: res.message || '请求失败',
showCancel: false
});
}
wx.hideLoading();
});
},
//获取用户信息
getUserInfo() {
this.$http.get({
api: 'api/me',
header: {
Authorization: this.$cookieStorage.get('user_token')
}
}).then(res => {
res = res.data;
if (res.status) {
this.user_info_fill = res.data.user_info_fill
}
});
},
// 点击发起砍价按钮
clickBargain(e) {
let token = this.$cookieStorage.get('user_token');
if (token) {
// 发起砍价请求
let id = e.currentTarget.dataset.id;
this.id = id;
this.postReduce(id);
} else {
// #ifdef MP-WEIXIN || APP-PLUS
var url = getUrl();
// #endif
// #ifdef H5
var url = getUrl();
// #endif
wx.showModal({
content: '请先登录',
success: res => {
if (res.confirm) {
// #ifdef APP-PLUS || MP-WEIXIN
wx.navigateTo({
url: '/pages/user/register/register?url=' + url
});
// #endif
// #ifdef H5
wx.navigateTo({
url: '/pages/user/register/register?url=' + encodeURIComponent(url)
});
// #endif
}
}
});
}
},
// 发起砍价的请求
postReduce(reduce_id) {
wx.showLoading({
title: "请求中",
mask: true
});
let token = this.$cookieStorage.get('user_token');
this.$http.post({
api: 'api/reduce',
header: {
Authorization: token
},
data: {
reduce_id: reduce_id
}
}).then(res => {
res = res.data;
if (res.status) {
this.reduce_items_id = res.data.reduce_items_id
// 判断是否可以跳砍价页面,如果不能就需要跳到订单详情页去
this.getReduceShowItem();
} else {
wx.showModal({
content: res.message || '请求失败',
showCancel: false
})
}
wx.hideLoading()
}).catch(rej => {
wx.showModal({
content: rej.message || '请求失败',
showCancel: false
})
wx.hideLoading()
})
},
// 获取砍价的规则
getHelpText() {
this.$http.get({
api: 'api/reduce/help/text'
}).then(res => {
res = res.data;
if (res.status) {
this.setData({
rule: res.data.reduce_help_text
})
} else {
wx.showModal({
content: res.message || '请求失败',
showCancel: false
})
}
}).catch(rej => {
wx.showModal({
content: rej.message || '请求失败',
showCancel: false
})
})
},
// 请求是否是可以跳到砍价详情页
getReduceShowItem() {
var token = this.$cookieStorage.get('user_token');
this.$http.get({
api: `api/reduce/showItem?reduce_items_id=${this.reduce_items_id}`,
header: {
Authorization: token
}
}).then(res => {
res = res.data;
if (res.status) {
if (res.data.order != null) {
if (res.data.order.status == 1) {
{
wx.navigateTo({
url: `/pages/order/detail/detail?no=${res.data.order.order_no}`
})
}
} else {
wx.navigateTo({
url: `/pages/bargain/detail/detail?reduce_items_id=${this.reduce_items_id}&id=${this.id}`
})
}
} else {
wx.navigateTo({
url: `/pages/bargain/detail/detail?reduce_items_id=${this.reduce_items_id}&id=${this.id}`
})
}
} else {
wx.showModal({
content: res.message || '请求失败',
showCancel: false
})
}
})
},
// 弹起活动规则
changeRule() {
this.setData({
show:!this.show
})
},
// 获取页面列表数据
getReduceList(page) {
wx.showLoading({
title: "加载中",
mask: true
});
this.$http.get({
api: 'api/reduce/list',
data: {
page:page
}
}).then(res => {
res = res.data;
if (res.status) {
let pages = res.meta.pagination;
let current_page = pages.current_page;
let total_pages = pages.total_pages;
this.setData({
[`list.${page-1}`]: res.data,
more: current_page < total_pages,
page: current_page
})
} else {
wx.showModal({
content: res.message || '请求失败',
showCancel: false
})
}
this.setData({
show: false
})
wx.hideLoading()
}).catch(rej => {
wx.hideLoading()
wx.showModal({
content: rej.message || '请求失败',
showCancel: false
})
})
},
setData: function(obj) {
let that = this;
let keys = [];
let val, data;
Object.keys(obj).forEach(function(key) {
keys = key.split('.');
val = obj[key];
data = that.$data;
keys.forEach(function(key2, index) {
if (index + 1 == keys.length) {
that.$set(data, key2, val);
} else {
if (!data[key2]) {
that.$set(data, key2, {});
}
}
data = data[key2];
});
});
}
}
}
</script>
<style rel="stylesheet/less" lang="less">
@import "index";
</style>