This commit is contained in:
2022-06-12 14:18:24 +08:00
18 changed files with 9864 additions and 6776 deletions

View File

@@ -10,7 +10,7 @@ import router from '../router'
// 基础配置
const config = {
apiUrl : 'http://api.gl.shangkelian.cn/api/', // 正式环境
apiUrl : 'https://api.gongli.vip/api/', // 正式环境
// apiUrl : 'http://api.zh.shangkelian.cn/api/', // 大健康调试环境,目前没有任何数据无法正常显示,所以需要使用该环境,最后会删除
timeout : 60000
}

View File

@@ -19,6 +19,7 @@ const dt = (data) =>{
// 充值
const recharge = (data) => {
console.log(data)
return request({
url: "user/transaction/recharge",
method: "POST",
@@ -89,6 +90,13 @@ const integral = () => {
})
}
// 快捷支付配置
const paymentpre = () => {
return request({
url: 'user/transaction/recharge/paymentpre'
})
}
export {
dt,
recharge,
@@ -99,5 +107,6 @@ export {
setpassword,
getSms,
submitTransfer,
integral
integral,
paymentpre
}

View File

@@ -15,9 +15,10 @@ const info = () =>{
}
// 导出助记词
const chainSeed = () => {
const chainSeed = (data) => {
return request({
url: 'chain/safe/seed'
url: 'chain/safe/seed',
data
})
}

View File

@@ -244,7 +244,7 @@
"path": "pages/account/integral",
"name": "AccountIntegral",
"style": {
"navigationBarTitleText": "共力",
"navigationBarTitleText": "共力",
"navigationBarBackgroundColor": "#34CE98",
"navigationBarTextStyle": "white"
}
@@ -259,7 +259,7 @@
"app-plus": {
"titleNView": {
"buttons": [{
"text": "充值",
"text": "收款",
"width": "60",
"fontSize": "14"
}]

View File

@@ -5,7 +5,7 @@
<view class="title">DT积分余额</view>
<view class="num">{{score}}</view>
</view>
<button class="transfer" size="mini" @click="onTransfer('AccountCode')">收款</button>
<button class="transfer" size="mini" @click="onTransfer('AccountRecharge')">充值</button>
<button class="transfer" size="mini" @click="onTransfer('AccountTransfer')">转账</button>
</view>
<block v-if="logs.length > 0">
@@ -79,7 +79,7 @@
},
onNavigationBarButtonTap() {
this.$Router.push({
name: 'AccountRecharge'
name: 'AccountCode'
})
}
}

View File

@@ -1,7 +1,7 @@
<template>
<view class="content">
<view class="dt-header">
<view class="title">共力余额</view>
<view class="title">共力余额</view>
<view class="num">{{glz}}</view>
</view>
<view class="logs-title">账户记录</view>

View File

@@ -9,35 +9,17 @@
<input type="digit" v-model="priceValue" placeholder="输入充值金额" />
</view>
</view>
<view class="recharge-block">
<view class="recharge-block" v-if="paymentpre.length > 0">
<view class="recharge-title">
快速充值
</view>
<view class="recharge-fast">
<view class="recharge-fast-item" @click="onRecharge(100)">
<view class="recharge-fast-price">100<text></text></view>
<view class="recharge-fast-numb">100<text>DT积分</text></view>
</view>
<view class="recharge-fast-item" @click="onRecharge(200)">
<view class="recharge-fast-price">200<text></text></view>
<view class="recharge-fast-numb">200<text>DT积分</text></view>
</view>
<view class="recharge-fast-item" @click="onRecharge(500)">
<view class="recharge-fast-price">500<text></text></view>
<view class="recharge-fast-numb">500<text>DT积分</text></view>
</view>
<view class="recharge-fast-item" @click="onRecharge(1000)">
<view class="recharge-fast-price">1000<text></text></view>
<view class="recharge-fast-numb">1000<text>DT积分</text></view>
</view>
<view class="recharge-fast-item" @click="onRecharge(3000)">
<view class="recharge-fast-price">3000<text></text></view>
<view class="recharge-fast-numb">3000<text>DT积分</text></view>
</view>
<view class="recharge-fast-item" @click="onRecharge(5000)">
<view class="recharge-fast-price">5000<text></text></view>
<view class="recharge-fast-numb">5000<text>DT积分</text></view>
<block v-for="(item,index) in paymentpre" :key="index">
<view class="recharge-fast-item" @click="onRecharge(item.price)">
<view class="recharge-fast-price">{{item.price}}<text></text></view>
<view class="recharge-fast-numb">{{item.dt}}<text>DT积分</text></view>
</view>
</block>
</view>
</view>
<view class="recharge-btn">
@@ -48,13 +30,24 @@
</template>
<script>
import { recharge, payment } from "@/apis/interfaces/account"
import { recharge, payment, paymentpre } from "@/apis/interfaces/account"
export default {
data() {
return {
priceValue: ''
priceValue: '',
paymentpre: []
};
},
created() {
paymentpre().then(res => {
this.paymentpre = res
}).catch(err => {
uni.showToast({
title: err.message,
icon : 'none'
})
})
},
methods: {
// 充值说明
rechargeToast(){
@@ -71,7 +64,7 @@
title: '提交订单'
})
recharge({
amount: typeof(value) === 'number' ? value: this.priceValue
amount: typeof(value) === 'number' ? value : this.priceValue
}).then(res => {
if(res.order_id){
uni.showLoading({

View File

@@ -8,11 +8,11 @@
</view>
<view class="group">
<view class="inputs">
<label>设密码</label>
<label>置支付密码</label>
<input type="number" v-model="password" maxlength="6" password placeholder="请设置支付密码" />
</view>
<view class="inputs">
<label>确认密码</label>
<label>确认支付密码</label>
<input type="number" v-model="verify" maxlength="6" password placeholder="请确认支付密码" />
</view>
<view class="inputs">
@@ -104,7 +104,6 @@
}
})
}).catch(err => {
console.log(err)
uni.showToast({
icon: 'none',
title: err.message

View File

@@ -65,7 +65,7 @@
if(!res.has_transfer_password){
uni.showModal({
title : '提示',
content : '暂未设置账户密码,无法发起转账,请设置后重试',
content : '暂未设置账户支付密码,无法发起转账,请设置后重试',
cancelText : '稍后设置',
confirmText : '立即设置',
success : modalRes => {

View File

@@ -13,9 +13,9 @@
<input v-model="code" type="number" maxlength="4" placeholder="输入验证码">
<button :disabled="getSms" size="mini" @click="getPhoneCode()">{{sendCode}}</button>
</view>
<!-- <view class="auth-input">
<view class="auth-input">
<input v-model="parentId" type="number" placeholder="输入邀请码">
</view> -->
</view>
<view class="auth-button">
<button @click="login('code')">登录</button>
</view>

View File

@@ -69,9 +69,9 @@
provider: 'weixin',
scene : 'WXSceneSession',
type : 0,
href : 'http://invite.uzchain.tech?invitation_code=' + this.invite,
href : 'https://invite.gongli.vip?invitation_code=' + this.invite,
title : '共力生态',
summary : '共力生态进入web3.0',
summary : '共进入Web 3.0推动全体成员共同富裕',
imageUrl: 'https://gl-ecological.oss-cn-zhangjiakou.aliyuncs.com/images/2022/06/11/3b7e6e330f465ecbf136d15def1039fd.jpg',
fail(err) {
uni.showToast({
@@ -86,8 +86,8 @@
provider: 'weixin',
scene : 'WXSceneTimeline',
type : 0,
href : 'http://invite.uzchain.tech?invitation_code=' + this.invite,
title : '共力生态 共赢 共享',
href : 'https://invite.gongli.vip?invitation_code=' + this.invite,
summary : '共商 共建 共赢 带您进入Web 3.0!推动全体成员共同富裕',
imageUrl: 'https://gl-ecological.oss-cn-zhangjiakou.aliyuncs.com/images/2022/06/11/3b7e6e330f465ecbf136d15def1039fd.jpg',
fail(err) {
uni.showToast({

View File

@@ -13,11 +13,11 @@
<view class="life-sign-icon-text">{{isSign ? 'GLF': '签到'}}</view>
<image class="life-sign-icon-image" :src="require('@/static/icon/sign_btn.png')" alt="签到"></image>
</view>
<block v-if="isSign">
<view v-show="isSign">
<view class="life-sign-num">{{base_hour}}</view>
<view class="life-sign-unit">GLF/h</view>
<view class="life-sign-time">
<u-count-down :time="nextSignAt" format="HH:mm:ss" @change="TimeDown">
<u-count-down ref="countDown" :time="nextSignAt" format="HH:mm:ss" :autoStart="false" @change="TimeDown" @finish="TimeFinish">
<view class="time">
<text class="time__item">{{ timeData.hours > 9 ? timeData.hours: '0'+timeData.hours}}:</text>
<text class="time__item">{{ timeData.minutes > 9 ? timeData.minutes: '0'+timeData.minutes }}:</text>
@@ -25,7 +25,7 @@
</view>
</u-count-down>
</view>
</block>
</view>
</view>
<image class="life-cover-back" :src="require('@/static/life/back.png')"></image>
<view class="life-role">
@@ -66,20 +66,20 @@
<image src="../../static/img/team_back.jpg" mode="aspectFill"></image>
</view>
</view>
<view class="life-flex-item other" @click="onToast('消息中心暂未开放尽情期待')">
<!-- <view class="life-flex-item other" @click="onToast('消息中心暂未开放尽情期待')">
<view class="other-title">
<image src="../../static/life/icon_05.png" mode="widthFix"></image>
消息中心
</view>
<view class="other-subtitle">{{message > 0 ? message + '条未读消息': '暂无消息'}}</view>
<image class="other-back" src="../../static/life/icon_07.png"></image>
</view>
</view> -->
<view class="life-flex-item other" @click="onNav({name: 'Invitation'}, '')">
<view class="other-title">
<image src="../../static/life/icon_03.png" mode="widthFix"></image>
邀请朋友
</view>
<view class="other-subtitle">加速共力增长</view>
<view class="other-subtitle">加速共力增长</view>
<image class="other-back" src="../../static/life/icon_08.png"></image>
</view>
<view class="life-flex-item other" @click="onNav({name: 'Order',params:{index:0}})">
@@ -90,14 +90,14 @@
<view class="other-subtitle">{{order.all || '暂无订单'}}</view>
<image class="other-back" src="../../static/life/icon_09.png"></image>
</view>
<view class="life-flex-item other" @click="onToast('共力好友暂未开放尽情期待')">
<!-- <view class="life-flex-item other" @click="onToast('共力好友暂未开放尽情期待')">
<view class="other-title">
<image src="../../static/life/icon_06.png" mode="widthFix"></image>
共力好友
</view>
<view class="other-subtitle">在线即时互动</view>
<image class="other-back" src="../../static/life/icon_10.png"></image>
</view>
</view> -->
</view>
</view>
</template>
@@ -121,10 +121,10 @@
},
message: 0,
order: {
all: 0,
init: 0,
pay: 0,
delivered: 0
all : 0,
init : 0,
pay : 0,
delivered : 0
},
nextSignAt : 0,
glz : 0,
@@ -142,6 +142,11 @@
TimeDown(e){
this.timeData = e
},
// 倒计时结束
TimeFinish(){
this.isSign = false
clearInterval(account)
},
// 共力人生
getLife(){
life().then(res => {
@@ -168,10 +173,22 @@
},
// 计时器
outTime(){
this.$nextTick(() => {
try{
// 计算数值
account = setInterval(() =>{
let newGlz = (Number(this.glz) + this.base_seconds)
this.glz = newGlz.toFixed(4)
}, 1000)
// 签到开始倒计时
this.$refs.countDown.start();
}catch(e){
uni.showToast({
title: e,
icon : 'none'
})
}
})
},
// 签到
onSign(){
@@ -213,6 +230,7 @@
},
onHide() {
clearInterval(account)
this.$refs.countDown.pause();
}
}
</script>

View File

@@ -26,7 +26,7 @@
<view class="vip-card">
<view class="title">
<image src="@/static/user/icon_06.png" mode="widthFix" />
共力会员
{{serial === '' ? '共力会员': 'NO:' + serial}}
</view>
<view class="subtitle">
<u-notice-bar :text="cardText" icon="" bgColor="" duration="3000" color="#fcc692" direction="column">
@@ -38,7 +38,7 @@
<!-- 健康数据 -->
<view class="health-flex">
<view class="health-flex-item" @click="onBtn('AccountIntegral', {})">
<view class="title">共力</view>
<view class="title">共力</view>
<view class="num">{{account.glz}}</view>
</view>
<view class="health-flex-item" @click="onBtn('AccountDt', {})">
@@ -53,18 +53,22 @@
<view class="title">我的订单</view>
</view>
<view class="order-box-item" @click="onBtn('Order', { index: 1 })">
<view class="number" v-show="order.init > 0">{{order.init}}</view>
<image class="icon" src="@/static/user/order_icon_01.png" mode="widthFix" />
<view class="title">待付款</view>
</view>
<view class="order-box-item" @click="onBtn('Order', { index: 2 })">
<view class="number" v-show="order.paid > 0">{{order.paid}}</view>
<image class="icon" src="@/static/user/order_icon_02.png" mode="widthFix" />
<view class="title">待发货</view>
</view>
<view class="order-box-item" @click="onBtn('Order', { index: 3 })">
<view class="number" v-show="order.delivered > 0">{{order.delivered}}</view>
<image class="icon" src="@/static/user/order_icon_03.png" mode="widthFix" />
<view class="title">待收货</view>
</view>
<view class="order-box-item" @click="onBtn('OrderRefund')">
<view class="number" v-show="order.refund > 0">{{order.refund}}</view>
<image class="icon" src="@/static/user/order_icon_05.png" mode="widthFix" />
<view class="title">退换货</view>
</view>
@@ -120,6 +124,16 @@
</view>
</slot>
</u-modal>
<!-- 输入支付密码 -->
<u-modal :show="showIv" title="请输入钱包支付密码" :showCancelButton="true" confirmColor="#34CE98" negativeTop="160"
@confirm="validationIv" @cancel="()=>{ this.showIv = false, this.iv = '' }">
<slot name="default">
<view class="mnemonic-pwass">
<input class="iv-input" :focus="true" type="password" v-model="iv" maxlength="10"
placeholder="输入密聊密码" />
</view>
</slot>
</u-modal>
</view>
</template>
@@ -128,6 +142,9 @@
info,
chainSeed
} from '@/apis/interfaces/user';
import {
payPassword
} from '@/apis/interfaces/account.js'
import {
getVersions
} from '@/apis/interfaces/versions.js'
@@ -151,7 +168,17 @@
dt : 0.00
},
mnemonic : '',
wordsShow: false
wordsShow: false,
order : {
init : 0,
paid : 0,
delivered: 0,
refund : 0
},
serial : '',
hasPassword : false,
showIv : false,
iv : ''
};
},
onShow() {
@@ -171,9 +198,12 @@
addr : res.addr,
avatar : res.avatar,
isOpenVip : res.is_open_vip,
username : res.username
}
this.identity = res.identity
this.account = res.account
this.serial = res.serial
this.hasPassword = res.has_transfer_password
})
.catch(err => {
uni.showToast({
@@ -184,8 +214,32 @@
},
// 导出助记词
onMnemonic(){
chainSeed().then(res => {
if(!this.hasPassword){
uni.showModal({
title : '提示',
content : '暂未设置账户支付密码,无法导出助记词,请设置密码后重试',
cancelText : '稍后设置',
confirmText : '立即设置',
success : modalRes => {
if(modalRes.confirm){
this.$Router.push({name: 'AccountResetPassword', params: {phone: this.userInfo.username}})
return
}
this.showIv = false
}
})
return
}
this.showIv = true
},
// 验证支付密码
validationIv(){
chainSeed({
password: this.iv
}).then(res => {
this.mnemonic = res.seed
this.showIv = false
this.wordsShow = true
}).catch(err => {
uni.showToast({
@@ -462,6 +516,7 @@
justify-content: space-between;
&-item {
position: relative;
width: 25%;
padding: $padding $padding/2;
text-align: center;
@@ -476,6 +531,19 @@
font-size: $title-size-sm;
margin-top: $margin/3;
}
.number{
position: absolute;
top: 22rpx;
z-index: 2;
right: 20%;
background: $text-price;
color: white;
font-size: 22rpx;
min-width: 30rpx;
line-height: 30rpx;
border-radius: 50%;
}
}
}

View File

@@ -2,10 +2,10 @@
<view :class="{'vip': isOpen}">
<view class="vip-card">
<view class="vip-user">
<image class="user-cover" :src="user.avatar" mode="aspectFill"></image>
<image class="user-cover" :src="user.avatar || user.figure_path" mode="aspectFill"></image>
<view class="user-nickname">{{user.nickname}}</view>
<view class="user-date">到期日期{{endedAt}}</view>
<view class="vip-renewal" v-if="!isOpen">续费</view>
<view class="vip-renewal" @click="onOpenVip" v-if="!isOpen">续费</view>
</view>
<view class="user-cards">
<image class="vip-icon" :src="identity.cover_url" mode="widthFix"></image>
@@ -42,8 +42,21 @@
</view>
<view class="vip-content-title">会员折扣说明</view>
<view class="vip-content-rich">
<view v-for="(item,index) in prices" :key="index">{{item.open_number}} - {{item.open_number + item.stock}}名享开通会员折扣价{{item.price}}</view>
<view>10000后会员恢复原价199.00</view>
<view class="vip-content-rich-flex vip-content-rich-header">
<view class="item">名额</view>
<view class="item">折扣价</view>
<view class="item">剩余名额</view>
</view>
<view class="vip-content-rich-flex" v-for="(item,index) in prices" :key="index">
<view class="item">{{item.open_number}} - {{item.open_number + item.stock}}</view>
<view class="item">{{item.price}}</view>
<view class="item">{{item.margin === 0 ? '满员': item.margin}}</view>
</view>
<view class="vip-content-rich-flex">
<view class="item">10000</view>
<view class="item">199.00</view>
<view class="item">-</view>
</view>
</view>
</view>
<view class="footer-vip" v-if="isOpen">
@@ -99,6 +112,7 @@
// 获取会员信息
getVipInfo(){
vip().then(res =>{
console.log(res)
this.firstRule = res.first_rule
this.isOpen = res.is_open
this.prices = res.prices
@@ -308,9 +322,32 @@
}
}
.vip-content-rich{
margin-top: 20rpx;
font-size: 28rpx;
line-height: 50rpx;
color: gray;
border:solid 1rpx #fce3c5;
.vip-content-rich-flex{
display: flex;
justify-content: space-between;
line-height: 60rpx;
font-size: 28rpx;
& > .item{
width: 33.33%;
border-top: solid 1rpx #fce3c5;
text-align: center;
color: #9f5529;
border-right: solid 1rpx #fce3c5;
box-sizing: border-box;
&:last-child{
border-right: none;
}
}
}
.vip-content-rich-header{
background: #fce3c5;
color: #9f5529;
}
}
.vip-privilege{
display: flex;
@@ -353,7 +390,7 @@
width: 100%;
padding: $padding;
box-sizing: border-box;
background: white;
background: linear-gradient(to bottom, rgba(255,255,255,.0), #FFFFFF);
button{
height: 90rpx;
line-height: 90rpx;

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long