合成照相馆小程序
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
photo_uniapp/pages/user/index.vue

558 lines
14 KiB

<template>
<view>
<!-- <u-navbar
leftText="返回"
title="个人中心"
:placeholder="true"
:autoBack="true"
bgColor="transparent"
>
<view slot="left"> </view>
</u-navbar> -->
<view class="header">
<image class='background' src="/static/img/user/topbg.png" mode="aspectFill"></image>
<view class="userInfo">
<view class="uleft">
<u-image :src="info.avatar" width="48px" height="48px" radius="50%" @error="imgErr"></u-image>
</view>
<view class="ucenter">
<view class="name"><text class="username">{{info.nick_name}}</text><!-- <text class="level">等级</text> --></view>
</view>
<view class="uright">
<view class="change" @click="goTo('/pages/user/account/index')">
<image src="/static/img/user/setting.png" mode="widthFix"></image>
</view>
</view>
</view>
<view class="boxBg">
<image class='box_bg' src="/static/img/user/boxbg.png" mode="aspectFill"></image>
<view class="mbBox">
<view class="mleft">
<view class="mb_title">面部档案</view>
<view class="mb_desc">分享可解锁新面部档案</view>
</view>
<view class="mright">
<view class="mbItem" @click="goTo('/pages/user/archives/detail')">
<image src="/static/img/user/have.png" mode="widthFix"></image>
</view>
<view class="mbItem">
<image src="/static/img/user/have_no.png" mode="widthFix"></image>
</view>
<view class="mbItem">
<image src="/static/img/user/have_no.png" mode="widthFix"></image>
</view>
</view>
</view>
</view>
</view>
<view class="tabList">
<u-tabs :list="tabList"
lineWidth="30"
lineColor="#9B75FF"
:current="current"
:activeStyle="{
color: '#000000',
fontWeight: 'bold',
transform: 'scale(1.05)'
}"
:inactiveStyle="{
color: '#000000',
transform: 'scale(1)'
}"
itemStyle="padding-left: 15rpx; padding-right: 15rpx; width:157rpx; height: 68rpx;"
@click="tabChange"></u-tabs>
<view class="datalist">
<view class="picBox" @click="goTo('/pages/user/photo/detail')">
<view class="p_left">
<image class="p_bg" src="/static/img/user/pic_bg.png" mode="aspectFill"></image>
<image class="p_pic" src="/static/img/user/ing.png" mode="widthFix"></image>
</view>
<view class="p_center">
<view class="p_title">港风复古</view>
</view>
<view class="p_right">
<view class="distance">
<view class="ing">生成中...</view>
</view>
</view>
</view>
<view class="picBox">
<view class="p_left">
<image class="p_bg" src="/static/img/user/pic_bg.png" mode="aspectFill"></image>
</view>
<view class="p_center">
<view class="p_title">港风复古</view>
</view>
<view class="p_right">
<view class="distance">
<image src="/static/img/index/right.png" mode="widthFix"></image>
</view>
</view>
</view>
<view class="imgBox">
<view class="p_left">
<image class="p_bg" src="/static/img/index/zj_icon.png" mode="aspectFill"></image>
<image class="p_pic" src="/static/img/user/ing.png" mode="widthFix"></image>
</view>
<view class="p_center">
<view class="p_title">一寸照</view>
<view class="p_desc">25×35mm | 295×413px</view>
</view>
<view class="p_right">
<view class="distance">
<view class="ing">生成中...</view>
</view>
</view>
</view>
<view class="imgBox">
<view class="p_left">
<image class="p_bg" src="/static/img/index/zj_icon.png" mode="aspectFill"></image>
</view>
<view class="p_center">
<view class="p_title">一寸照</view>
<view class="p_desc">25×35mm | 295×413px</view>
</view>
<view class="p_right">
<view class="distance">
<image src="/static/img/index/right.png" mode="widthFix"></image>
</view>
</view>
</view>
</view>
<u-empty icon="/static/img/user/nodata.png" mode="list" text="暂无数据,快去添加吧!" width="180rpx" marginTop="120px"></u-empty>
<view class="newBtn">去创建</view>
</view>
<view class="nowENV" v-if="this.$api.env() == 'development' || this.$api.env() == 'local'">
<u-tag v-if="this.$api.env() == 'development'" text="线上测试环境" type="warning" plain plainFill></u-tag>
<u-tag v-if="this.$api.env() == 'local'" text="本地开发环境" type="error" plain plainFill></u-tag>
</view>
<view class="empty">
</view>
</view>
</template>
<script>
import user from '../../config/user';
export default {
data() {
return {
isLogin:false, //登录
info:{
avatar:'/static/img/user/avatar.png',
nick_name:'点击登录',
},
tabList: [
{
name: 'AI写真',
}, {
name: '证件照合成',
}, {
name: '证件照换色'
}, {
name: '卡通风格'
}
],
current:0,
};
},
onReady: function (res) {
},
onShow() {
var _this =this;
_this.getUserInfo();
},
onShareAppMessage() {
return {
title: '智能拍照合成-我的',
path: uni.$u.page(),
}
},
onShareTimeline() {
return {
title: '智能拍照合成-我的',
path: uni.$u.page(),
}
},
methods:{
//头像加载失败
imgErr(){
this.info.avatar = '/static/img/user/avatar.png';
},
//获取用户信息
getUserInfo()
{
var _this =this;
var post ={};
_this.$api.get('api/userInfo',post,function(rs){
console.log('用户信息',rs);
var oldToken = _this.$user.session('token');
//先缓存
_this.$user.session('userInfo',rs);
if(!_this.$com.isNull(rs.token) && oldToken != rs.token)
{
_this.$user.session('token',rs.token);
}
//显示
var userInfo = rs;
if(_this.$com.isNull(userInfo.nick_name) )
{
userInfo.nick_name = '微信用户';
}
if(_this.$com.isNull(userInfo.avatar))
{
userInfo.avatar = '/static/img/user/avatar.png';
}
else
{
userInfo.avatar = _this.$api.ossurl(userInfo.avatar);
}
_this.info = userInfo;
},function(err){
console.log(err);
});
},
goTo(url)
{
uni.$u.route({
type:'navigateTo',
url: url,
});
},
//选项卡选择
tabChange(e)
{
var _this =this;
console.log(e);
_this.current = e.index;
},
tools(item)
{
var _this =this;
if(item.type == 'service')
{
var phone = _this.$user.session('servicePhone');
uni.makePhoneCall({
phoneNumber: phone,
success(res) {
console.log(res);
},
fail(err) {
console.log(err);
},
});
}
else
{
uni.$u.route({
type:'navigateTo',
url: item.url,
});
}
},
//打开视频
openVideo(){
var _this =this;
_this.video_show = true;
},
videoErrorCallback(e)
{
console.log(e);
},
closeVideo(){
var _this =this;
_this.video_show = false;
_this.videoContext.pause = true;
},
getPhoneNumber(e){
var _this =this;
var detail = e.detail;
console.log(detail);
if (detail.errMsg === 'getPhoneNumber:ok') {
_this.getPhoneApi(detail);
} else {
_this.$com.alert('授权失败')
}
},
getPhoneApi(detail){
var _this = this;
var openid = _this.$user.session('openid');
var post ={
code: detail.code,
};
_this.$api.post('ycl/user/wx-phone',post,function(rs){
console.log(rs);
var phoneNumber = rs;
_this.userInfo.phoneNumber = phoneNumber;
if(_this.$com.isNull(openid))
{
_this.$com.alert('切换失败,请退出并重新进入小程序重试');
}
// #ifdef MP
//这里目前微信小程序和抖音功能基本一样
uni.getProvider({
service: 'oauth',
success: function (res) {
console.log(res.provider)
var provider = res.provider[0];
uni.login({
provider:provider,
scopes:'auth_base',
success: function (login) {
console.log(login);
//发起网络请求
var xpost = {
loginCode: login.code,
phoneNumber:phoneNumber,
};
_this.$api.post('ycl/user/wx-login', xpost,function(resx){
console.log(resx);
_this.$user.session('openid',resx.wxOpenid);
_this.$user.session('user_id',resx.id);
if(!_this.$com.isNull(resx.token))
{
_this.$user.session('token',resx.token);
}
_this.isLogin = true;
_this.getUserInfo();
});
},
fail:function(rs){
console.log('登录失败'+rs.errMsg);
}
});
}
});
// #endif
},function(err){
console.log(err);
});
},
},
};
</script>
<style lang="scss">
page{ height:100%; width: 100%;}
.container{padding:10rpx 20rpx;}
.header{ width: 100%; height: 580rpx; overflow: hidden; position: relative;}
.background {
width: 100%;
height: 100%;
position:absolute;
background-size:100% 100%;
z-index: -1;
}
.userInfo{ width: 670rpx; height: auto; display: flex; margin: 244rpx auto 50rpx auto;}
.userInfo .uleft{ width: 100rpx; height: 120rpx;}
.userInfo .uleft .u-image{margin-top: 20rpx;}
.userInfo .ucenter{ width: 450rpx; height: 120rpx; line-height: 120rpx;}
.userInfo .ucenter .name{ width: 100%; height: 120rpx;}
.userInfo .ucenter .name .username{font-size: 32rpx; color:#333333; font-weight: 700; margin-left:20rpx;}
.userInfo .ucenter .name .level{width: auto; padding: 2rpx 10rpx;
height: 44rpx;
background: #095E59; text-align: center; font-size: 24rpx;color: #333333;
border-radius: 42rpx 42rpx 42rpx 42rpx;
border: 1rpx solid #00F0E2; margin-left: 20rpx;}
.userInfo .uright{ width: 120rpx; height: 120rpx;}
.userInfo .uright .change{width: 104rpx;
height: 50rpx;
color: #333333; font-size: 28rpx; line-height: 50rpx; text-align: center;}
.userInfo .uright .change image{ width: 42rpx; height: 42rpx; margin-top: 40rpx;}
.boxBg{
width: 702rpx;
height: 160rpx;
border-radius: 0rpx 0rpx 0rpx 0rpx;
position: relative;
margin: 0rpx auto 20rpx auto;
}
.box_bg{
width: 100%;
height: 100%;
position:absolute;
background-size:100% 100%;
z-index: -1;
}
.mbBox{width: 100%; height: 160rpx; display: flex;}
.mleft{width: 50%;}
.mleft .mb_title{
font-weight: 700;
font-size: 30rpx;
color: #333333;
line-height: 90rpx;
padding-left: 20rpx;
}
.mleft .mb_desc{
font-weight: 400;
font-size: 24rpx;
color: #555555;
line-height: 40rpx;
padding-left: 20rpx;
}
.mright{width: 50%; height: 160rpx; display: flex;}
.mbItem{ width: 80rpx; height: 80rpx; margin: 40rpx auto;}
.mbItem image{width: 80rpx; height: 80rpx; }
.nowENV{ width: 200rpx; height: 60rpx; margin: 10rpx auto; text-align: center;}
.empty{width: 100%; height: 20rpx;}
.newBtn{
width: 400rpx;
height: 88rpx;
line-height: 88rpx;
border-radius: 48rpx;
border: 2rpx solid #9B75FF;
text-align: center;
margin: 20rpx auto;
color: #9B75FF;
font-size: 30rpx;
font-weight: bold;
}
.datalist{ width: 100%; height: auto;}
.picBox{
width: 702rpx;
height: 160rpx;
background: #FFFFFF;
border-radius: 24rpx 24rpx 24rpx 24rpx;
margin: 20rpx auto;
display: flex;
}
.picBox .p_left{ width: 112rpx; height: 112rpx; margin: 24rpx 24rpx; position: relative;}
.picBox .p_left .p_bg{
width: 100%;
height: 100%;
position:absolute;
background-size:100% 100%;
border-radius:20rpx;
}
.picBox .p_left .p_pic{
width: 100%;
height: 100%;
position:absolute;
z-index: 2;
opacity: 0.8;
border-radius:20rpx;
}
.picBox .p_center{ width: 342rpx; height: 160rpx; line-height: 160rpx; }
.picBox .p_center .p_title{
font-weight: 400;
font-size: 28rpx;
color: #333333;
}
.picBox .p_right{width: 200rpx;height: 160rpx;}
.picBox .p_right .distance{ width: 100%; height: 160rpx; text-align: right;}
.picBox .p_right .distance image{ width: 32rpx; height: 32rpx; margin: 65rpx 24rpx auto auto;}
.picBox .p_right .distance .ing{
height: auto;
font-weight: 400;
font-size: 24rpx;
color: #FF4F34;
line-height: 34rpx;
margin: 65rpx 24rpx auto auto;
}
.imgBox{
width: 702rpx;
height: 160rpx;
background: #FFFFFF;
border-radius: 24rpx 24rpx 24rpx 24rpx;
margin: 20rpx auto;
display: flex;
}
.imgBox .p_left{ width: 72rpx; height: 72rpx; margin: 44rpx 24rpx 44rpx 24rpx; position: relative;}
.imgBox .p_left .p_bg{
width: 100%;
height: 100%;
position:absolute;
background-size:100% 100%;
border-radius:20rpx;
}
.imgBox .p_left .p_pic{
width: 100%;
height: 100%;
position:absolute;
z-index: 2;
opacity: 0.8;
border-radius:20rpx;
}
.imgBox .p_center{ width: 362rpx; height: 160rpx; }
.imgBox .p_center .p_title{
font-weight: 400;
font-size: 28rpx;
color: #333333;
line-height: 80rpx;
margin-top: 20rpx;
}
.imgBox .p_center .p_desc{
font-weight: 400;
font-size: 24rpx;
color: #999999;
line-height: 40rpx;
}
.imgBox .p_right{width: 200rpx;height: 160rpx;}
.imgBox .p_right .distance{ width: 100%; height: 160rpx; text-align: right;}
.imgBox .p_right .distance image{ width: 32rpx; height: 32rpx; margin: 65rpx 24rpx auto auto;}
.imgBox .p_right .distance .ing{
height: auto;
font-weight: 400;
font-size: 24rpx;
color: #FF4F34;
line-height: 34rpx;
margin: 65rpx 24rpx auto auto;
}
</style>