创建虚拟人物,调整登录逻辑

This commit is contained in:
唐明明
2022-06-07 17:34:05 +08:00
parent 1c6091371e
commit b76167eb0d
19 changed files with 4434 additions and 4784 deletions

16
.hbuilderx/launch.json Normal file
View File

@@ -0,0 +1,16 @@
{ // launch.json 配置了启动调试时相关设置configurations下节点名称可为 app-plus/h5/mp-weixin/mp-baidu/mp-alipay/mp-qq/mp-toutiao/mp-360/
// launchtype项可配置值为local或remote, local代表前端连本地云函数remote代表前端连云端云函数
"version": "0.0",
"configurations": [{
"app-plus" :
{
"launchtype" : "local"
},
"default" :
{
"launchtype" : "local"
},
"type" : "uniCloud"
}
]
}

View File

@@ -10,7 +10,7 @@ import router from '../router'
// 基础配置
const config = {
apiUrl : 'http://api.zh.shangkelian.cn/api/', // 正式环境
apiUrl : 'http://api.gl.shangkelian.cn/api/', // 正式环境
timeout : 60000
}

View File

@@ -26,6 +26,22 @@ const getSms = (data) =>{
})
}
// 获取角色标签信息
const userFigure = () => {
return request({
url: "cms/storages/tags?tags=figure",
})
}
// 创建角色
const createUser = (data) => {
return request({
url: "user/fill_all",
method: 'POST',
data: data
})
}
// 用户隐私,用户服务协议
const secretService = (name) =>{
return request({
@@ -33,18 +49,10 @@ const secretService = (name) =>{
})
}
// 一键登录
const keyAuth = (data) => {
return request({
url: 'user/socialite/login/unicloud/app',
method: 'POST',
data: data
}, true)
}
export {
smsAuth,
getSms,
secretService,
keyAuth
userFigure,
createUser,
secretService
}

View File

@@ -16,6 +16,11 @@
"autoclose" : true,
"delay" : 0
},
"safearea": {
"bottom": {
"offset": "none"
}
},
/* */
"modules" : {
"OAuth" : {},

View File

@@ -1,5 +1,30 @@
{
"pages": [{
"path": "pages/auth/auth",
"name": "Auth",
"style": {
"navigationBarTitleText": "登录",
"navigationStyle": "custom"
}
},
{
"path": "pages/auth/role",
"name": "AuthRole",
"style": {
"navigationBarTitleText": "角色创建",
"navigationBarBackgroundColor": "#FFF",
"app-plus": {
"titleNView": {
"buttons": [{
"text": "退出登录",
"fontSize": "14",
"width": "80px",
"color": "#fdbc01"
}]
}
}
}
},{
"path": "pages/life/life",
"name": "Life",
"style": {
@@ -44,32 +69,7 @@
"navigationBarTextStyle": "white"
}
},
{
"path": "pages/auth/auth",
"name": "Auth",
"style": {
"navigationBarTitleText": "登录",
"navigationStyle": "custom"
}
},
{
"path": "pages/auth/role",
"name": "AuthRole",
"style": {
"navigationBarTitleText": "角色创建",
"navigationBarBackgroundColor": "#FFF",
"app-plus": {
"titleNView": {
"buttons": [{
"text": "退出登录",
"fontSize": "14",
"width": "80px",
"color": "#fdbc01"
}]
}
}
}
},
{
"path": "pages/store/goods",
"name": "StoreGoods",

View File

@@ -1,251 +1,228 @@
<template>
<view class="content">
<!-- tool -->
<view class="tool-flex">
<view class="tool-flex-item" @click="$Router.back()">
<uni-icons type="closeempty" size="22" color="#666"></uni-icons>
</view>
<view class="tool-flex-item" @click="onKeyAuth()" v-if="$Route.query.keyPhone == 1">一键登录</view>
</view>
<!-- 欢迎使用 -->
<view class="header">
<view class="title">欢迎使用</view>
<view class="sumbit">共力生态即刻开始共力人生</view>
</view>
<!-- 输入手机号相关 -->
<view class="inputs phone">
<label class="label">+86</label>
<input type="number" placeholder="输入您的手机号码" maxlength="11" v-model="phone" />
</view>
<view class="inputs sms">
<input type="number" placeholder="输入短信验证码" maxlength="4" v-model="code" />
<button class="sms-btn" type="default" size="mini" :disabled="phone == '' || getSms"
@click="getPhoneCode">{{getSms ? '重新发送' + smsTime + 's': '发送验证码'}}</button>
</view>
<button class="btn" type="default" :disabled="phone == '' || code == ''" @click="login">登录</button>
<!-- 用户登录注册协议 -->
<view class="agreement">
未注册的手机号码验证后自动创建账号登录即表示同意接受平台
<view @click="$Router.push({name: 'agreement', params: {name : 'secret'}})">隐私协议</view>
<view @click="$Router.push({name: 'agreement', params: {name : 'service'}})">服务协议</view>
</view>
</view>
<view class="auth">
<image class="auth-back" src="/static/login/auth_bg.png" mode="aspectFill"></image>
<view class="auth-center">
<view class="auth-title">
<view>共力生态</view>
<view>即可开始共力人生</view>
</view>
<view class="auth-input">
<input v-model="phone" type="number" maxlength="11" placeholder="输入手机号码">
</view>
<view class="auth-input auth-code">
<input v-model="code" type="number" maxlength="4" placeholder="输入验证码">
<button :disabled="getSms" size="mini" @click="getPhoneCode()">{{sendCode}}</button>
</view>
<view class="auth-button">
<button @click="login('code')">登录</button>
</view>
<view class="auth-agreement">
登录即表示同意<navigator hover-class="none">用户协议</navigator><navigator hover-class="none">隐私政策</navigator>
</view>
<!-- <view class="auth-other">
<button @click="login('mnemonic')">使用助记词登录</button>
</view> -->
</view>
</view>
</template>
<script>
import { getSms, smsAuth } from "@/apis/interfaces/auth";
import userAuth from "@/public/userAuth";
export default {
data() {
return {
phone: "",
code: "",
smsTime: 60,
getSms: false,
};
},
methods: {
// 用户登录
login() {
smsAuth({
mobileNo: this.phone,
code: this.code,
}).then((res) => {
this.$store.commit(
"setToken",
res.token_type + " " + res.access_token
);
this.$Router.back();
}).catch((err) => {
uni.showToast({
title: err.message,
icon: "none",
});
});
},
// 获取验证码
getPhoneCode() {
let outTime;
getSms({
mobileNo: this.phone,
})
.then((res) => {
uni.showToast({
title: res,
icon: "none",
});
this.getSms = true;
outTime = setInterval(() => {
if (this.smsTime <= 1) {
this.getSms = false;
this.smsTime = 60;
clearInterval(outTime);
}
this.smsTime -= 1;
}, 1000);
})
.catch((err) => {
uni.showToast({
title: err.message,
icon: "none",
});
});
},
// 一键登录
onKeyAuth() {
const Auth = new userAuth();
this.$Router.back();
Auth.Login();
},
},
};
import {
smsAuth,
getSms
} from '@/apis/interfaces/auth.js'
export default {
data() {
return {
phone : '18245180131',
code : '',
getSms : false,
sendCode: '获取验证码'
};
},
mounted() {
this.$store.commit('setToken', '')
},
methods: {
// 获取验证码
getPhoneCode() {
let outTime;
let smsTime = 60;
getSms({
mobileNo: this.phone,
}).then(res => {
uni.showToast({
title: res,
icon: "none",
});
this.getSms = true;
this.sendCode = smsTime + 's后重新获取';
outTime = setInterval(() => {
if (smsTime <= 1) {
this.getSms = false;
this.sendCode = '重新获取';
clearInterval(outTime);
return
}
this.sendCode = smsTime + 's后重新获取';
smsTime -= 1;
}, 1000);
}).catch((err) => {
uni.showToast({
title: err.message,
icon: "none",
});
});
},
// 登录
login(type) {
if (type === 'code') {
uni.showLoading({
title: '登录中'
})
smsAuth({
mobileNo: this.phone,
code : this.code,
}).then((res) => {
this.$store.commit('setToken', res.token_type + ' ' + res.access_token);
this.$store.commit('setIsNew', res.is_new ? 0 : 1)
if(res.is_new){
this.$Router.replace({name: 'AuthRole'})
return
}
this.$Router.back()
this.$Router.pushTab({name: 'Life'})
uni.hideLoading()
}).catch((err) => {
uni.showToast({
title: err.message,
icon: "none",
});
});
return
}
if (type === 'mnemonic') {
uni.showToast({
title: '助记词登录暂未开放,敬请期待~',
icon: 'none'
})
}
}
}
}
</script>
<style lang="scss" scoped>
.content {
height: 100vh;
width: 100vw;
padding: $padding * 3;
box-sizing: border-box;
background: white;
@extend .vertical;
<style lang="scss">
.auth {
height: 100vh;
// 操作栏
.tool-flex {
position: fixed;
top: 0;
left: 0;
right: 0;
display: flex;
justify-content: space-between;
padding-left: $padding * 2;
padding-right: $padding * 2;
background: white;
@extend .ios-top;
.auth-back {
width: 100vw;
height: 100vh;
}
&-item {
line-height: 90rpx;
color: $text-gray;
font-size: $title-size-lg;
}
}
.auth-center {
position: absolute;
top: 0;
left: 0;
height: 100vh;
width: 100vw;
display: flex;
flex-direction: column;
justify-content: flex-end;
background: linear-gradient(to bottom, rgba(0, 0, 0, .0), rgba(0, 0, 0, .5));
padding: 100rpx 50rpx;
box-sizing: border-box;
// 表单
.inputs {
background: $window-color;
position: relative;
margin-top: $margin;
height: 90rpx;
line-height: 90rpx;
border-radius: 45rpx;
.auth-title {
font-size: 50rpx;
font-weight: bold;
line-height: 70rpx;
color: white;
}
input {
width: 100%;
height: 90rpx;
line-height: 90rpx;
padding: 0 $padding;
border: none;
box-sizing: border-box;
font-size: $title-size-lg;
}
.auth-input {
background: white;
height: 100rpx;
border-radius: 50rpx;
margin-top: 40rpx;
overflow: hidden;
&.phone {
padding-left: 120rpx;
input {
height: 100rpx;
font-size: 32rpx;
padding: 0 50rpx;
flex: 1;
}
.label {
position: absolute;
left: 0;
top: 0;
width: 120rpx;
text-align: center;
border-right: solid 1rpx $border-color;
font-size: $title-size-lg;
}
}
&.auth-code {
display: flex;
flex-direction: row;
&.sms {
padding-right: 200rpx;
button[size="mini"] {
width: 280rpx;
padding: 0;
line-height: 100rpx;
font-size: 32rpx;
border-radius: 0;
color: #fdbc01;
background: white;
&[disabled]{
color: gray;
}
&::after {
display: none;
}
}
}
}
.sms-btn[size='mini'] {
width: 200rpx;
height: 90rpx;
line-height: 90rpx;
position: absolute;
top: 0;
right: 0;
padding: 0;
margin: 0;
border-radius: 0 45rpx 45rpx 0;
color: $main-color;
font-size: $title-size-lg;
background: $window-color;
.auth-button {
margin-top: 70rpx;
&::after {
border: none;
}
button {
background: #fdbc01;
color: white;
border-radius: 50rpx;
height: 100rpx;
line-height: 100rpx;
padding: 0;
font-weight: bold;
font-size: 34rpx;
&[disabled] {
color: rgba($color: $main-color, $alpha: .6);
background: rgba($color: $window-color, $alpha: 0);
}
}
}
}
&::after {
display: none;
}
}
}
// 头部
.header {
text-align: center;
margin-bottom: 5vh;
.auth-agreement {
text-align: center;
color: white;
font-size: 28rpx;
padding: 30rpx 0 100rpx 0;
.title {
font-size: $title-size + 10;
font-weight: bold;
color: $text-color;
line-height: 70rpx;
}
navigator {
display: inline-block;
padding: 0 10rpx;
color: #fdbc01;
}
}
.sumbit {
line-height: 50rpx;
font-size: $title-size-m;
color: $text-gray-m;
}
}
.auth-other {
padding: 0 10vw;
// 登录按钮
.btn {
margin: 0;
margin-top: $margin*2;
height: 90rpx;
line-height: 90rpx;
padding: 0;
font-size: $title-size;
border-radius: 45rpx;
background: $main-color;
color: white;
font-weight: bold;
&::after {
display: none;
}
&[disabled] {
background: rgba($color: $main-color, $alpha: .5);
}
}
// 协议
.agreement {
padding-top: 5vh;
font-size: $title-size-sm;
color: $text-gray-m;
view {
color: $main-color;
display: inline-block;
padding: 0 10rpx;
}
}
}
</style>
button {
height: 100rpx;
line-height: 98rpx;
border-radius: 50rpx;
border: solid 1px white;
color: white;
background: transparent;
font-size: 34rpx;
box-sizing: border-box;
}
}
}
}
</style>

View File

@@ -11,7 +11,7 @@
<scroll-view class="role-figure-scroll" scroll-x="true" >
<view
class="role-figure-item"
v-for="(item, index) in figure"
v-for="(item, index) in (sex === 1 ? male: female)"
:class="storageId === item.storage_id ? 'active': ''"
:key="index"
@click="storageId = item.storage_id"
@@ -34,7 +34,8 @@
export default {
data() {
return {
figure : [],
male : [],
female : [],
nickname : '',
sex : 1,
storageId : '',
@@ -43,14 +44,16 @@
},
watch: {
sex(newVale){
this.storageId = this.figure[0].storage_id
this.storageId = (this.sex === 1 ? this.male[0].storage_id : this.female[0].storage_id)
}
},
created() {
userFigure().then(res => {
this.figure = res
this.storageId = res[0].storage_id
this.female = res.female
this.male = res.male
this.storageId = res.male[0].storage_id
}).catch(err => {
console.log(err)
uni.showToast({
title: err.status_code + ':' + err.message,
icon : 'none'
@@ -69,7 +72,7 @@
storage_id : this.storageId
}).then(res => {
this.$store.commit('setIsNew', 1)
this.$Router.pushTab({name: 'Life'})
this.$Router.back()
}).catch(err => {
this.disabled = false
uni.showToast({

View File

@@ -51,6 +51,7 @@
<view class="goods-box">
<oct-goods
:lists="goodsArr"
priceType="DT"
color="#e6576b"
@onGoods="$Router.push({ name: 'StoreGoods', params: {id: $event.goods_id}})"
/>

View File

@@ -22,9 +22,9 @@
</view>
</view>
<view class="chainAddress" v-if="userInfo.chain_address">
<u-icon labelPos="left" @click="copy(userInfo.chain_address)" labelSize="14"
<!-- <u-icon labelPos="left" @click="copy(userInfo.chain_address)" labelSize="14"
labelColor="#fff" :label="userInfo.chain_address.substr(0, 20)+'...'" space="10"
:name="require('@/static/imgs/copy.png')" size="16" />
:name="require('@/static/imgs/copy.png')" size="16" /> -->
</view>
</block>
<block v-else>

View File

@@ -52,7 +52,14 @@ class userAuth {
}
}
// 预登录
Login() {
Login() {
router.push({
name: 'Auth'
})
return
// 移出一键登录
//#ifdef H5
router.push({
name: 'Auth'

View File

@@ -20,7 +20,21 @@ const router = createRouter({
// console.log(...ROUTES)
//全局路由前置守卫
router.beforeEach((to, from, next) => {
router.beforeEach((to, from, next) => {
if(to.name === 'Auth' && store.getters.getToken != '' && uni.getStorageSync('token') != ''){
if(store.getters.getIsNew === 0 && uni.getStorageSync('isnew') === 0){
next({
name: 'Role',
NAVTYPE: 'replace'
})
return
}
next({
name: 'Life',
NAVTYPE: 'pushTab'
})
return
}
next();
});

BIN
static/login/auth_bg.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 MiB

View File

@@ -10,32 +10,33 @@ import Vuex from 'vuex'
Vue.use(Vuex)
export default new Vuex.Store({
state: {
token: uni.getStorageSync('token') || '',
address: {},
refresh: 0
},
getters: {
getToken: state => {
return state.token
},
getAddress: state => {
return state.address
},
getRefresh: state => {
return state.refresh
}
},
mutations: {
setToken(state, tokenString) {
state.token = tokenString
uni.setStorageSync('token', tokenString)
},
setAddress(state, value) {
state.address = value
},
setRefresh(state, value) {
state.refresh = value
}
}
state: {
token: uni.getStorageSync('token') || '',
address: {},
isnew: uni.getStorageSync('isNew') || 0
},
getters: {
getToken: state => {
return state.token
},
getAddress: state => {
return state.address
},
getIsNew: state => {
return state.isnew
}
},
mutations: {
setToken(state, tokenString) {
state.token = tokenString
uni.setStorageSync('token', tokenString)
},
setAddress(state, value) {
state.address = value
},
setIsNew(state, isNew) {
state.isnew = isNew
uni.setStorageSync('isnew', isNew)
}
}
})

View File

@@ -1,189 +0,0 @@
import im from "@/utils/im/index.js"
import {
contactModel
} from '@/utils/im/models.js'
export default {
state: {
contacts: {},
myInfo: {}
},
getters: {
contacts(state) {
return state.contacts
},
contactInfo: (state) => (targetId) => {
if (state.contacts[targetId]) {
const info = state.contacts[targetId]
return {
name: info.remark ? info.remark : info.name,
hash: info.hash,
portraitUrl: info.localAvatar ? info.localAvatar : require('@/static/user/cover.png')
}
} else {
return {
name: '',
hash: '',
portraitUrl: require('@/static/user/cover.png')
}
}
},
// 联系人是否存在
contactIsExist: (state) => (targetId) => {
return Boolean(state.contacts[targetId])
},
sender(state) {
return state.myInfo
}
},
mutations: {
updateContactInfo(state, contactInfo) {
Vue.set(state.contacts, contactInfo.targetId, contactInfo)
},
// 设置我的资料
setSenderInfo(state, contactInfo) {
state.myInfo = {
userId: contactInfo.targetId,
name: contactInfo.name,
portraitUrl: contactInfo.portraitUrl
}
},
setContactRemark(state, contactInfo) {
Vue.set(state.contacts, contactInfo.targetId, contactInfo)
}
},
actions: {
setContactRemark({
commit
}, {
targetId,
remark
}) {
contactModel.find('targetId="' + targetId + '"', (err, result) => {
if (!err && result.length > 0) {
result[0].remark = remark
contactModel.update('targetId="' + targetId + '"', result[0], (err, res) => {
commit('setContactRemark', result[0])
})
}
})
},
setSenderInfo({
commit,
dispatch
}, contactInfo) {
contactInfo.type = 0 // type 更改为0标记是我自己
dispatch('updateContact', contactInfo)
commit('setSenderInfo', contactInfo)
},
// 载入好友信息
launchContact({
commit
}, data) {
commit('updateContactInfo', data)
},
// 更新好友信息这个时候要校验hash值了
updateContact({
commit,
dispatch
}, contactInfo) {
contactModel.find('targetId="' + contactInfo.targetId + '"', (err, result) => {
if (result.length == 0) {
// 没有数据,直接新增一条
dispatch('initContact', contactInfo)
} else if (contactInfo.hash != result[0].hash) {
if (contactInfo.portraitUrl && contactInfo.portraitUrl != result[0].portraitUrl) {
saveAvatar(contactInfo, (savedFilePath) => {
const info = {
targetId: contactInfo.targetId,
name: contactInfo.name,
hash: contactInfo.hash,
type: contactInfo.type,
portraitUrl: contactInfo.portraitUrl,
localAvatar: savedFilePath
}
contactModel.update('targetId="' + contactInfo.targetId + '"', info, (err,
res) => {
console.log('UPDATE AVATAR, ERR', err, info)
})
commit('updateContactInfo', info)
})
} else {
const info = {
targetId: contactInfo.targetId,
name: contactInfo.name,
hash: contactInfo.hash,
type: contactInfo.type,
portraitUrl: contactInfo.portraitUrl,
localAvatar: result[0].localAvatar
}
contactModel.update('targetId="' + contactInfo.targetId + '"', info, (err, res) => {
console.log('UPDATE NAME, ERR', err, info);
})
commit('updateContactInfo', info)
}
} else {
console.log('updateContact, 无操作')
}
})
},
// 初始化好友信息
initContact({
commit
}, contactInfo) {
// 将好友信息保存到vuex的内存中方便立即使用
commit('updateContactInfo', contactInfo)
// 用户头像,是否需要下载到本地
if (contactInfo.portraitUrl) {
saveAvatar(contactInfo, (savedFilePath) => {
const info = {
targetId: contactInfo.targetId,
name: contactInfo.name,
hash: contactInfo.hash,
type: contactInfo.type,
portraitUrl: contactInfo.portraitUrl,
localAvatar: savedFilePath
}
contactModel.insert(info, (err, res) => {
console.error('保存头像', err, res)
})
// 保存头像后,更新信息
commit('updateContactInfo', info)
})
} else {
// 直接将信息,写入数据库
const info = {
targetId: contactInfo.targetId,
name: contactInfo.name,
hash: contactInfo.hash,
type: contactInfo.type,
portraitUrl: contactInfo.portraitUrl,
localAvatar: ''
}
contactModel.insert(info, (err, res) => {
console.error('没保存头像', err, res)
})
}
}
}
}
const saveAvatar = (contactInfo, callback) => {
uni.downloadFile({
url: contactInfo.portraitUrl,
success: ({
tempFilePath
}) => {
uni.saveFile({
tempFilePath: tempFilePath,
success: ({
savedFilePath
}) => {
callback(savedFilePath)
}
})
},
fail: (err) => {}
})
}

View File

@@ -1,8 +1,8 @@
var isReady=false;var onReadyCallbacks=[];
var isServiceReady=false;var onServiceReadyCallbacks=[];
var __uniConfig = {"pages":["pages/life/life","pages/store/index","pages/user/index","pages/setting/setting","pages/auth/auth","pages/auth/role","pages/store/goods","pages/store/buy","pages/order/index","pages/order/details","pages/address/index","pages/address/edit","pages/pay/pay","pages/store/list","pages/store/meals","pages/sign/index","pages/notice/index","pages/notice/list","pages/notice/details","pages/wallet/add","pages/wallet/create","pages/wallet/mnemonic","pages/wallet/validation","pages/wallet/property","pages/wallet/privatekey","pages/wallet/resetPassword","pages/store/search"],"window":{"navigationBarTextStyle":"black","navigationBarTitleText":"ZH健康","navigationBarBackgroundColor":"#F3F6FB","backgroundColorTop":"#F3F6FB","backgroundColorBottom":"#F3F6FB"},"tabBar":{"borderStyle":"white","selectedColor":"#34CE98","list":[{"iconPath":"static/tabBar/tabBar_02.png","selectedIconPath":"static/tabBar/tabBar_show_02.png","pagePath":"pages/life/life","text":"共力人生"},{"iconPath":"static/tabBar/tabBar_02.png","selectedIconPath":"static/tabBar/tabBar_show_02.png","pagePath":"pages/store/index","text":"DT商城"},{"iconPath":"static/tabBar/tabBar_03.png","selectedIconPath":"static/tabBar/tabBar_show_03.png","pagePath":"pages/user/index","text":"我的"}]},"nvueCompiler":"uni-app","nvueStyleCompiler":"uni-app","renderer":"auto","splashscreen":{"alwaysShowBeforeRender":true,"autoclose":false},"appname":"ZH-HEALTH","compilerVersion":"3.4.7","entryPagePath":"pages/life/life","networkTimeout":{"request":60000,"connectSocket":60000,"uploadFile":60000,"downloadFile":60000}};
var __uniRoutes = [{"path":"/pages/life/life","meta":{"isQuit":true,"isTabBar":true},"window":{"navigationBarTitleText":"共力人生","navigationStyle":"custom"}},{"path":"/pages/store/index","meta":{"isQuit":true,"isTabBar":true},"window":{"navigationBarTitleText":"DT商城","enablePullDownRefresh":true,"titleNView":{"backgroundColor":"#FFFFFF","buttons":[{"float":"right","text":"","fontSrc":"/static/iconfont.ttf","color":"#000","fontSize":"20px"}]}}},{"path":"/pages/user/index","meta":{"isQuit":true,"isTabBar":true},"window":{"navigationBarTitleText":"我的","navigationStyle":"custom"}},{"path":"/pages/setting/setting","meta":{},"window":{"navigationBarTitleText":"设置中心","navigationBarBackgroundColor":"#34CE98","navigationBarTextStyle":"white"}},{"path":"/pages/auth/auth","meta":{},"window":{"navigationBarTitleText":"登录","navigationStyle":"custom"}},{"path":"/pages/auth/role","meta":{},"window":{"navigationBarTitleText":"角色创建","navigationBarBackgroundColor":"#FFF","titleNView":{"buttons":[{"text":"退出登录","fontSize":"14","width":"80px","color":"#fdbc01"}]}}},{"path":"/pages/store/goods","meta":{},"window":{"navigationStyle":"custom","navigationBarTitleText":"详情","titleNView":{"backgroundColor":"#FFFFFF","type":"transparent"}}},{"path":"/pages/store/buy","meta":{},"window":{"navigationBarTitleText":"确认订单","enablePullDownRefresh":false}},{"path":"/pages/order/index","meta":{},"window":{"navigationBarTitleText":"订单","navigationBarBackgroundColor":"#FFFFFF","enablePullDownRefresh":false}},{"path":"/pages/order/details","meta":{},"window":{"navigationBarTitleText":"订单详情","enablePullDownRefresh":false}},{"path":"/pages/address/index","meta":{},"window":{"navigationBarTitleText":"收货地址"}},{"path":"/pages/address/edit","meta":{},"window":{"navigationBarTitleText":"编辑","enablePullDownRefresh":false}},{"path":"/pages/pay/pay","meta":{},"window":{"navigationBarTitleText":"收银台","navigationBarBackgroundColor":"#FFFFFF"}},{"path":"/pages/store/list","meta":{},"window":{"navigationBarTitleText":"商品","navigationBarBackgroundColor":"#FFFFFF","enablePullDownRefresh":true}},{"path":"/pages/store/meals","meta":{},"window":{"navigationBarTitleText":"套餐","navigationBarBackgroundColor":"#FFFFFF","enablePullDownRefresh":true}},{"path":"/pages/sign/index","meta":{},"window":{"navigationBarTitleText":"每日打卡","navigationBarBackgroundColor":"#FFFFFF"}},{"path":"/pages/notice/index","meta":{},"window":{"navigationBarTitleText":"消息","navigationBarBackgroundColor":"#FFFFFF"}},{"path":"/pages/notice/list","meta":{},"window":{"navigationBarTitleText":"消息","navigationBarBackgroundColor":"#FFFFFF"}},{"path":"/pages/notice/details","meta":{},"window":{"navigationBarTitleText":"消息","navigationBarBackgroundColor":"#FFFFFF"}},{"path":"/pages/wallet/add","meta":{},"window":{"navigationBarTitleText":"创建钱包","navigationBarBackgroundColor":"#FFFFFF","enablePullDownRefresh":false}},{"path":"/pages/wallet/create","meta":{},"window":{"navigationBarTitleText":"设置密码","navigationBarBackgroundColor":"#FFFFFF","enablePullDownRefresh":false}},{"path":"/pages/wallet/mnemonic","meta":{},"window":{"navigationBarTitleText":"导出助记词","navigationBarBackgroundColor":"#FFFFFF","enablePullDownRefresh":false}},{"path":"/pages/wallet/validation","meta":{},"window":{"navigationBarTitleText":"验证助记词","navigationBarBackgroundColor":"#FFFFFF","enablePullDownRefresh":false}},{"path":"/pages/wallet/property","meta":{},"window":{"navigationBarTitleText":"ZH钱包","navigationBarTextStyle":"white","titleNView":{"backgroundImage":"linear-gradient(to right, #34ce98, #22aa98)","type":"transparent","buttons":[{"float":"right","text":"","fontSrc":"/static/iconfont.ttf","color":"#FFF","fontSize":"20px","background":"rgba(0,0,0,0)"}],"backButton":{"background":"rgba(0,0,0,0)"}}}},{"path":"/pages/wallet/privatekey","meta":{},"window":{"navigationBarTitleText":"钱包私钥","navigationBarBackgroundColor":"#FFFFFF","enablePullDownRefresh":false}},{"path":"/pages/wallet/resetPassword","meta":{},"window":{"navigationBarTitleText":"修改钱包密码","navigationBarBackgroundColor":"#FFFFFF","enablePullDownRefresh":false}},{"path":"/pages/store/search","meta":{},"window":{"navigationBarTitleText":"搜索","navigationBarBackgroundColor":"#FFFFFF"}}];
var __uniConfig = {"pages":["pages/auth/auth","pages/auth/role","pages/life/life","pages/store/index","pages/user/index","pages/setting/setting","pages/store/goods","pages/store/buy","pages/order/index","pages/order/details","pages/address/index","pages/address/edit","pages/pay/pay","pages/store/list","pages/store/meals","pages/sign/index","pages/notice/index","pages/notice/list","pages/notice/details","pages/wallet/add","pages/wallet/create","pages/wallet/mnemonic","pages/wallet/validation","pages/wallet/property","pages/wallet/privatekey","pages/wallet/resetPassword","pages/store/search"],"window":{"navigationBarTextStyle":"black","navigationBarTitleText":"ZH健康","navigationBarBackgroundColor":"#F3F6FB","backgroundColorTop":"#F3F6FB","backgroundColorBottom":"#F3F6FB"},"tabBar":{"borderStyle":"white","selectedColor":"#34CE98","list":[{"iconPath":"static/tabBar/tabBar_02.png","selectedIconPath":"static/tabBar/tabBar_show_02.png","pagePath":"pages/life/life","text":"共力人生"},{"iconPath":"static/tabBar/tabBar_02.png","selectedIconPath":"static/tabBar/tabBar_show_02.png","pagePath":"pages/store/index","text":"DT商城"},{"iconPath":"static/tabBar/tabBar_03.png","selectedIconPath":"static/tabBar/tabBar_show_03.png","pagePath":"pages/user/index","text":"我的"}]},"nvueCompiler":"uni-app","nvueStyleCompiler":"uni-app","renderer":"auto","splashscreen":{"alwaysShowBeforeRender":true,"autoclose":false},"appname":"ZH-HEALTH","compilerVersion":"3.4.7","entryPagePath":"pages/auth/auth","networkTimeout":{"request":60000,"connectSocket":60000,"uploadFile":60000,"downloadFile":60000}};
var __uniRoutes = [{"path":"/pages/auth/auth","meta":{"isQuit":true},"window":{"navigationBarTitleText":"登录","navigationStyle":"custom"}},{"path":"/pages/auth/role","meta":{},"window":{"navigationBarTitleText":"角色创建","navigationBarBackgroundColor":"#FFF","titleNView":{"buttons":[{"text":"退出登录","fontSize":"14","width":"80px","color":"#fdbc01"}]}}},{"path":"/pages/life/life","meta":{"isQuit":true,"isTabBar":true},"window":{"navigationBarTitleText":"共力人生","navigationStyle":"custom"}},{"path":"/pages/store/index","meta":{"isQuit":true,"isTabBar":true},"window":{"navigationBarTitleText":"DT商城","enablePullDownRefresh":true,"titleNView":{"backgroundColor":"#FFFFFF","buttons":[{"float":"right","text":"","fontSrc":"/static/iconfont.ttf","color":"#000","fontSize":"20px"}]}}},{"path":"/pages/user/index","meta":{"isQuit":true,"isTabBar":true},"window":{"navigationBarTitleText":"我的","navigationStyle":"custom"}},{"path":"/pages/setting/setting","meta":{},"window":{"navigationBarTitleText":"设置中心","navigationBarBackgroundColor":"#34CE98","navigationBarTextStyle":"white"}},{"path":"/pages/store/goods","meta":{},"window":{"navigationStyle":"custom","navigationBarTitleText":"详情","titleNView":{"backgroundColor":"#FFFFFF","type":"transparent"}}},{"path":"/pages/store/buy","meta":{},"window":{"navigationBarTitleText":"确认订单","enablePullDownRefresh":false}},{"path":"/pages/order/index","meta":{},"window":{"navigationBarTitleText":"订单","navigationBarBackgroundColor":"#FFFFFF","enablePullDownRefresh":false}},{"path":"/pages/order/details","meta":{},"window":{"navigationBarTitleText":"订单详情","enablePullDownRefresh":false}},{"path":"/pages/address/index","meta":{},"window":{"navigationBarTitleText":"收货地址"}},{"path":"/pages/address/edit","meta":{},"window":{"navigationBarTitleText":"编辑","enablePullDownRefresh":false}},{"path":"/pages/pay/pay","meta":{},"window":{"navigationBarTitleText":"收银台","navigationBarBackgroundColor":"#FFFFFF"}},{"path":"/pages/store/list","meta":{},"window":{"navigationBarTitleText":"商品","navigationBarBackgroundColor":"#FFFFFF","enablePullDownRefresh":true}},{"path":"/pages/store/meals","meta":{},"window":{"navigationBarTitleText":"套餐","navigationBarBackgroundColor":"#FFFFFF","enablePullDownRefresh":true}},{"path":"/pages/sign/index","meta":{},"window":{"navigationBarTitleText":"每日打卡","navigationBarBackgroundColor":"#FFFFFF"}},{"path":"/pages/notice/index","meta":{},"window":{"navigationBarTitleText":"消息","navigationBarBackgroundColor":"#FFFFFF"}},{"path":"/pages/notice/list","meta":{},"window":{"navigationBarTitleText":"消息","navigationBarBackgroundColor":"#FFFFFF"}},{"path":"/pages/notice/details","meta":{},"window":{"navigationBarTitleText":"消息","navigationBarBackgroundColor":"#FFFFFF"}},{"path":"/pages/wallet/add","meta":{},"window":{"navigationBarTitleText":"创建钱包","navigationBarBackgroundColor":"#FFFFFF","enablePullDownRefresh":false}},{"path":"/pages/wallet/create","meta":{},"window":{"navigationBarTitleText":"设置密码","navigationBarBackgroundColor":"#FFFFFF","enablePullDownRefresh":false}},{"path":"/pages/wallet/mnemonic","meta":{},"window":{"navigationBarTitleText":"导出助记词","navigationBarBackgroundColor":"#FFFFFF","enablePullDownRefresh":false}},{"path":"/pages/wallet/validation","meta":{},"window":{"navigationBarTitleText":"验证助记词","navigationBarBackgroundColor":"#FFFFFF","enablePullDownRefresh":false}},{"path":"/pages/wallet/property","meta":{},"window":{"navigationBarTitleText":"ZH钱包","navigationBarTextStyle":"white","titleNView":{"backgroundImage":"linear-gradient(to right, #34ce98, #22aa98)","type":"transparent","buttons":[{"float":"right","text":"","fontSrc":"/static/iconfont.ttf","color":"#FFF","fontSize":"20px","background":"rgba(0,0,0,0)"}],"backButton":{"background":"rgba(0,0,0,0)"}}}},{"path":"/pages/wallet/privatekey","meta":{},"window":{"navigationBarTitleText":"钱包私钥","navigationBarBackgroundColor":"#FFFFFF","enablePullDownRefresh":false}},{"path":"/pages/wallet/resetPassword","meta":{},"window":{"navigationBarTitleText":"修改钱包密码","navigationBarBackgroundColor":"#FFFFFF","enablePullDownRefresh":false}},{"path":"/pages/store/search","meta":{},"window":{"navigationBarTitleText":"搜索","navigationBarBackgroundColor":"#FFFFFF"}}];
__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}}}});

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 MiB