会员中心我的伙伴

This commit is contained in:
zhangmanman
2021-09-26 09:56:16 +08:00
parent 9d9cf4c580
commit 2f75c30bac
163 changed files with 33588 additions and 49 deletions

View File

@@ -46,7 +46,15 @@ const userClause = () => {
// 邀请好友 // 邀请好友
const userInvite = () => { const userInvite = () => {
return request({ return request({
url: 'articles/invite' url: 'user/invite'
})
}
// 我的伙伴
const userPartne = (data) => {
return request({
url: 'user/relations',
data: data
}) })
} }
@@ -56,5 +64,6 @@ export {
userCustomer, userCustomer,
userHelp, userHelp,
userClause, userClause,
userInvite userInvite,
userPartne
} }

View File

@@ -34,6 +34,13 @@
"style": { "style": {
"navigationBarTitleText": "帮助中心" "navigationBarTitleText": "帮助中心"
} }
}, {
"path": "pages/user/partner",
"name": "userPartner",
"auth": true,
"style": {
"navigationBarTitleText": "我的伙伴"
}
}, { }, {
"path": "pages/user/clause", "path": "pages/user/clause",
"name": "userClause", "name": "userClause",
@@ -42,10 +49,23 @@
"navigationBarTitleText": "服务条款" "navigationBarTitleText": "服务条款"
} }
}, { }, {
"path": "pages/instrument/basics", "path": "pages/vip/vip",
"name": "instrumentBasics", "name": "vipIndex",
"style": { "style": {
"navigationBarTitleText": "企业基础信息" "navigationBarTitleText": "开通节点"
}
}, {
"path": "pages/vip/agree",
"name": "vipAgree",
"style": {
"navigationBarTitleText": "服务条款"
}
}, {
"path": "pages/setting/setting",
"name": "setting",
"auth": true,
"style": {
"navigationBarTitleText": "设置中心"
} }
}, { }, {
"path": "pages/goods/management", "path": "pages/goods/management",

View File

@@ -207,7 +207,7 @@
button{ button{
height: 90rpx; height: 90rpx;
line-height: 90rpx; line-height: 90rpx;
background-color: $mian-color-deep; background-color: $mian-color;
border-radius: 0; border-radius: 0;
color: white; color: white;
font-size: $title-size-lg; font-size: $title-size-lg;

View File

@@ -4,10 +4,10 @@
<!-- 邀请码图 --> <!-- 邀请码图 -->
<view class="codeBack"> <view class="codeBack">
<image class="codeBack-img" src="/static/user/user-codeIcon.png" mode="widthFix"></image> <image class="codeBack-img" src="/static/user/user-codeIcon.png" mode="widthFix"></image>
<view class="codeBack-avatar"> <view class="codeBack-avatar" v-if="inviteData.user_info">
<image src="/static/user/call.png" mode="aspectFill"></image> <image :src="inviteData.user_info.avatar ? inviteData.user_info.avatar : '/static/user/user-portrait.png'" mode="aspectFill"></image>
<view class=""> <view class="">
张慢慢 {{inviteData.user_info.nickname}}
</view> </view>
</view> </view>
<view class="codeBack-top"> <view class="codeBack-top">
@@ -15,7 +15,7 @@
您的邀请码 您的邀请码
</view> </view>
<view class="codeBack-number"> <view class="codeBack-number">
8012568 {{inviteData.invite}}
</view> </view>
<view class="codeBack-copy" @click="copyCenter(inviteData.invite)"> <view class="codeBack-copy" @click="copyCenter(inviteData.invite)">
复制 复制
@@ -51,6 +51,7 @@
// 二维码 // 二维码
inviteInfo(){ inviteInfo(){
userInvite().then(res => { userInvite().then(res => {
console.log(res)
this.inviteData = res this.inviteData = res
}).catch(err => { }).catch(err => {
uni.showToast({ uni.showToast({
@@ -161,7 +162,7 @@
color: #7c52fc color: #7c52fc
} }
.codeBack-number { .codeBack-number {
font-size: 60rpx; font-size: 40rpx;
color: #7c52fc; color: #7c52fc;
text-transform:uppercase; text-transform:uppercase;
font-weight: 700; font-weight: 700;
@@ -196,6 +197,8 @@
} }
.codeBack-avatar { .codeBack-avatar {
margin-top: $margin * 2; margin-top: $margin * 2;
font-size: 32rpx;
font-weight: 600;
image { image {
width: 140rpx; width: 140rpx;
height: 140rpx; height: 140rpx;
@@ -204,7 +207,7 @@
} }
} }
.codeBack-yard { .codeBack-yard {
padding: $padding $padding * 4 $padding * 2; padding: $padding $padding * 2 $padding * 2;
text-align: center; text-align: center;
position: relative; position: relative;
font-size: $title-size-lg; font-size: $title-size-lg;

View File

@@ -68,7 +68,7 @@
<view class="userVip-top-name" v-if="userIdentity.right"> <view class="userVip-top-name" v-if="userIdentity.right">
开通{{userIdentity.right.name}} 开通{{userIdentity.right.name}}
</view> </view>
<view class="userVip-top-btn"> <view class="userVip-top-btn" v-if="!userIdentity.is_top" @click="$Router.push({name: 'vipIndex'})">
去开通<image class="userVip-top-arrow" src="/static/user/userVip_arrow.png"></image> 去开通<image class="userVip-top-arrow" src="/static/user/userVip_arrow.png"></image>
</view> </view>
</view> </view>
@@ -92,13 +92,18 @@
<view class="userVip-rightst-more">全部权益 <image class="userVip-rightst-more-img" src="/static/user/userVip_more_arrow.png"></image></view> <view class="userVip-rightst-more">全部权益 <image class="userVip-rightst-more-img" src="/static/user/userVip_more_arrow.png"></image></view>
</view> </view>
<view class="userVip-rightst-list" v-if="userIdentity.right"> <view class="userVip-rightst-list" v-if="userIdentity.right">
<block v-for="(item, index) in userIdentity.right.rights" :key="index"> <view v-for="(item, index) in userIdentity.right.rights" :key="index" class="userVip-rightst-label">
<view class="userVip-rightst-label" v-if="index <= 3"> <block v-if="index <= 3">
<image class="userVip-rightst-img" :src="item.cover"></image> <image class="userVip-rightst-img" :src="item.cover"></image>
<view class="userVip-rightst-name">{{item.name}}</view> <view class="nowrap userVip-rightst-name">{{item.name}}</view>
</view>
</block> </block>
</view> </view>
<view class="userVip-rightst-label">
<image class="userVip-rightst-img" src="/static/user/userRightst_icon_more.png"></image>
<view class="nowrap userVip-rightst-name">敬请期待</view>
</view>
</view>
</view> </view>
</view> </view>
</view> </view>
@@ -149,16 +154,16 @@
我的伙伴 我的伙伴
</view> </view>
<view class="partner-list" v-if="userData.relation_count"> <view class="partner-list" v-if="userData.relation_count">
<view class="partner-label"> <view class="partner-label" @click="$Router.push({name: 'userPartner', params:{larer:''}})">
<view class="partner-label-name">伙伴总数</view> <view class="partner-label-name">伙伴总数</view>
<view class="partner-label-number">{{userData.relation_count.all || 0}}</view> <view class="partner-label-number">{{userData.relation_count.all || 0}}</view>
</view> </view>
<view class="partner-label"> <view class="partner-label" @click="$Router.push({name: 'userPartner', params:{larer:1}})">
<view class="partner-label-name">直接伙伴</view> <view class="partner-label-name">直接伙伴</view>
<view class="partner-label-number">{{userData.relation_count.one || 0}}</view> <view class="partner-label-number">{{userData.relation_count.one || 0}}</view>
</view> </view>
<view class="partner-label"> <view class="partner-label" @click="$Router.push({name: 'userPartner', params:{larer:2}})">
<view class="partner-label-name">接伙伴</view> <view class="partner-label-name">接伙伴</view>
<view class="partner-label-number">{{userData.relation_count.two || 0}}</view> <view class="partner-label-number">{{userData.relation_count.two || 0}}</view>
</view> </view>
</view> </view>
@@ -178,7 +183,7 @@
<image class="tool-label-img" src="/static/user/userTool-01.png" mode=""></image> <image class="tool-label-img" src="/static/user/userTool-01.png" mode=""></image>
<view class="tool-label-name">优惠券管理</view> <view class="tool-label-name">优惠券管理</view>
</view> </view>
<view class="tool-label"> <view class="tool-label" @click="$Router.push({name: ''})">
<image class="tool-label-img" src="/static/user/userTool-02.png" mode=""></image> <image class="tool-label-img" src="/static/user/userTool-02.png" mode=""></image>
<view class="tool-label-name">营销推广码</view> <view class="tool-label-name">营销推广码</view>
</view> </view>
@@ -190,9 +195,9 @@
<image class="tool-label-img" src="/static/user/userTool-04.png" mode=""></image> <image class="tool-label-img" src="/static/user/userTool-04.png" mode=""></image>
<view class="tool-label-name">部门门店</view> <view class="tool-label-name">部门门店</view>
</view> </view>
<view class="tool-label" @click="$Router.push({name: 'instrumentBasics'})"> <view class="tool-label" @click="$Router.push({name: ''})">
<image class="tool-label-img" src="/static/user/userTool-05.png" mode=""></image> <image class="tool-label-img" src="/static/user/userTool-05.png" mode=""></image>
<view class="tool-label-name">员管理</view> <view class="tool-label-name">管理</view>
</view> </view>
</view> </view>
</view> </view>
@@ -207,18 +212,18 @@
<image class="tool-label-img" src="/static/user/userServe-00.png" mode=""></image> <image class="tool-label-img" src="/static/user/userServe-00.png" mode=""></image>
<view class="tool-label-name">专属客服</view> <view class="tool-label-name">专属客服</view>
</view> </view>
<navigator hover-class="none" class="tool-label" @click="$Router.push({name: 'userCode'})"> <view class="tool-label" @click="$Router.push({name: 'userCode'})">
<image class="tool-label-img" src="/static/user/userServe-01.png" mode=""></image> <image class="tool-label-img" src="/static/user/userServe-01.png" mode=""></image>
<view class="tool-label-name">邀请好友</view> <view class="tool-label-name">邀请好友</view>
</navigator> </view>
<navigator hover-class="none" class="tool-label" @click="$Router.push({name: 'userHelp'})"> <view class="tool-label" @click="$Router.push({name: 'userHelp'})">
<image class="tool-label-img" src="/static/user/userServe-02.png" mode=""></image> <image class="tool-label-img" src="/static/user/userServe-02.png" mode=""></image>
<view class="tool-label-name">帮助中心</view> <view class="tool-label-name">帮助中心</view>
</navigator> </view>
<navigator hover-class="none" class="tool-label" @click="$Router.push({name: 'userClause'})"> <view class="tool-label" @click="$Router.push({name: 'userClause'})">
<image class="tool-label-img" src="/static/user/userServe-03.png" mode=""></image> <image class="tool-label-img" src="/static/user/userServe-03.png" mode=""></image>
<view class="tool-label-name">服务条款</view> <view class="tool-label-name">服务条款</view>
</navigator> </view>
</view> </view>
</view> </view>
</view> </view>
@@ -229,7 +234,6 @@
<view class="item" @click="$Router.push({name: 'couponsManagement'})">优惠券管理</view> <view class="item" @click="$Router.push({name: 'couponsManagement'})">优惠券管理</view>
<view class="item" @click="$Router.push({name: 'instrumentBasics'})">店员管理</view> <view class="item" @click="$Router.push({name: 'instrumentBasics'})">店员管理</view>
<view class="item" @click="$Router.push({name: 'instrumentCustomer'})">成交客户</view> <view class="item" @click="$Router.push({name: 'instrumentCustomer'})">成交客户</view>
<view class="item" @click="$Router.push({name: 'instrumentBasics'})">店员管理</view>
<view class="item" @click="$Router.push({name: 'Personal'})">个人认证</view> <view class="item" @click="$Router.push({name: 'Personal'})">个人认证</view>
<view class="item" @click="$Router.push({name: 'companyApprove'})">企业认证</view> <view class="item" @click="$Router.push({name: 'companyApprove'})">企业认证</view>
<view class="item" @click="$Router.push({name: 'companyApprove', params: { form_type: 'put' }})">编辑企业认证</view> <view class="item" @click="$Router.push({name: 'companyApprove', params: { form_type: 'put' }})">编辑企业认证</view>
@@ -247,6 +251,7 @@
scroll : 0, // 回弹效果 scroll : 0, // 回弹效果
userData : '', // 用户信息 userData : '', // 用户信息
userIdentity : '', // 用户身份 userIdentity : '', // 用户身份
helpDoc : '', // 资产说明
classStyle : false, // 下拉vip时改变样式 classStyle : false, // 下拉vip时改变样式
animatedShow : false, // vip上下跳动效果 animatedShow : false, // vip上下跳动效果
newList : [], newList : [],
@@ -267,11 +272,11 @@
// 获取用户信息 // 获取用户信息
this.userInfo(); this.userInfo();
// 获取公告列表
this.newInfo();
// 获取专属客服二维码 // 获取专属客服二维码
this.customerInfo(); this.customerInfo();
// 获取公告列表
this.newInfo();
}, },
onHide() { onHide() {
// 移除vip模块跳动样式 // 移除vip模块跳动样式
@@ -282,8 +287,8 @@
userInfo() { userInfo() {
// 读取配置信息 // 读取配置信息
userIndex().then(res=>{ userIndex().then(res=>{
console.log(res)
this.userData = res this.userData = res
this.helpDoc = res.help_doc
this.userIdentity = res.identityShow this.userIdentity = res.identityShow
}).catch(err =>{ }).catch(err =>{
uni.showToast({ uni.showToast({
@@ -354,10 +359,12 @@
// 友情提示信息 // 友情提示信息
showHelp(type) { showHelp(type) {
let content = '能量球钱包' let title = '能量球',
if(type == 'chip') content = '能量碎片' content = this.helpDoc.energy_ball.description
if(type == 'chip') title = '能量碎片'
if(type == 'chip') content = this.helpDoc.energy_shard.description
uni.showModal({ uni.showModal({
title: '友情提示', title: title,
content: content, content: content,
showCancel: false showCancel: false
}) })
@@ -585,8 +592,8 @@
z-index: 1; z-index: 1;
.user-tool-icon { .user-tool-icon {
padding-left: $padding; padding-left: $padding;
width: $uni-img-size-sm + 2; width: $uni-img-size-sm;
height: $uni-img-size-sm + 2; height: $uni-img-size-sm;
} }
} }
.user-back { .user-back {
@@ -612,7 +619,7 @@
position: relative; position: relative;
.user-portrait-head { .user-portrait-head {
border-radius: $uni-border-radius-circle; border-radius: $uni-border-radius-circle;
border: 4rpx solid #b197ff; border: 4rpx solid #bfaaff;
position: absolute; position: absolute;
left: 8rpx; left: 8rpx;
top: 14rpx; top: 14rpx;
@@ -662,9 +669,9 @@
margin: 30rpx 0 5rpx; margin: 30rpx 0 5rpx;
font-size: 36rpx; font-size: 36rpx;
.user-name-identity { .user-name-identity {
width: 92rpx; width: 100rpx;
height: 36rpx; height: 36rpx;
margin: 6rpx 0 0 10rpx; margin: 4rpx 0 0 10rpx;
} }
} }
.user-status { .user-status {
@@ -729,11 +736,13 @@
.userVip-rights { .userVip-rights {
margin-top: 40rpx; margin-top: 40rpx;
border-radius: 10rpx; border-radius: 10rpx;
padding: 20rpx; padding: 20rpx 0;
box-sizing: border-box; box-sizing: border-box;
background-image:linear-gradient(to bottom, #dbceff, #bb9fff); background-image:linear-gradient(to bottom, #dbceff, #bb9fff);
color: #5723af; color: #5723af;
.userVip-rightst-title { .userVip-rightst-title {
padding: 0 20rpx;
box-sizing: border-box;
font-size: 30rpx; font-size: 30rpx;
display: flex; display: flex;
.userVip-rightst-title-name { .userVip-rightst-title-name {
@@ -754,12 +763,12 @@
display: flex; display: flex;
.userVip-rightst-label { .userVip-rightst-label {
display: inline-block; display: inline-block;
flex: 4; width: 25%;
text-align: center; text-align: center;
font-size: 26rpx; font-size: 26rpx;
.userVip-rightst-img { .userVip-rightst-img {
width: 80rpx; width: 90rpx;
height: 80rpx; height: 90rpx;
margin-bottom: 10rpx; margin-bottom: 10rpx;
} }
} }

144
pages/user/partner.vue Normal file
View File

@@ -0,0 +1,144 @@
<template>
<view class="content">
<!-- 分类 -->
<view class="tabs">
<view class="item" :class="{'show': larer == ''}" @click="onTabs('')">全部</view>
<view class="item" :class="{'show': larer == '1'}" @click="onTabs('1')">直接</view>
<view class="item" :class="{'show': larer == '2'}" @click="onTabs('2')">间接</view>
</view>
<view class="partner-list">
<view class="partner-label" v-for="(item, index) in lists" :larer='larer'>
<image class="partner-avatar" :src="item.avatar ? item.avatar : '/static/user/user-portrait.png'" mode="aspectFill"></image>
<view class="partner-cont">
<view class="partner-name">
<view class="partner-nickname">
{{item.nickname}}
</view>
<image v-if="item.identity" class="partner-identity" :src="item.identity.cover" mode="widthFix"></image>
</view>
<view class="partner-tel">
{{item.username}}
</view>
</view>
</view>
</view>
</view>
</template>
<script>
import { userPartne } from '@/apis/interfaces/user'
export default {
data() {
return {
larer : '',
lists : [],
pages : {}
};
},
onShow() {
this.larer = this.$Route.query.larer
// 获取伙伴列表
this.getPartner()
},
methods: {
// 伙伴列表
getPartner() {
userPartne({
larer: this.larer
}).then(res => {
this.lists = res.users
})
},
// tabs
onTabs(value){
if(value == this.larer) return
this.lists = []
this.larer = value
this.getPartner()
}
}
}
</script>
<style lang="scss" scoped>
.content{
padding-top: 90rpx;
}
// tabs
.tabs{
position: fixed;
top: 0;
left: 0;
right: 0;
z-index: 99;
display: flex;
justify-content: space-around;
background: white;
padding: 15rpx 0;
font-size: $title-size-lg;
color: $text-gray;
.item{
height: 60rpx;
line-height: 60rpx;
&.show{
color: $text-price;
border-bottom: solid 4rpx $text-price;
}
}
}
// 列表
.partner-list{
margin: calc(#{$padding} - 10rpx);
display: flex;
flex-wrap: wrap;
background-color: #FFFFFF;
.partner-label {
padding: 20rpx;
box-sizing: border-box;
position: relative;
border-radius: 4rpx;
width: 100%;
&::after {
position: absolute;
content: '';
left: 0;
bottom: 0;
width: 100%;
height: 1rpx;
background-color: #f8f8f8;
}
&:last-child::after {
display: none;
}
.partner-avatar {
width: 100rpx;
height: 100rpx;
border-radius: 50%;
}
.partner-cont {
position: absolute;
width: 100%;
left: 0;
top: 0;
padding: 22rpx 20rpx 20rpx 150rpx;
box-sizing: border-box;
.partner-name {
display: flex;
margin-bottom: 15rpx;
.partner-nickname {
font-size: 30rpx;
font-weight: 600;
margin-right: 10rpx;
}
.partner-identity {
width: 120rpx;
}
}
}
}
}
</style>

38
pages/vip/agree.vue Normal file
View File

@@ -0,0 +1,38 @@
<template>
<view>
<view class="contentTitle">
<rich-text :nodes="content"></rich-text>
</view>
</view>
</template>
<script>
import { userAgree } from '@/apis/interfaces/vip'
export default {
data() {
return {
content: ''
}
},
created() {
userAgree().then(res => {
this.content = res.content
}).catch(err =>{
uni.showToast({
title: err.message,
icon : 'none'
})
})
},
methods: {
}
}
</script>
<style lang="scss" scoped>
.contentTitle {
padding: $padding;
box-sizing: border-box;
}
</style>

541
pages/vip/vip.vue Normal file
View File

@@ -0,0 +1,541 @@
<template>
<view class="content" v-if="!loding">
<swiper class="vip-container" previous-margin="55rpx" next-margin="55rpx" circular @change="swiperChange">
<swiper-item class="swiper-item" v-for="(item, index) in identitie" :key="index">
<view class="vip-item" :class="tabsIndex == index ? 'color-item-img' : ''">
<image class="vip-back" :src="item.card_cover" mode="scaleToFill"></image>
<view class="vip-cont">
<view class="vip-name">
{{item.name}}<image class="vip-name-img" @click="showRemark(item.name, item.node_definition)" src="../../static/user/vip_privilege_03.png" mode="widthFix"></image>
</view>
<view class="vip-number" v-if="item.count">
{{item.count.stock > 0 ? '剩余名额:' + item.count.residue : '不限名数'}}
</view>
<view class="vip-tips">
<!-- 轻节点 -->
<view v-if="item.identity_id == 2" class="vip-tips-text vip-tips-color-00">
{{item.title}}
</view>
<!-- 会员 -->
<view v-else-if="item.identity_id == 3" class="vip-tips-text vip-tips-color-01">
{{item.title}}
</view>
<!-- VIP节点 -->
<view v-else-if="item.identity_id == 4" class="vip-tips-text vip-tips-color-02">
{{item.title}}
</view>
<!-- 主节点 -->
<view v-else-if="item.identity_id == 5" class="vip-tips-text vip-tips-color-03">
{{item.title}}
</view>
<!-- 超级节点 -->
<view v-else-if="item.identity_id == 6" class="vip-tips-text vip-tips-color-04">
{{item.title}}
</view>
</view>
</view>
</view>
</swiper-item>
</swiper>
<!-- 会员特权 -->
<view class="privilege">
<view class="privilege-list">
<image class="privilege-img" src="/static/user/vip_privilege_00.png" mode=""></image>
<view class="privilege-text">
<view class="privilege-name">
节点定义
</view>
{{identitie[tabsIndex].node_definition}}
</view>
</view>
<view class="privilege-list">
<image class="privilege-img" src="/static/user/vip_privilege_01.png" mode=""></image>
<view class="privilege-text">
<view class="privilege-name">
升级条件
</view>
<view class="privilege-label" :class="{'active' : item.finish == true}" v-for="(item, index) in identitie[tabsIndex].get_condition">
&{{item.message}}
</view>
</view>
</view>
<view class="privilege-list">
<image class="privilege-img" src="/static/user/vip_privilege_02.png" mode=""></image>
<view class="privilege-text">
<view class="privilege-name">
节点权益
</view>
<view class="privilege-label privilege-right" v-for="(item, index) in identitie[tabsIndex].rights">
&{{item.remark}}
</view>
</view>
</view>
</view>
<!-- 用户协议 -->
<view class="agree">
<view class="agree-tips" @click="$Router.push({name: 'vipAgree'})">
请仔细阅读并确认服务协议
</view>
</view>
<view class="agree-btn" @click="agreeChange">
<radio :checked="selected" style="transform: scale(.7);" color="#7c52fc"></radio>会员服务协议
</view>
<!-- 开通按钮 -->
<view class="footer">
<block v-if="identitie[tabsIndex].identity_id == 2">
<image class="footer-btn" :src="identitie[tabsIndex].button_cover" mode="widthFix" @click="openUrl"></image>
</block>
<block v-else>
<image class="footer-btn" :src="identitie[tabsIndex].button_cover" mode="widthFix" @click="openOrder"></image>
</block>
<!-- <button class="footer-btn" type="default" >
<view class="footer-btn-num">
合计{{total}}
</view>
<view class="footer-btn-pay">
立即支付
</view>
</button> -->
</view>
</view>
</template>
<script>
import { identities, vipOrder, vipWechatPay, vipCont } from '@/apis/interfaces/vip'
export default {
data() {
return {
loding : true,
tabsIndex : 0,
user : {},
identitie : [],
rights : [],
description : '',
identityTime: '', // 到期时间
sumNumber : 1, // 开通年限
total : '', // 开通年限总资金额
selected : false, // 用户协议
}
},
created() {
// 获取当前用户信息
this.idenInfo();
},
methods: {
// 当前用户信息
idenInfo(){
identities().then(res => {
console.log(res.identities)
this.loding = false
this.identitie = res.identities
this.rights = res.identities[this.tabsIndex].rights
this.total = res.identities[this.tabsIndex].price
}).catch(err =>{
uni.showToast({
title: err.message,
icon : 'none'
})
})
},
// 切换开通身份
swiperChange(e) {
this.tabsIndex = e.detail.current
// 获取当前用户信息
this.idenInfo();
},
// 开通会员
openOrder(){
if(this.selected == false) {
uni.showToast({
title: '请勾选用户协议',
icon : 'none'
})
return
}
let identitiesId = this.identitie[this.tabsIndex].identity_id
vipOrder(identitiesId,{
year: 1
}).then(res => {
if(!res.test){
let verifyForm = res
this.wechatPay(res.id)
}else{
// 测试环境
uni.showModal({
title : '开通提示',
content : '会员开通成功,是否继续完成企业认证',
showCancel : true,
cancelText : '稍后认证',
confirmText : '立即认证',
success : modalRes => {
if(modalRes.confirm){
this.$Router.replace({name: 'Approve'})
return
}
this.$Router.back()
},
fail(err) {
}
})
}
}).catch(err =>{
uni.showToast({
title: err.message,
icon : 'none'
})
})
},
// 轻节点身份-跳转个人认证
openUrl() {
this.$Router.push({name: 'Personal'})
},
// 微信支付
wechatPay(id){
vipWechatPay(id).then(res => {
let payConfig = JSON.parse(res.wechat),
payIdentity = res.identity
uni.requestPayment({
provider : "wxpay",
orderInfo : payConfig,
success : payRes => {
console.log(payRes)
},
fail : payErr => {
console.log(payErr)
}
})
}).catch(err =>{
uni.showToast({
title: err.message,
icon : 'none'
})
})
},
// 勾选协议
agreeChange() {
this.selected = !this.selected
},
// 会员权益介绍
showRemark(title, val){
uni.showModal({
title : title,
content : val,
showCancel : false
})
}
}
}
</script>
<style lang="scss" scoped>
page {
background-color: #FFFFFF;
}
.vip-container {
width: 750rpx;
height: 340rpx;
margin-top: $margin;
}
.swiper-item {
width: 640rpx;
height: 340rpx;
display: flex;
}
.vip-item {
width: 640rpx;
height: 340rpx;
border-radius: 20rpx;
position: relative;
.vip-back {
position: absolute;
left: 0;
top: 0;
width: 100%;
height: 100%;
}
.vip-cont {
position: absolute;
left: 0;
top: 0;
width: 100%;
height: 100%;
z-index: 9;
padding: 45rpx 70rpx;
box-sizing: border-box;
.vip-name {
display: flex;
font-size: 46rpx;
color: #ffffff;
font-weight: 600;
.vip-name-img {
width: 36rpx;
height: 36rpx;
margin: 12rpx 20rpx;
}
}
.vip-number {
margin: 10rpx 0 40rpx;
color: #FFFFFF;
font-size: 32rpx;
opacity: .8;
}
.vip-tips {
font-size: 30rpx;
background-color: #e8ebf6;
display: inline-block;
border-radius: 80rpx;
height: 60rpx;
line-height: 60rpx;
padding: 0 30rpx;
.vip-tips-text {
font-weight: 700;
background-clip: text;
color: transparent;
}
.vip-tips-color-00 {
background-image: linear-gradient(to bottom,#6189f0,#b6b9c1);
}
.vip-tips-color-01 {
background-image: linear-gradient(to top,#ffd459,#ff6c52);
}
.vip-tips-color-02 {
background-image: linear-gradient(to top,#e0c9fe,#892edb);
}
.vip-tips-color-03 {
background-image: linear-gradient(to top,#f6b237,#f035e3);
}
.vip-tips-color-04 {
background-image: linear-gradient(to top,#c455ec,#5f76e9);
}
}
}
}
// 会员特权
.privilege {
padding: 20rpx 30rpx 80rpx;
box-sizing: border-box;
.privilege-list {
margin-bottom: 50rpx;
display: flex;
.privilege-img {
width: 74rpx;
height: 74rpx;
}
.privilege-text {
width: calc(100% - 74rpx);
padding-left: 40rpx;
font-size: 32rpx;
color: #999999;
line-height: 52rpx;
.privilege-name {
font-size: 40rpx;
color: #000000;
margin: 10rpx 0 20rpx;
}
.privilege-label.active {
color: #f6b338;
}
.privilege-right {
color: #7877eb;
}
}
}
}
// 用户协议
.agree {
margin: $margin 0;
text-align: center;
.agree-tips {
background-color: #999999;
display: inline-block;
padding: 14rpx $padding;
color: #FFFFFF;
border-radius: 60rpx;
}
}
.agree-btn {
display: flex;
font-size: $title-size-lg;
text-align: left;
color: #999999;
padding: $padding;
}
// .content{
// min-height: 100vh;
// background: #fefaef;
// }
// 开通须知
.notice{
font-size: $title-size-m;
color: $text-gray;
padding: $padding $padding*2 $padding*2;
.title{
padding-bottom: $padding/2;
font-weight: bold;
}
.item{
padding-bottom: $padding/2;
line-height: 40rpx;
text-align: justify;
}
}
// footer
.footer{
padding: 0 $padding;
box-sizing: border-box;
text-align: center;
.footer-btn{
width: 74%;
}
}
// 会员权限
.privilege{
padding: $padding;
.title{
font-weight: bold;
color: #322711;
font-size: $title-size;
text-align: center;
line-height: 90rpx;
}
.privilege-box{
display: flex;
flex-wrap: wrap;
padding: $padding 0;
.item{
width: 25%;
padding: $padding/2;
box-sizing: border-box;
text-align: center;
.icon{
width: 78rpx;
height: 78rpx;
background: #bd995d;
border-radius: 50%;
vertical-align: top;
}
.text{
font-size: $title-size-sm;
color: #201212;
line-height: 60rpx;
}
}
}
}
// 会员卡
.cards{
position: relative;
background: #1f1b1c;
.card{
position: relative;
margin: 0 $margin;
background: linear-gradient(to right, #3b3d4a, #231d1f);
padding: 15rpx;
border-radius: $radius/2;
z-index: 2;
.card-content{
position: relative;
border:solid 1rpx rgba($color: white, $alpha: .4);
border-radius: $radius/2;
padding: 30rpx 180rpx 60rpx 148rpx;
min-height: 98rpx;
.cover{
position: absolute;
left: 30rpx;
top: 30rpx;
width: 98rpx;
height: 98rpx;
border-radius: 50%;
}
.user{
color: rgba($color: white, $alpha: .7);
line-height: 58rpx;
font-size: $title-size-lg;
}
.sub-time{
line-height: 40rpx;
color: #e6ce9e;
font-size: $title-size-sm;
}
.btn{
position: absolute;
color: #261f0f;
background: #e6ce9e;
width: 160rpx;
border-radius: 30rpx;
font-size: $title-size-m;
right: 30rpx;
top: 50rpx;
line-height: 58rpx;
text-align: center;
}
}
}
.cards-angle{
position: absolute;
left: 0;
bottom: 0;
width: 100%;
z-index: 3;
}
&::after{
content: " ";
height: 70rpx;
background: #b29671;
position: absolute;
width: 100%;
bottom: 0;
border-radius: $radius/2;
z-index: 0;
}
}
// tabs
.tabs{
background: #1f1b1c;
color: white;
padding: 0 0 $padding 0;
display: flex;
justify-content: center;
font-size: $title-size-lg;
.item{
margin: 0 $margin;
line-height: 70rpx;
height: 70rpx;
color: rgba($color: white, $alpha: .6);
&.show{
position: relative;
font-weight: bold;
font-size: $title-size;
color: white;
&::after{
position: absolute;
bottom: 0;
left: 20%;
width: 60%;
height: 6rpx;
border-radius: 3rpx;
content: " ";
background: white;
}
}
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.3 KiB

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

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

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@@ -0,0 +1,25 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<script>
var __UniViewStartTime__ = Date.now();
var coverSupport = 'CSS' in window && typeof CSS.supports === 'function' && (CSS.supports('top: env(a)') ||
CSS.supports('top: constant(a)'))
document.write(
'<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' +
(coverSupport ? ', viewport-fit=cover' : '') + '" />')
</script>
<title>View</title>
<link rel="stylesheet" href="view.css" />
</head>
<body>
<div id="app"></div>
<script src="__uniappes6.js"></script>
<script src="view.umd.min.js"></script>
<script src="app-view.js"></script>
</body>
</html>

View File

@@ -0,0 +1,8 @@
var isReady=false;var onReadyCallbacks=[];
var isServiceReady=false;var onServiceReadyCallbacks=[];
var __uniConfig = {"pages":["pages/index/index","pages/found/index","pages/user/index","pages/user/code","pages/user/help","pages/user/partner","pages/user/clause","pages/vip/vip","pages/vip/agree","pages/setting/setting","pages/goods/management","pages/goods/addClassify","pages/goods/add","pages/goods/goodsAuth","pages/coupons/management","pages/coupons/add","pages/coupons/magDetails","pages/coupons/selectGoods","pages/login/login","pages/certification/personal","pages/setting/setting","pages/setting/aboutUs","pages/company/approve"],"window":{"navigationStyle":"custom","backgroundColor":"#F5F5F5"},"tabBar":{"borderStyle":"white","backgroundColor":"#FFFFFF","selectedColor":"#774ffd","iconWidth":"26px","spacing":"0","height":"60px","list":[{"text":"发现能量","iconPath":"static/tabBar/tabBar_icon_00.png","selectedIconPath":"static/tabBar/tabBar_show_00.png","pagePath":"pages/index/index"},{"text":"发现更多","iconPath":"static/tabBar/tabBar_icon_01.png","selectedIconPath":"static/tabBar/tabBar_show_01.png","pagePath":"pages/found/index"},{"text":"节点中心","iconPath":"static/tabBar/tabBar_icon_02.png","selectedIconPath":"static/tabBar/tabBar_show_02.png","pagePath":"pages/user/index"}]},"nvueCompiler":"uni-app","nvueStyleCompiler":"uni-app","renderer":"auto","splashscreen":{"alwaysShowBeforeRender":true,"autoclose":false},"appname":"BlockChainH5","compilerVersion":"3.1.18","entryPagePath":"pages/index/index","networkTimeout":{"request":60000,"connectSocket":60000,"uploadFile":60000,"downloadFile":60000}};
var __uniRoutes = [{"path":"/pages/index/index","meta":{"isQuit":true,"isTabBar":true},"window":{"navigationBarTitleText":"发现能量"}},{"path":"/pages/found/index","meta":{"isQuit":true,"isTabBar":true},"window":{"navigationBarTitleText":"发现更多"}},{"path":"/pages/user/index","meta":{"isQuit":true,"isTabBar":true},"window":{"navigationBarTitleText":"节点中心"}},{"path":"/pages/user/code","meta":{},"window":{"navigationBarTitleText":"邀请好友"}},{"path":"/pages/user/help","meta":{},"window":{"navigationBarTitleText":"帮助中心"}},{"path":"/pages/user/partner","meta":{},"window":{"navigationBarTitleText":"我的伙伴"}},{"path":"/pages/user/clause","meta":{},"window":{"navigationBarTitleText":"服务条款"}},{"path":"/pages/vip/vip","meta":{},"window":{"navigationBarTitleText":"开通节点"}},{"path":"/pages/vip/agree","meta":{},"window":{"navigationBarTitleText":"服务条款"}},{"path":"/pages/setting/setting","meta":{},"window":{"navigationBarTitleText":"设置中心"}},{"path":"/pages/goods/management","meta":{},"window":{"navigationBarTitleText":"商品权证管理"}},{"path":"/pages/goods/addClassify","meta":{},"window":{"navigationBarTitleText":"发布商品类目"}},{"path":"/pages/goods/add","meta":{},"window":{"navigationBarTitleText":"商品权证创建"}},{"path":"/pages/goods/goodsAuth","meta":{},"window":{"navigationBarTitleText":"商品权证认证"}},{"path":"/pages/coupons/management","meta":{},"window":{"navigationBarTitleText":"创建优惠券"}},{"path":"/pages/coupons/add","meta":{},"window":{"navigationBarTitleText":"创建优惠券"}},{"path":"/pages/coupons/magDetails","meta":{},"window":{"navigationBarTitleText":"优惠券详情"}},{"path":"/pages/coupons/selectGoods","meta":{},"window":{"navigationBarTitleText":"关联产品"}},{"path":"/pages/login/login","meta":{},"window":{"navigationBarTitleText":"登录"}},{"path":"/pages/certification/personal","meta":{},"window":{"navigationBarTitleText":"个人认证"}},{"path":"/pages/setting/aboutUs","meta":{},"window":{"navigationBarTitleText":"关于我们"}},{"path":"/pages/company/approve","meta":{},"window":{"navigationBarTitleText":"企业认证"}}];
__uniConfig.onReady=function(callback){if(__uniConfig.ready){callback()}else{onReadyCallbacks.push(callback)}};Object.defineProperty(__uniConfig,"ready",{get:function(){return isReady},set:function(val){isReady=val;if(!isReady){return}const callbacks=onReadyCallbacks.slice(0);onReadyCallbacks.length=0;callbacks.forEach(function(callback){callback()})}});
__uniConfig.onServiceReady=function(callback){if(__uniConfig.serviceReady){callback()}else{onServiceReadyCallbacks.push(callback)}};Object.defineProperty(__uniConfig,"serviceReady",{get:function(){return isServiceReady},set:function(val){isServiceReady=val;if(!isServiceReady){return}const callbacks=onServiceReadyCallbacks.slice(0);onServiceReadyCallbacks.length=0;callbacks.forEach(function(callback){callback()})}});
service.register("uni-app-config",{create(a,b,c){if(!__uniConfig.viewport){var d=b.weex.config.env.scale,e=b.weex.config.env.deviceWidth,f=Math.ceil(e/d);Object.assign(__uniConfig,{viewport:f,defaultFontSize:Math.round(f/20)})}return{instance:{__uniConfig:__uniConfig,__uniRoutes:__uniRoutes,global:void 0,window:void 0,document:void 0,frames:void 0,self:void 0,location:void 0,navigator:void 0,localStorage:void 0,history:void 0,Caches:void 0,screen:void 0,alert:void 0,confirm:void 0,prompt:void 0,fetch:void 0,XMLHttpRequest:void 0,WebSocket:void 0,webkit:void 0,print:void 0}}}});

View File

@@ -0,0 +1,154 @@
/******/ (function(modules) { // webpackBootstrap
/******/ // install a JSONP callback for chunk loading
/******/ function webpackJsonpCallback(data) {
/******/ var chunkIds = data[0];
/******/ var moreModules = data[1];
/******/ var executeModules = data[2];
/******/
/******/ // add "moreModules" to the modules object,
/******/ // then flag all "chunkIds" as loaded and fire callback
/******/ var moduleId, chunkId, i = 0, resolves = [];
/******/ for(;i < chunkIds.length; i++) {
/******/ chunkId = chunkIds[i];
/******/ if(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {
/******/ resolves.push(installedChunks[chunkId][0]);
/******/ }
/******/ installedChunks[chunkId] = 0;
/******/ }
/******/ for(moduleId in moreModules) {
/******/ if(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {
/******/ modules[moduleId] = moreModules[moduleId];
/******/ }
/******/ }
/******/ if(parentJsonpFunction) parentJsonpFunction(data);
/******/
/******/ while(resolves.length) {
/******/ resolves.shift()();
/******/ }
/******/
/******/ // add entry modules from loaded chunk to deferred list
/******/ deferredModules.push.apply(deferredModules, executeModules || []);
/******/
/******/ // run deferred modules when all chunks ready
/******/ return checkDeferredModules();
/******/ };
/******/ function checkDeferredModules() {
/******/ var result;
/******/ for(var i = 0; i < deferredModules.length; i++) {
/******/ var deferredModule = deferredModules[i];
/******/ var fulfilled = true;
/******/ for(var j = 1; j < deferredModule.length; j++) {
/******/ var depId = deferredModule[j];
/******/ if(installedChunks[depId] !== 0) fulfilled = false;
/******/ }
/******/ if(fulfilled) {
/******/ deferredModules.splice(i--, 1);
/******/ result = __webpack_require__(__webpack_require__.s = deferredModule[0]);
/******/ }
/******/ }
/******/
/******/ return result;
/******/ }
/******/
/******/ // The module cache
/******/ var installedModules = {};
/******/
/******/ // object to store loaded and loading chunks
/******/ // undefined = chunk not loaded, null = chunk preloaded/prefetched
/******/ // Promise = chunk loading, 0 = chunk loaded
/******/ var installedChunks = {
/******/ "app-config": 0
/******/ };
/******/
/******/ var deferredModules = [];
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/
/******/ // Check if module is in cache
/******/ if(installedModules[moduleId]) {
/******/ return installedModules[moduleId].exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = {
/******/ i: moduleId,
/******/ l: false,
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ // Flag the module as loaded
/******/ module.l = true;
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/******/
/******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = modules;
/******/
/******/ // expose the module cache
/******/ __webpack_require__.c = installedModules;
/******/
/******/ // define getter function for harmony exports
/******/ __webpack_require__.d = function(exports, name, getter) {
/******/ if(!__webpack_require__.o(exports, name)) {
/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
/******/ }
/******/ };
/******/
/******/ // define __esModule on exports
/******/ __webpack_require__.r = function(exports) {
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ }
/******/ Object.defineProperty(exports, '__esModule', { value: true });
/******/ };
/******/
/******/ // create a fake namespace object
/******/ // mode & 1: value is a module id, require it
/******/ // mode & 2: merge all properties of value into the ns
/******/ // mode & 4: return value when already ns object
/******/ // mode & 8|1: behave like require
/******/ __webpack_require__.t = function(value, mode) {
/******/ if(mode & 1) value = __webpack_require__(value);
/******/ if(mode & 8) return value;
/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
/******/ var ns = Object.create(null);
/******/ __webpack_require__.r(ns);
/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
/******/ return ns;
/******/ };
/******/
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = function(module) {
/******/ var getter = module && module.__esModule ?
/******/ function getDefault() { return module['default']; } :
/******/ function getModuleExports() { return module; };
/******/ __webpack_require__.d(getter, 'a', getter);
/******/ return getter;
/******/ };
/******/
/******/ // Object.prototype.hasOwnProperty.call
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ // __webpack_public_path__
/******/ __webpack_require__.p = "/";
/******/
/******/ var jsonpArray = this["webpackJsonp"] = this["webpackJsonp"] || [];
/******/ var oldJsonpFunction = jsonpArray.push.bind(jsonpArray);
/******/ jsonpArray.push = webpackJsonpCallback;
/******/ jsonpArray = jsonpArray.slice();
/******/ for(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);
/******/ var parentJsonpFunction = oldJsonpFunction;
/******/
/******/
/******/ // run deferred modules from other chunks
/******/ checkDeferredModules();
/******/ })
/************************************************************************/
/******/ ([]);

18232
unpackage/dist/dev/app-plus/app-service.js vendored Normal file

File diff suppressed because one or more lines are too long

14334
unpackage/dist/dev/app-plus/app-view.js vendored Normal file

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
{"@platforms":["android","iPhone","iPad"],"id":"__UNI__1F65101","name":"BlockChainH5","version":{"name":"1.0.0","code":"100"},"description":"","launch_path":"__uniappview.html","developer":{"name":"","email":"","url":""},"permissions":{"UniNView":{"description":"UniNView原生渲染"}},"plus":{"useragent":{"value":"uni-app","concatenate":true},"splashscreen":{"target":"id:1","autoclose":true,"waiting":true,"delay":0},"popGesture":"close","launchwebview":{"id":"1","kernel":"WKWebview"},"statusbar":{"immersed":"supportedDevice","style":"light","background":"#000000"},"usingComponents":true,"nvueStyleCompiler":"uni-app","compilerVersion":3,"distribute":{"google":{"permissions":["<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>","<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>","<uses-permission android:name=\"android.permission.VIBRATE\"/>","<uses-permission android:name=\"android.permission.READ_LOGS\"/>","<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>","<uses-feature android:name=\"android.hardware.camera.autofocus\"/>","<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>","<uses-permission android:name=\"android.permission.CAMERA\"/>","<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>","<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>","<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>","<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>","<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>","<uses-feature android:name=\"android.hardware.camera\"/>","<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"]},"apple":{},"plugins":{"audio":{"mp3":{"description":"Android平台录音支持MP3格式文件"}}}},"allowsInlineMediaPlayback":true,"safearea":{"background":"#FFFFFF","bottom":{"offset":"auto"}},"uni-app":{"compilerVersion":"3.1.18","control":"uni-v3","nvueCompiler":"uni-app","renderer":"auto","nvue":{"flex-direction":"column"},"nvueLaunchMode":"normal"},"tabBar":{"borderStyle":"rgba(255,255,255,0.4)","backgroundColor":"#FFFFFF","selectedColor":"#774ffd","iconWidth":"26px","spacing":"0","height":"60px","list":[{"text":"发现能量","iconPath":"static/tabBar/tabBar_icon_00.png","selectedIconPath":"static/tabBar/tabBar_show_00.png","pagePath":"pages/index/index"},{"text":"发现更多","iconPath":"static/tabBar/tabBar_icon_01.png","selectedIconPath":"static/tabBar/tabBar_show_01.png","pagePath":"pages/found/index"},{"text":"节点中心","iconPath":"static/tabBar/tabBar_icon_02.png","selectedIconPath":"static/tabBar/tabBar_show_02.png","pagePath":"pages/user/index"}],"child":["lauchwebview"],"selected":0},"launch_path":"__uniappview.html"}}

Binary file not shown.

After

Width:  |  Height:  |  Size: 482 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 166 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 115 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 255 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 261 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 558 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 686 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 585 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 91 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 944 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.5 KiB

Some files were not shown because too many files have changed in this diff Show More