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.
646 lines
16 KiB
646 lines
16 KiB
<template>
|
|
<gui-page :customFooter="true" iphoneXButtomStyle="background:#F8F8F8"
|
|
:footerSets="{height:120, zIndex:100, bg:'none'}">
|
|
<view slot="gBody" :style="appThemeStyle"
|
|
style="background: linear-gradient(180deg, rgba(255,255,255,0)0%,rgba(249, 238, 248, 1.0) 100%);height: 100vh;">
|
|
<view style="position: relative;">
|
|
<view class="a" style="width: 100%; height: 350rpx; z-index: 1;">
|
|
<image src="../../static/3334.png" style="width: 100%; height: 300rpx;"></image>
|
|
</view>
|
|
<view class="b"
|
|
style="position: absolute; top: 60rpx; left: 0; width: 100%; height: 100px; z-index: 0;padding: 0 10rpx;">
|
|
<view style="padding: 10rpx;border-radius: 10rpx;display: flex;justify-content: space-between;"
|
|
v-if="isLogin">
|
|
<view style="display: flex;width: 60%;">
|
|
<view style="margin-right: 20rpx;">
|
|
<image :src="userInfo.avatar_url"
|
|
style="width: 120rpx;height: 120rpx;border-radius: 50%;border: 5rpx solid #633981;">
|
|
</image>
|
|
</view>
|
|
<view style="line-height: 60rpx;font-weight: bold;">
|
|
<view style="font-size: 34rpx;color: #fff;">{{ userInfo.nick_name }}</view>
|
|
<view style="color: #fff;">{{ userInfo.mobile }}</view>
|
|
</view>
|
|
</view>
|
|
<view style="display: flex;justify-content: center;align-items: center;">
|
|
|
|
|
|
|
|
<view style="display: flex;justify-content: center;align-items: center;">
|
|
<view @click="onSettled" v-if="userInfo.is_info == 0"
|
|
style="display: flex; padding: 15rpx 35rpx;background: linear-gradient(to top, #0E001F, #7B0373 );color: #fff;font-size: 24rpx;border-radius: 30rpx;">
|
|
<view>商家入驻</view>
|
|
<view class="arrow-right">
|
|
<image src="../../static/right.png"></image>
|
|
</view>
|
|
</view>
|
|
|
|
<view v-if="userInfo.is_info == 1 " @click="wddp"
|
|
style="display: flex; padding: 15rpx 35rpx;background: linear-gradient(to top, #0E001F, #7B0373 );color: #fff;font-size: 24rpx;border-radius: 30rpx;">
|
|
|
|
<view>我的店铺</view>
|
|
<view class="arrow-right">
|
|
<image src="../../static/right.png"></image>
|
|
</view>
|
|
</view>
|
|
|
|
|
|
</view>
|
|
</view>
|
|
</view>
|
|
<view style="padding: 10rpx;border-radius: 10rpx;display: flex;" v-else @click="handleLogin">
|
|
|
|
<view style="margin-right: 20rpx;">
|
|
<avatar-image :width="120" style="border: 5rpx solid #633981;border-radius: 50%;" />
|
|
</view>
|
|
<view style="line-height: 60rpx;width: 420rpx;font-weight: bold;">
|
|
<view style="font-size: 34rpx;color: #fff;">未登录</view>
|
|
<view style="color: #fff;">点击登录账号</view>
|
|
</view>
|
|
<view style="display: flex;justify-content: center;align-items: center;">
|
|
<view
|
|
style="padding: 10rpx 20rpx;background: linear-gradient(to top, #0E001F, #7B0373 );color: #fff;font-size: 24rpx;border-radius: 30rpx;">
|
|
商家入驻
|
|
</view>
|
|
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
|
|
|
|
<view class="gui-list gui-padding-x" style="padding: 0 20rpx;">
|
|
<!-- <button class="btn-normal" open-type="contact" @click="zaixiankefu">
|
|
<view class="gui-list-items">
|
|
<image src="../../static/zxkfzs.png" style="width: 35rpx;height: 35rpx;"></image>
|
|
<view class="gui-list-body gui-border-b" style="padding: 40rpx 0;">
|
|
<view class="gui-list-title">
|
|
<text class="gui-list-title-text" style="font-size: 18px;">在线客服助手</text>
|
|
</view>
|
|
</view>
|
|
<text class="gui-list-arrow-right gui-icons gui-color-gray"></text>
|
|
</view>
|
|
</button> -->
|
|
<!-- <view class="gui-list-items">
|
|
<image src="../../static/zskftd.png" style="width: 35rpx;height: 35rpx;"></image>
|
|
<view class="gui-list-body gui-border-b" style="padding: 40rpx 0;">
|
|
<view class="gui-list-title">
|
|
<text class="gui-list-title-text" style="font-size: 18px;">专属客服通道</text>
|
|
</view>
|
|
</view>
|
|
<text class="gui-list-arrow-right gui-icons gui-color-gray"></text>
|
|
</view> -->
|
|
<view class="gui-list-items" @click="handleService('/pagesNew/order/index')">
|
|
<image src="../../static/yhfwxy.png" style="width: 35rpx;height: 35rpx;"></image>
|
|
<view class="gui-list-body gui-border-b" style="padding: 40rpx 0;">
|
|
<view class="gui-list-title">
|
|
<text class="gui-list-title-text" style="font-size: 18px;">订单列表</text>
|
|
</view>
|
|
</view>
|
|
<text class="gui-list-arrow-right gui-icons gui-color-gray"></text>
|
|
</view>
|
|
<view class="gui-list-items" @click="handleService('/pages/dealer/index')">
|
|
<image src="../../static/yqsjrz.png" style="width: 35rpx;height: 35rpx;"></image>
|
|
<view class="gui-list-body gui-border-b" style="padding: 40rpx 0;">
|
|
<view class="gui-list-title">
|
|
<text class="gui-list-title-text" style="font-size: 18px;">邀请商家入驻</text>
|
|
</view>
|
|
</view>
|
|
<text class="gui-list-arrow-right gui-icons gui-color-gray"></text>
|
|
</view>
|
|
<view class="gui-list-items" @click="tiaozhuan('/pages/article/details?articleId=4')">
|
|
<image src="../../static/yhfwxy.png" style="width: 35rpx;height: 35rpx;"></image>
|
|
<view class="gui-list-body" style="padding: 40rpx 0;">
|
|
<view class="gui-list-title">
|
|
<text class="gui-list-title-text" style="font-size: 18px;">用户服务协议</text>
|
|
</view>
|
|
</view>
|
|
<text class="gui-list-arrow-right gui-icons gui-color-gray"></text>
|
|
</view>
|
|
</view>
|
|
|
|
|
|
<!-- <view v-if="isLogin&&userInfo.is_info==1" @click="handleLogout()"-->
|
|
<!-- style="font-size: 18px;width: 90%;text-align: center;padding: 20rpx 0;text-align: center;background: linear-gradient(to top, #0E001F, #7B0373 );margin: 200rpx auto 0 ;color: #fff;border-radius: 40rpx;">-->
|
|
<!-- 退出登录-->
|
|
<!-- </view>-->
|
|
</view>
|
|
<view slot="gFooter" class="gui-flex gui-rows gui-nowrap gui-space-between gui-align-items-end"
|
|
style="background: linear-gradient(to top, #0E001F, #7B0373 );padding-bottom: 100rpx;">
|
|
<view class="gui-footer-icon-buttons" @tap="navChang(0)" style="padding-bottom: 30rpx;;text-align: center;">
|
|
<view class="tab">
|
|
<image src="../../static/sy.png" mode="widthFix"></image>
|
|
</view>
|
|
<view>
|
|
首页
|
|
</view>
|
|
</view>
|
|
|
|
<view class="gui-footer-icon-buttons" @tap="navChang(1)" style="padding-bottom: 30rpx;;text-align: center;">
|
|
<view class="tab">
|
|
<image src="../../static/dd.png" mode="widthFix"></image>
|
|
</view>
|
|
<view>
|
|
订单
|
|
</view>
|
|
</view>
|
|
<view class="gui-footer-icon-buttons" @tap="navChang(2)" style="padding-bottom: 30rpx;;text-align: center;">
|
|
<view class="tab">
|
|
<image src="../../static/wds.png" mode="widthFix"></image>
|
|
</view>
|
|
<view style="color: #B32ABE;">
|
|
我的
|
|
</view>
|
|
</view>
|
|
</view>
|
|
|
|
</gui-page>
|
|
</template>
|
|
|
|
<script>
|
|
import store from '@/store'
|
|
import AvatarImage from '@/components/avatar-image'
|
|
import Recommended from '@/components/recommended'
|
|
import {
|
|
setCartTabBadge
|
|
} from '@/core/app'
|
|
import SettingKeyEnum from '@/common/enum/setting/Key'
|
|
import SettingModel from '@/common/model/Setting'
|
|
import * as UserApi from '@/api/user'
|
|
import * as OrderApi from '@/api/order'
|
|
import {
|
|
checkLogin
|
|
} from '@/core/app'
|
|
|
|
// 订单操作
|
|
const orderNavbar = [{
|
|
id: 'all',
|
|
name: '全部订单',
|
|
icon: 'qpdingdan'
|
|
},
|
|
{
|
|
id: 'payment',
|
|
name: '待支付',
|
|
icon: 'daifukuan',
|
|
count: 0
|
|
},
|
|
{
|
|
id: 'delivery',
|
|
name: '待发货',
|
|
icon: 'daifahuo',
|
|
count: 0
|
|
},
|
|
{
|
|
id: 'received',
|
|
name: '待收货',
|
|
icon: 'daishouhuo',
|
|
count: 0
|
|
},
|
|
]
|
|
|
|
/**
|
|
* 我的服务
|
|
* id: 标识; name: 标题名称; icon: 图标; type 类型(link和button); url: 跳转的链接
|
|
*/
|
|
const service = [{
|
|
id: 'address',
|
|
name: '收货地址',
|
|
icon: 'shouhuodizhi',
|
|
type: 'link',
|
|
url: 'pages/address/index'
|
|
},
|
|
{
|
|
id: 'coupon',
|
|
name: '领券中心',
|
|
icon: 'lingquan',
|
|
type: 'link',
|
|
url: 'pages/coupon/index'
|
|
},
|
|
{
|
|
id: 'myCoupon',
|
|
name: '优惠券',
|
|
icon: 'youhuiquan',
|
|
type: 'link',
|
|
url: 'pages/my-coupon/index'
|
|
},
|
|
{
|
|
id: 'refund',
|
|
name: '退换/售后',
|
|
icon: 'shouhou',
|
|
type: 'link',
|
|
url: 'pages/refund/index',
|
|
count: 0
|
|
},
|
|
{
|
|
id: 'help',
|
|
name: '我的帮助',
|
|
icon: 'bangzhu',
|
|
type: 'link',
|
|
url: 'pages/help/index'
|
|
},
|
|
{
|
|
id: 'contact',
|
|
name: '在线客服',
|
|
icon: 'kefu',
|
|
type: 'button',
|
|
openType: 'contact'
|
|
},
|
|
{
|
|
id: 'points',
|
|
name: '我的积分',
|
|
icon: 'jifen',
|
|
type: 'link',
|
|
url: 'pages/points/log'
|
|
},
|
|
{
|
|
id: 'dealer',
|
|
name: '分销中心',
|
|
icon: 'fenxiao',
|
|
type: 'link',
|
|
url: 'pages/dealer/index'
|
|
},
|
|
{
|
|
id: 'groupon',
|
|
name: '我的拼团',
|
|
icon: 'pintuan',
|
|
type: 'link',
|
|
url: 'pages/groupon/index?tab=1'
|
|
},
|
|
{
|
|
id: 'bargain',
|
|
name: '我的砍价',
|
|
icon: 'kanjia',
|
|
type: 'link',
|
|
url: 'pages/bargain/index?tab=1'
|
|
},
|
|
]
|
|
|
|
export default {
|
|
components: {
|
|
AvatarImage,
|
|
Recommended
|
|
},
|
|
data() {
|
|
return {
|
|
// 枚举类
|
|
SettingKeyEnum,
|
|
// 正在加载
|
|
isLoading: true,
|
|
// 首次加载
|
|
isFirstload: true,
|
|
// 是否已登录
|
|
isLogin: false,
|
|
// 系统设置
|
|
setting: {},
|
|
// 当前用户信息
|
|
userInfo: {},
|
|
// 账户资产
|
|
assets: {
|
|
balance: '--',
|
|
points: '--',
|
|
coupon: '--'
|
|
},
|
|
// 我的服务
|
|
service,
|
|
// 订单操作
|
|
orderNavbar,
|
|
// 当前用户待处理的订单数量
|
|
todoCounts: {
|
|
payment: 0,
|
|
deliver: 0,
|
|
received: 0
|
|
},
|
|
navCurrent: 2
|
|
}
|
|
},
|
|
|
|
/**
|
|
* 生命周期函数--监听页面显示
|
|
*/
|
|
onLoad(options) {},
|
|
|
|
/**
|
|
* 生命周期函数--监听页面显示
|
|
*/
|
|
onShow(options) {
|
|
this.onRefreshPage()
|
|
},
|
|
|
|
methods: {
|
|
zaixiankefu() {
|
|
window.location.href = 'https://work.weixin.qq.com/kfid/kfc6206617a5de54b2d'; // 跳转到相对路径下的网页
|
|
},
|
|
navChang: function(index) {
|
|
if (index == 1) {
|
|
uni.navigateTo({
|
|
url: '/pages/order/index'
|
|
})
|
|
}
|
|
if (index == 0) {
|
|
uni.navigateTo({
|
|
url: '/pages/index/index'
|
|
})
|
|
}
|
|
|
|
},
|
|
tiaozhuan(e) {
|
|
uni.navigateTo({
|
|
url: e
|
|
})
|
|
},
|
|
wddp() {
|
|
if (!this.isLogin) {
|
|
this.$toast('请登录')
|
|
return false;
|
|
}
|
|
|
|
uni.navigateTo({
|
|
url: './shop/index'
|
|
})
|
|
},
|
|
onSettled() {
|
|
if (!this.isLogin) {
|
|
this.$toast('请登录')
|
|
return false;
|
|
}
|
|
|
|
uni.navigateTo({
|
|
url: './settled/index'
|
|
})
|
|
},
|
|
|
|
// 刷新页面
|
|
onRefreshPage() {
|
|
// 更新购物车角标
|
|
setCartTabBadge()
|
|
// 判断是否已登录
|
|
this.isLogin = checkLogin()
|
|
// 获取页面数据
|
|
this.getPageData()
|
|
},
|
|
|
|
// 获取页面数据
|
|
getPageData(callback) {
|
|
const app = this
|
|
app.isLoading = true
|
|
Promise.all([app.getSetting(), app.getUserInfo(), app.getUserAssets(), app.getTodoCounts()])
|
|
.then(result => {
|
|
app.isFirstload = false
|
|
// 初始化我的服务数据
|
|
app.initService()
|
|
// 初始化订单操作数据
|
|
app.initOrderTabbar()
|
|
// 执行回调函数
|
|
callback && callback()
|
|
})
|
|
.catch(err => console.log('catch', err))
|
|
.finally(() => {
|
|
app.isLoading = false
|
|
})
|
|
},
|
|
|
|
// 初始化我的服务数据
|
|
initService() {
|
|
const app = this
|
|
const newService = []
|
|
service.forEach(item => {
|
|
// 默认开启
|
|
item.enabled = true
|
|
// 我的积分
|
|
if (item.id === 'points') {
|
|
item.name = '我的' + app.setting[SettingKeyEnum.POINTS.value].points_name
|
|
}
|
|
// 是否显示分销中心
|
|
if (item.id === 'dealer' && !app.setting._other.isEnabledDealer) {
|
|
item.enabled = false
|
|
}
|
|
// 数据角标
|
|
if (item.count != undefined) {
|
|
item.count = app.todoCounts[item.id]
|
|
}
|
|
newService.push(item)
|
|
})
|
|
app.service = newService
|
|
},
|
|
|
|
// 初始化订单操作数据
|
|
initOrderTabbar() {
|
|
const app = this
|
|
const newOrderNavbar = []
|
|
orderNavbar.forEach(item => {
|
|
if (item.count != undefined) {
|
|
item.count = app.todoCounts[item.id]
|
|
}
|
|
newOrderNavbar.push(item)
|
|
})
|
|
app.orderNavbar = newOrderNavbar
|
|
},
|
|
|
|
// 获取商城设置
|
|
getSetting() {
|
|
const app = this
|
|
return new Promise((resolve, reject) => {
|
|
SettingModel.data()
|
|
.then(setting => {
|
|
app.setting = setting
|
|
resolve(setting)
|
|
}).catch(reject)
|
|
})
|
|
},
|
|
|
|
// 获取当前用户信息
|
|
getUserInfo() {
|
|
const app = this
|
|
return new Promise((resolve, reject) => {
|
|
!app.isLogin ? resolve(null) : UserApi.info({}, {
|
|
load: app.isFirstload
|
|
})
|
|
.then(result => {
|
|
app.userInfo = result.data.userInfo
|
|
resolve(app.userInfo)
|
|
})
|
|
.catch(err => {
|
|
if (err.result && err.result.status == 401) {
|
|
app.isLogin = false
|
|
resolve(null)
|
|
} else {
|
|
reject(err)
|
|
}
|
|
})
|
|
})
|
|
},
|
|
|
|
// 获取账户资产
|
|
getUserAssets() {
|
|
const app = this
|
|
return new Promise((resolve, reject) => {
|
|
!app.isLogin ? resolve(null) : UserApi.assets({}, {
|
|
load: app.isFirstload
|
|
})
|
|
.then(result => {
|
|
app.assets = result.data.assets
|
|
resolve(app.assets)
|
|
})
|
|
.catch(err => {
|
|
if (err.result && err.result.status == 401) {
|
|
app.isLogin = false
|
|
resolve(null)
|
|
} else {
|
|
reject(err)
|
|
}
|
|
})
|
|
})
|
|
},
|
|
|
|
// 获取当前用户待处理的订单数量
|
|
getTodoCounts() {
|
|
const app = this
|
|
return new Promise((resolve, reject) => {
|
|
!app.isLogin ? resolve(null) : OrderApi.todoCounts({}, {
|
|
load: app.isFirstload
|
|
})
|
|
.then(result => {
|
|
app.todoCounts = result.data.counts
|
|
resolve(app.todoCounts)
|
|
})
|
|
.catch(err => {
|
|
if (err.result && err.result.status == 401) {
|
|
app.isLogin = false
|
|
resolve(null)
|
|
} else {
|
|
reject(err)
|
|
}
|
|
})
|
|
})
|
|
},
|
|
|
|
// 跳转到登录页
|
|
handleLogin() {
|
|
!this.isLogin && this.$navTo('pages/login/index')
|
|
},
|
|
|
|
// 跳转到绑定手机号页面
|
|
handleBindMobile() {
|
|
this.$navTo('pages/user/bind/index')
|
|
},
|
|
|
|
// 退出登录
|
|
handleLogout() {
|
|
const app = this
|
|
uni.showModal({
|
|
title: '友情提示',
|
|
content: '您确定要退出登录吗?',
|
|
success(res) {
|
|
if (res.confirm) {
|
|
store.dispatch('Logout', {})
|
|
.then(result => app.onRefreshPage())
|
|
}
|
|
}
|
|
})
|
|
},
|
|
|
|
// 跳转到钱包页面
|
|
onTargetWallet() {
|
|
this.$navTo('pages/wallet/index')
|
|
},
|
|
|
|
// 跳转到订单页
|
|
onTargetOrder(item) {
|
|
this.$navTo('pages/order/index', {
|
|
dataType: item.id
|
|
})
|
|
},
|
|
|
|
// 跳转到我的积分页面
|
|
onTargetPoints() {
|
|
this.$navTo('pages/points/log')
|
|
},
|
|
|
|
// 跳转到我的优惠券页
|
|
onTargetMyCoupon() {
|
|
this.$navTo('pages/my-coupon/index')
|
|
},
|
|
|
|
// 跳转到服务页面
|
|
handleService(url) {
|
|
uni.navigateTo({
|
|
url: url
|
|
})
|
|
},
|
|
|
|
},
|
|
|
|
/**
|
|
* 下拉刷新
|
|
*/
|
|
onPullDownRefresh() {
|
|
// 获取首页数据
|
|
this.getPageData(() => {
|
|
uni.stopPullDownRefresh()
|
|
})
|
|
},
|
|
|
|
|
|
}
|
|
</script>
|
|
|
|
<style>
|
|
page{
|
|
background: #F8EEF7;
|
|
}
|
|
.arrow-right {
|
|
display: flex;
|
|
justify-content: center;
|
|
align-items: center;
|
|
padding-left: 10rpx;
|
|
}
|
|
|
|
.arrow-right image {
|
|
width: 12rpx;
|
|
height: 15rpx;
|
|
}
|
|
|
|
.gui-border-b {
|
|
border-bottom: 4rpx solid #F1F2F3;
|
|
}
|
|
|
|
.gui-color-gray {
|
|
color: #CCBBCC !important;
|
|
font-size: 60rpx !important;
|
|
}
|
|
|
|
.gui-footer-icon-buttons {
|
|
color: #FFF;
|
|
width: 130rpx;
|
|
// height: 80rpx;
|
|
padding: 20rpx 10rpx 10rpx;
|
|
flex: 1;
|
|
position: relative;
|
|
margin: 0;
|
|
// background-color: #F8F8F8;
|
|
}
|
|
|
|
.tab image {
|
|
width: 50rpx;
|
|
height: 60rpx;
|
|
}
|
|
|
|
.gui-footer-buttons-ab {
|
|
position: absolute;
|
|
z-index: 101;
|
|
left: 325rpx;
|
|
top: 0rpx;
|
|
width: 110rpx;
|
|
height: 150rpx;
|
|
}
|
|
|
|
.gui-footer-buttons-ab-icon {
|
|
width: 110rpx;
|
|
height: 110rpx;
|
|
line-height: 120rpx;
|
|
text-align: center;
|
|
font-size: 68rpx;
|
|
background-color: #F7F8FA;
|
|
border-radius: 100rpx;
|
|
}
|
|
</style>
|