小程序会员VIP开发

feat/task1-c-wallet
devil 2020-01-06 01:32:36 +08:00
parent c5227dfe23
commit f9d8b5f910
29 changed files with 900 additions and 35 deletions

View File

@ -106,7 +106,7 @@ class Plugins extends Common
return $ret;
} else {
$this->assign('msg', $ret['msg']);
return $this->fetch('public/tips_error');
return $this->fetch();
}
}

View File

@ -0,0 +1,21 @@
{{include file="public/header" /}}
<!-- right content start -->
<div class="content-right">
<div class="content">
<div class="table-no">
<div>
<i class="am-icon-warning"></i>
<span>{{if empty($msg)}}没有相关数据{{else /}}{{$msg}}{{/if}}</span>
</div>
<div class="am-margin-top-lg">
<a href="{{:MyUrl('admin/pluginsadmin/index')}}" class="am-btn am-btn-link am-radius am-btn-sm">返回到应用管理 >></a>
</div>
</div>
</div>
</div>
<!-- right content end -->
<!-- footer start -->
{{include file="public/footer" /}}
<!-- footer end -->

View File

@ -14,6 +14,7 @@ use app\service\GoodsService;
use app\service\BuyService;
use app\service\PluginsService;
use app\service\GoodsCommentsService;
use app\service\ResourcesService;
/**
* 商品
@ -79,29 +80,7 @@ class Goods extends Common
unset($ret['data'][0]['content_web']);
} else {
// 标签处理兼容小程序rich-text
$search = [
'<img ',
'<section',
'/section>',
'<p style="',
'<p>',
'<div>',
'<table',
'<tr',
'<td',
];
$replace = [
'<img style="max-width:100%;margin:0;padding:0;display:block;" ',
'<div',
'/div>',
'<p style="margin:0;',
'<p style="margin:0;">',
'<div style="margin:0;">',
'<table style="width:100%;margin:0px;border-collapse:collapse;border-color:#ddd;border-style:solid;border-width:0 1px 1px 0;"',
'<tr style="border-top:1px solid #ddd;"',
'<td style="margin:0;padding:5px;border-left:1px solid #ddd;"',
];
$ret['data'][0]['content_web'] = str_replace($search, $replace, $ret['data'][0]['content_web']);
$ret['data'][0]['content_web'] = ResourcesService::ApMiniRichTextContentHandle($ret['data'][0]['content_web']);
}
// 当前登录用户是否已收藏

View File

@ -455,5 +455,42 @@ class ResourcesService
}
return $files;
}
/**
* 小程序富文本标签处理
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2020-01-04
* @desc description
* @param [string] $content [需要处理的富文本内容]
*/
public static function ApMiniRichTextContentHandle($content)
{
// 标签处理兼容小程序rich-text
$search = [
'<img ',
'<section',
'/section>',
'<p style="',
'<p>',
'<div>',
'<table',
'<tr',
'<td',
];
$replace = [
'<img style="max-width:100%;margin:0;padding:0;display:block;" ',
'<div',
'/div>',
'<p style="margin:0;',
'<p style="margin:0;">',
'<div style="margin:0;">',
'<table style="width:100%;margin:0px;border-collapse:collapse;border-color:#ddd;border-style:solid;border-width:0 1px 1px 0;"',
'<tr style="border-top:1px solid #ddd;"',
'<td style="margin:0;padding:5px;border-left:1px solid #ddd;"',
];
return str_replace($search, $replace, $content);
}
}
?>

View File

@ -32,5 +32,102 @@ return array (
'log_write' =>
array (
),
'plugins_css' =>
array (
0 => 'app\\plugins\\membershiplevelvip\\Hook',
1 => 'app\\plugins\\coupon\\Hook',
),
'plugins_service_navigation_header_handle' =>
array (
0 => 'app\\plugins\\membershiplevelvip\\Hook',
1 => 'app\\plugins\\coupon\\Hook',
),
'plugins_service_goods_handle_end' =>
array (
0 => 'app\\plugins\\membershiplevelvip\\Hook',
),
'plugins_service_goods_spec_base' =>
array (
0 => 'app\\plugins\\membershiplevelvip\\Hook',
),
'plugins_service_buy_handle' =>
array (
0 => 'app\\plugins\\membershiplevelvip\\Hook',
1 => 'app\\plugins\\coupon\\Hook',
),
'plugins_service_user_login_success_record' =>
array (
0 => 'app\\plugins\\membershiplevelvip\\Hook',
),
'plugins_service_goods_spec_extends_handle' =>
array (
0 => 'app\\plugins\\membershiplevelvip\\Hook',
),
'plugins_view_admin_user_save' =>
array (
0 => 'app\\plugins\\membershiplevelvip\\Hook',
),
'plugins_service_user_save_handle' =>
array (
0 => 'app\\plugins\\membershiplevelvip\\Hook',
),
'plugins_service_goods_save_handle' =>
array (
0 => 'app\\plugins\\membershiplevelvip\\Hook',
),
'plugins_view_goods_detail_panel_price_top' =>
array (
0 => 'app\\plugins\\membershiplevelvip\\Hook',
),
'plugins_view_home_goods_inside_bottom' =>
array (
0 => 'app\\plugins\\membershiplevelvip\\Hook',
),
'plugins_view_search_goods_inside_bottom' =>
array (
0 => 'app\\plugins\\membershiplevelvip\\Hook',
),
'plugins_service_goods_spec_type' =>
array (
0 => 'app\\plugins\\membershiplevelvip\\Hook',
),
'plugins_service_users_center_left_menu_handle' =>
array (
0 => 'app\\plugins\\membershiplevelvip\\Hook',
1 => 'app\\plugins\\coupon\\Hook',
),
'plugins_service_header_navigation_top_right_handle' =>
array (
0 => 'app\\plugins\\membershiplevelvip\\Hook',
1 => 'app\\plugins\\coupon\\Hook',
),
'plugins_js' =>
array (
0 => 'app\\plugins\\coupon\\Hook',
),
'plugins_view_goods_detail_panel_bottom' =>
array (
0 => 'app\\plugins\\coupon\\Hook',
),
'plugins_view_buy_goods_bottom' =>
array (
0 => 'app\\plugins\\coupon\\Hook',
),
'plugins_view_buy_form_inside' =>
array (
0 => 'app\\plugins\\coupon\\Hook',
),
'plugins_service_buy_order_insert_success' =>
array (
0 => 'app\\plugins\\coupon\\Hook',
),
'plugins_service_order_status_change_history_success_handle' =>
array (
0 => 'app\\plugins\\coupon\\Hook',
),
'plugins_service_user_register_end' =>
array (
0 => 'app\\plugins\\coupon\\Hook',
),
);
?>

View File

@ -81,7 +81,6 @@
<template is="online_service" data="{{tnt_inst_id: common_app_mini_alipay_tnt_inst_id || null, scene: common_app_mini_alipay_scene || null, openid: common_app_mini_alipay_openid || null}}"></template>
</view>
<!-- 版权 -->
<view a:if="{{load_status == 1}}">
<import src="/pages/common/copyright.axml" />
<template is="copyright"></template>

View File

@ -76,6 +76,5 @@
<template is="online_service" data="{{tnt_inst_id: common_app_mini_alipay_tnt_inst_id || null, scene: common_app_mini_alipay_scene || null, openid: common_app_mini_alipay_openid || null}}"></template>
</view>
<!-- 版权 -->
<import src="/pages/common/copyright.axml" />
<template is="copyright"></template>

View File

@ -81,7 +81,6 @@
<template is="online_service"></template>
</view>
<!-- 版权 -->
<view s-if="load_status == 1">
<import src="/pages/common/copyright.swan" />
<template is="copyright"></template>

View File

@ -79,6 +79,5 @@
<template is="online_service"></template>
</view>
<!-- 版权 -->
<import src="/pages/common/copyright.swan" />
<template is="copyright"></template>

View File

@ -81,7 +81,6 @@
<template is="online_service"></template>
</view>
<!-- -->
<view qq:if="{{load_status == 1}}">
<import src="/pages/common/copyright.qml" />
<template is="copyright"></template>

View File

@ -78,7 +78,6 @@
<import src="/pages/common/bottom_line.ttml" />
<template is="bottom_line" data="{{status: data_bottom_line_status}}"></template>
<!-- 版权 -->
<view tt:if="{{load_status == 1}}">
<import src="/pages/common/copyright.ttml" />
<template is="copyright"></template>

View File

@ -75,6 +75,5 @@
</view>
</view>
<!-- 版权 -->
<import src="/pages/common/copyright.ttml" />
<template is="copyright"></template>

View File

@ -63,11 +63,13 @@ App({
"coupon": "领劵中心",
"user_coupon": "优惠劵",
"extraction_address": "自提地址",
"membervip": "会员VIP",
"membervip_buy": "开通时长",
},
// 请求地址
request_url: "{{request_url}}",
// request_url: 'http://shopxo.com/',
request_url: 'http://shopxo.com/',
// request_url: 'https://dev.shopxo.net/',
// 基础信息

View File

@ -1,5 +1,6 @@
{
"pages": [
"pages/user-membervip/user-membervip",
"pages/index/index",
"pages/goods-category/goods-category",
"pages/cart/cart",
@ -28,7 +29,9 @@
"pages/user-orderaftersale-detail/user-orderaftersale-detail",
"pages/coupon/coupon",
"pages/user-coupon/user-coupon",
"pages/extraction-address/extraction-address"
"pages/extraction-address/extraction-address",
"pages/membervip/membervip",
"pages/membervip-buy/membervip-buy"
],
"window": {
"navigationBarTitleText": "{{application_title}}",

View File

@ -81,7 +81,6 @@
<template is="online_service"></template>
</view>
<!-- 版权 -->
<view wx:if="{{load_status == 1}}">
<import src="/pages/common/copyright.wxml" />
<template is="copyright"></template>

View File

@ -0,0 +1,152 @@
const app = getApp();
Page({
data: {
data_bottom_line_status: false,
data_list_loding_status: 1,
data_list_loding_msg: '',
data_list: [],
data_base: null,
selected_tabs_index: 0,
selected_content_index: null,
submit_disabled_status: false,
},
onLoad(params) {
this.init();
},
onShow() {
wx.setNavigationBarTitle({ title: app.data.common_pages_title.membervip_buy });
},
init() {
// 获取数据
this.get_data_list();
},
// 获取数据
get_data_list() {
var self = this;
wx.showLoading({ title: "加载中..." });
if (self.data.data_list.length <= 0) {
self.setData({
data_list_loding_status: 1
});
}
wx.request({
url: app.get_request_url("index", "buy", "membershiplevelvip"),
method: "POST",
data: {},
dataType: "json",
success: res => {
wx.hideLoading();
wx.stopPullDownRefresh();
if (res.data.code == 0) {
var data = res.data.data;
var status = ((data.data || []).length > 0);
self.setData({
data_base: data.base || null,
data_list: data.data || [],
data_list_loding_msg: '',
data_list_loding_status: status ? 3 : 0,
data_bottom_line_status: status,
});
} else {
self.setData({
data_bottom_line_status: false,
data_list_loding_status: 2,
data_list_loding_msg: res.data.msg,
});
if (app.is_login_check(res.data, self, 'get_data_list')) {
app.showToast(res.data.msg);
}
}
},
fail: () => {
wx.hideLoading();
wx.stopPullDownRefresh();
self.setData({
data_bottom_line_status: false,
data_list_loding_status: 2,
data_list_loding_msg: '服务器请求出错',
});
app.showToast("服务器请求出错");
}
});
},
// 下拉刷新
onPullDownRefresh() {
this.get_data_list();
},
// tabs事件
tabs_event(e) {
this.setData({
selected_tabs_index: e.currentTarget.dataset.index || 0,
selected_content_index: null,
});
},
// 时长事件
content_event(e) {
this.setData({
selected_content_index: e.currentTarget.dataset.index || 0,
});
},
// 确认支付事件
submit_event(e) {
if (this.data.selected_tabs_index < 0 || this.data.selected_content_index === null)
{
app.showToast('请选择开通时长');
return false;
}
// 请求参数
var item = this.data.data_list[this.data.selected_tabs_index] || null;
if(item == null)
{
app.showToast('开通时长有误');
return false;
}
var rules = ((item['pay_period_rules'] || null) == null) ? null : item['pay_period_rules'][this.data.selected_content_index] || null;
if (rules == null) {
app.showToast('开通时长有误');
return false;
}
// 请求生成支付订单
var self = this;
wx.showLoading({ title: "处理中..." });
wx.request({
url: app.get_request_url("create", "buy", "membershiplevelvip"),
method: "POST",
data: { "opening": item['id'] + '-' + rules['number']},
dataType: "json",
header: { 'content-type': 'application/x-www-form-urlencoded' },
success: res => {
wx.hideLoading();
self.setData({ submit_disabled_status: false });
if (res.data.code == 0) {
// 进入以后会员中心并发起支付
wx.redirectTo({
url: '/pages/user-membervip/user-membervip',
});
} else {
if (app.is_login_check(res.data, self, 'submit_event')) {
app.showToast(res.data.msg);
}
}
},
fail: () => {
self.setData({ submit_disabled_status: false });
wx.hideLoading();
app.showToast("服务器请求出错");
}
});
},
});

View File

@ -0,0 +1,5 @@
{
"enablePullDownRefresh": true,
"navigationBarBackgroundColor": "#1d1611",
"backgroundColor": "#1d1611"
}

View File

@ -0,0 +1,45 @@
<view wx:if="{{(data_list || null) != null && data_list.length > 0}}" class="page">
<!-- 导航 -->
<scroll-view class="tabs bg-white tc oh" scroll-x="true">
<block wx:for="{{data_list}}" wx:key="key">
<view class="item {{selected_tabs_index === index ? 'active' : ''}}" bindtap="tabs_event" data-index="{{index}}">{{item.name}}</view>
</block>
</scroll-view>
<!-- 内容 -->
<view class="content spacing-mt">
<block wx:for="{{data_list}}" wx:key="key">
<block wx:if="{{selected_tabs_index == index}}">
<block wx:if="{{(item.pay_period_rules || null) != null}}">
<block wx:for="{{item.pay_period_rules}}" wx:key="keys" wx:for-item="rules">
<view class="item oh tc bg-white {{selected_content_index === index ? 'active' : ''}}" bindtap="content_event" data-index="{{index}}">
<view class="fl number single-text">
<text wx:if="{{(rules.number || null) == null}}" class="value">终身</text>
<text wx:else class="value">{{rules.value}}</text>
<text wx:if="{{(rules.unit || null) != null}}" class="unit">{{rules.unit}}</text>
</view>
<view class="fr price bg-white single-text">
<text class="symbol">¥</text>
<text class="value">{{rules.price}}</text>
<text class="unit">元</text>
</view>
</view>
</block>
<import src="/pages/common/bottom_line.wxml" />
<template is="bottom_line" data="{{status: true}}"></template>
<button class="submit-fixed submit-bottom" type="default" hover-class="none" bindtap="submit_event" disabled="{{submit_disabled_status}}">确认支付</button>
</block>
<block wx:else>
<import src="/pages/common/nodata.wxml" />
<template is="nodata" data="{{status: 0, msg: '购买时长未配置'}}"></template>
</block>
</block>
</block>
</view>
</view>
<view wx:else>
<import src="/pages/common/nodata.wxml" />
<template is="nodata" data="{{status: 0, msg: '未配置会员等级'}}"></template>
</view>

View File

@ -0,0 +1,67 @@
/**
* common
*/
.page {
padding-bottom: 100rpx;
}
/**
* tabs
*/
.tabs {
width: 100%;
height: 80rpx;
white-space: nowrap;
box-sizing: border-box;
}
.tabs .item {
padding: 20rpx 30rpx;
border-bottom: 3px solid #f0f0f0;
display: inline-block;
position: relative;
}
.tabs .active {
border-bottom: 3px solid #1d1611;
color: #1d1611;
}
/**
* content
*/
.content .item {
cursor: pointer;
border: 1px solid #D6D6D6;
margin: 0 20rpx 30rpx 20rpx;
}
.content .item .number {
background: #f2f2f2;
width: calc(40% - 40rpx);
}
.content .item .price {
width: calc(60% - 40rpx)
}
.content .item .number,
.content .item .price {
padding: 20rpx;
}
.content .item .number .value {
color: #666;
}
.content .item .price .value,
.content .item .price .symbol {
color: #1d1611;
}
.content .item .value {
font-size: 38rpx;
}
.content .item .unit {
color: #888;
margin-left: 10rpx;
}
.content .active {
border-color: #1d1611;
box-shadow: 0px 0 0px 1px #1d1611
}
.content .submit-bottom {
background: #f9d681 !important;
color: #351d06 !important;
}

View File

@ -0,0 +1,86 @@
const app = getApp();
Page({
data: {
data_bottom_line_status: false,
data_list_loding_status: 1,
data_list_loding_msg: '',
data_list: [],
data_base: null,
},
onLoad(params) {
this.init();
},
onShow() {
wx.setNavigationBarTitle({ title: app.data.common_pages_title.membervip });
},
init() {
// 获取数据
this.get_data_list();
},
// 获取数据
get_data_list() {
var self = this;
wx.showLoading({ title: "加载中..." });
if (self.data.data_list.length <= 0) {
self.setData({
data_list_loding_status: 1
});
}
wx.request({
url: app.get_request_url("index", "index", "membershiplevelvip"),
method: "POST",
data: {},
dataType: "json",
success: res => {
wx.hideLoading();
wx.stopPullDownRefresh();
if (res.data.code == 0) {
var data = res.data.data;
var status = ((data.data || []).length > 0);
self.setData({
data_base: data.base || null,
data_list: data.data || [],
data_list_loding_msg: '',
data_list_loding_status: status ? 3 : 0,
data_bottom_line_status: status,
});
// 导航名称
if ((data.base || null) != null && (data.base.application_name || null) != null) {
wx.setNavigationBarTitle({ title: data.base.application_name });
}
} else {
self.setData({
data_bottom_line_status: false,
data_list_loding_status: 2,
data_list_loding_msg: res.data.msg,
});
if (app.is_login_check(res.data, self, 'get_data_list')) {
app.showToast(res.data.msg);
}
}
},
fail: () => {
wx.hideLoading();
wx.stopPullDownRefresh();
self.setData({
data_bottom_line_status: false,
data_list_loding_status: 2,
data_list_loding_msg: '服务器请求出错',
});
app.showToast("服务器请求出错");
}
});
},
// 下拉刷新
onPullDownRefresh() {
this.get_data_list();
},
});

View File

@ -0,0 +1,5 @@
{
"enablePullDownRefresh": true,
"navigationBarBackgroundColor": "#1d1611",
"backgroundColor": "#1d1611"
}

View File

@ -0,0 +1,36 @@
<view wx:if="{{(data_base || null) != null}}" class="banner tc" style="background-image: url({{data_base.banner_bg_images}});">
<!-- banner -->
<view wx:if="{{(data_base.banner_top_title || null) != null}}" class="single-text banner-title">
{{data_base.banner_top_title}}
</view>
<view class="submit">
<navigator url="/pages/membervip-buy/membervip-buy" hover-class="none">
<button size="mini" type="default" hover-class="none" bindtap="buy_event">
{{data_base.banner_middle_name || '开通会员'}}
</button>
</navigator>
</view>
<!-- 数据列表 -->
<view wx:if="{{(data_list || null) != null && data_list.length > 0}}" class="data-list">
<view wx:for="{{data_list}}" wx:key="key" class="item fl">
<view class="content">
<view class="title single-text">{{item.name}}</view>
<view class="desc multi-text">{{item.desc}}</view>
<image src="{{item.images_url}}" mode="scaleToFill" class="dis-block" />
</view>
</view>
</view>
</view>
<view wx:if="{{(data_base.banner_bottom_content || null) != null}}" class="bg-white">
<rich-text nodes="{{data_base.banner_bottom_content}}"></rich-text>
</view>
<view wx:if="{{data_list_loding_status != 3}}">
<import src="/pages/common/nodata.wxml" />
<template is="nodata" data="{{status: data_list_loding_status, msg: data_list_loding_msg}}"></template>
</view>
<import src="/pages/common/bottom_line.wxml" />
<template is="bottom_line" data="{{status: data_bottom_line_status}}"></template>

View File

@ -0,0 +1,71 @@
/**
* banner
*/
.banner {
background-color: #1d1611;
background-position: center center;
background-repeat: no-repeat;
position: relative;
height: 1110rpx;
width: 100%;
overflow: hidden;
}
.banner .banner-title {
font-size: 60rpx;
margin-top: 50rpx;
color: #f9d681;
height: 68rpx;
overflow: hidden;
}
.banner .submit {
margin-top: 60rpx;
}
.banner .submit button {
border: 1rpx solid #f9d681;
background-color: #f9d681;
color: #351d06;
width: 320rpx;
height: 80rpx;
line-height: 80rpx;
font-size: 36rpx;
border-radius: 50rpx;
font-weight: 500;
}
/**
* 等级介绍
*/
.data-list {
margin-top: 40rpx;
}
.data-list .item {
padding: 15rpx;
width: calc(50% - 30rpx);
}
.data-list .item .content {
overflow: hidden;
border-radius: 8rpx;
background-color: #fff;
padding: 30rpx 10rpx;
}
.data-list .item .content .title {
height: 36rpx;
line-height: 36rpx;
font-size: 36rpx;
color: #333;
}
.data-list .item .content .desc {
height: 76rpx;
line-height: 38rpx;
font-size: 30rpx;
color: #999;
}
.data-list .item .content .title,
.data-list .item .content .desc {
margin-bottom: 15rpx;
}
.data-list .item .content image {
max-width: 160rpx;
max-height: 160rpx;
margin:0 auto;
}

View File

@ -0,0 +1,128 @@
const app = getApp();
Page({
data: {
data_bottom_line_status: false,
data_list_loding_status: 1,
data_list_loding_msg: '',
data_base: null,
user_vip: null,
avatar: app.data.default_user_head_src,
nickname: "用户名",
nav_list: [
{
icon: "/images/share-weixin-icon.png",
cs: "br-t br-b br-r",
title: "推广返利",
},
{
icon: "/images/share-weixin-icon.png",
cs: "br-t br-b",
title: "收益明细",
}
],
},
onLoad(params) {
this.init();
},
onShow() {
wx.setNavigationBarTitle({ title: app.data.common_pages_title.membervip });
},
init(e) {
var user = app.get_user_info(this, "init"),
self = this;
if (user != false) {
// 用户未绑定用户则转到登录页面
if (app.user_is_need_login(user)) {
wx.showModal({
title: '温馨提示',
content: '绑定手机号码',
confirmText: '确认',
cancelText: '暂不',
success: (result) => {
wx.stopPullDownRefresh();
if (result.confirm) {
wx.navigateTo({
url: "/pages/login/login?event_callback=init"
});
}
self.setData({
avatar: user.avatar || app.data.default_user_head_src,
nickname: user.user_name_view || '用户名',
});
},
});
} else {
self.get_data();
}
}
},
// 获取数据
get_data() {
var self = this;
wx.request({
url: app.get_request_url("index", "vip", "membershiplevelvip"),
method: "POST",
data: {},
dataType: "json",
success: res => {
wx.hideLoading();
wx.stopPullDownRefresh();
if (res.data.code == 0) {
var data = res.data.data;
self.setData({
data_base: data.base || null,
user_vip: data.user_vip || null,
data_list_loding_msg: '',
data_list_loding_status: 0,
data_bottom_line_status: false,
});
} else {
self.setData({
data_bottom_line_status: false,
data_list_loding_status: 2,
data_list_loding_msg: res.data.msg,
});
if (app.is_login_check(res.data, self, 'get_data')) {
app.showToast(res.data.msg);
}
}
},
fail: () => {
wx.hideLoading();
wx.stopPullDownRefresh();
self.setData({
data_bottom_line_status: false,
data_list_loding_status: 2,
data_list_loding_msg: '服务器请求出错',
});
app.showToast("服务器请求出错");
}
});
},
// 下拉刷新
onPullDownRefresh() {
this.get_data();
},
// 头像查看
preview_event() {
if (app.data.default_user_head_src != this.data.avatar) {
wx.previewImage({
current: this.data.avatar,
urls: [this.data.avatar]
});
}
},
// 头像加载错误
user_avatar_error(e) {
this.setData({ avatar: app.data.default_user_head_src });
},
});

View File

@ -0,0 +1,5 @@
{
"enablePullDownRefresh": true,
"navigationBarBackgroundColor": "#1d1611",
"backgroundColor": "#1d1611"
}

View File

@ -0,0 +1,51 @@
<!-- 头部 -->
<view class="head-box oh">
<view class="head-item tc fl">
<image bindtap="preview_event" binderror="user_avatar_error" class="avatar" src="{{avatar}}" mode="widthFix" />
<text class="item-name dis-block cr-888">{{nickname}}</text>
</view>
<view class="head-base fl">
<view class="single-text level-name">VIP1</view>
<view class="single-text">
<block wx:if="{{user_vip.is_permanent == 1}}">
<text class="title">有效期</text>
<text class="value cr-fff">{{user_vip.permanent_value}}</text>
<text class="unit">{{user_vip.permanent_unit}}</text>
</block>
<block wx:else>
<block wx:if="{{user_vip.surplus_time_number == 0}}">
<view class="cr-888">会员已过期或未开通</view>
<navigator url="/pages/membervip-buy/membervip-buy" hover-class="none">
<button wx:if="{{(data_base.is_user_buy || null) == 1}}" size="mini" type="default" hover-class="none" class="submit-buy">开通会员</button>
</navigator>
</block>
<block wx:else>
<text class="title">有效期</text>
<text class="value cr-fff">{{user_vip.surplus_time_number}}</text>
<text class="unit">{{user_vip.surplus_time_unit}}</text>
<block wx:if="{{(user_vip.is_supported_renew || null) == null || user_vip.is_supported_renew != 1}}">
<block wx:if="{{(plugins_base.is_supported_renew_old_order || null) == 1}}">
<button size="mini" type="default" hover-class="none" class="renew-buy">续费会员</button>
</block>
<block wx:else>
<navigator url="/pages/membervip-buy/membervip-buy" hover-class="none">
<button size="mini" type="default" hover-class="none" class="submit-buy">连续开通</button>
</navigator>
</block>
</block>
</block>
</block>
</view>
</view>
</view>
<!-- 导航 -->
<view class="nav">
<block wx:for="{{nav_list}}" wx:key="key">
<view class="item fl tc {{item.cs}}">
<image src="{{item.icon}}" mode="scaleToFill" class="dis-block" />
<view class="title">{{item.title}}</view>
</view>
</block>
</view>

View File

@ -0,0 +1,82 @@
/*
* 头部
*/
.head-box{
padding-top: 20rpx;
font-size: 24rpx;
background-color: #1d1611;
position: relative;
}
.head-item {
padding-bottom: 30rpx;
}
.head-item .avatar {
width: 160rpx;
height: 160rpx;
border-radius: 50%;
border: 1px solid #3d3c3c;
}
.head-item .item-name{
font-size: 30rpx;
margin-top: 10rpx;
}
.head-item .item-icon {
width: 30rpx;
margin-right: 20rpx;
}
.head-item {
margin-left: 30rpx;
}
.head-base {
margin-left: 60rpx;
width: calc(100% - 280rpx);
}
.head-base .value {
font-weight: 500;
font-size: 36rpx;
}
.head-base .title,
.head-base .unit {
color: #9e9e9e;
}
.head-base .value,
.head-base .unit {
margin-left: 10rpx;
}
.head-base .level-name {
font-size: 42rpx;
font-weight: 500;
margin-bottom: 30rpx;
color: #e4cb96;
}
.head-base .submit-buy {
font-size: 26rpx;
height: 55rpx;
line-height: 55rpx;
border: 1px solid #f9d681;
background-color: #f9d681;
color: #351d06;
position: absolute;
right: 30rpx;
bottom: 35rpx;
padding: 0 20rpx;
}
/*
* 导航
*/
.nav {
}
.nav .item {
padding: 20rpx;
width: calc(50% - 30px);
}
.nav .item image {
width: 100rpx;
height: 100rpx;
margin: 0 auto;
}
.nav .item .title {
margin-top: 20rpx;
}

View File

@ -1,5 +1,7 @@
{
"enablePullDownRefresh": true,
"navigationBarBackgroundColor": "#d2364c",
"backgroundColor": "#d2364c",
"usingComponents": {
"component-badge": "/components/badge/badge"
}

View File

@ -78,6 +78,5 @@
<template is="online_service"></template>
</view>
<!-- 版权 -->
<import src="/pages/common/copyright.wxml" />
<template is="copyright"></template>