This commit is contained in:
xingyy 2023-12-18 20:00:31 +08:00
parent 216aee9b4c
commit ad4d788585
5 changed files with 254 additions and 24 deletions

View File

@ -47,9 +47,15 @@ export const upload = (data) => {
}
})
}
export const updateAvatar = (data) => {
export const updateInfo = (data) => {
return uniReq.post({
url: '/api/user/update',
data
})
}
export const extractingBlindBoxes= (data) => {
return uniReq.post({
url: '/api/smart/appointment/draw/ticket/from/blind/box',
data
})
}

View File

@ -12,22 +12,84 @@
<div class="content2">
<image src="https://cdns.fontree.cn/fonchain-main/prod/image/1833/avatar/76216159-e5a9-49ef-a6b3-6043924243e7.png"></image>
</div>
<div class="content3">领取兑换</div>
<div class="content3" @click="goGet">领取兑换</div>
<div class="content4"></div>
<div class="content5">
<div class="wrap1" v-for="item in imgList" :key="item.url">
<image :src="item.url"></image>
</div>
</div>
<tm-drawer hideHeader color="#B1292E" :width="510" :height="324" ref="calendarView" placement="center" v-model:show="showWin2">
<div class="content6">
<div class="wrap1">领取盲盒失败</div>
<div class="wrap2">失败原因未实名</div>
<div class="wrap3" @click="goRealName">前往实名</div>
<div class="wrap4">*即将跳转实名页面</div>
</div>
</tm-drawer>
</div>
</div>
</template>
<script setup>
import {ref} from 'vue'
import {extractingBlindBoxes} from "@/http/apis";
const imgList=ref([{url:'https://cdns.fontree.cn/fonchain-main/prod/image/1833/avatar/8395f322-b677-4f24-a13d-b79474c09d35.png'},{url:'https://cdns.fontree.cn/fonchain-main/prod/image/1833/avatar/8395f322-b677-4f24-a13d-b79474c09d35.png'}])
const showWin2=ref(false)
const userInfo=ref(uni.getStorageSync('userInfo'))
const goRealName=()=>{
uni.navigateTo({
url: '/pages/facial/index'
})
}
const goGet=async ()=>{
if (!userInfo.idNum){
showWin2.value=true
return
}
const data={
"userName": "邢雨杨", //
"idCard": "411527200009129056", //
"phone": "18606216921", //
"blindBoxName": "博物馆开馆纪念盲盒" //
}
const res=await extractingBlindBoxes(data)
}
</script>
<style scoped lang="scss">
.content6{
display: flex;
flex-direction: column;
align-items: center;
.wrap4{
margin-top: 6rpx;
font-size: 16rpx;
color: #fff;
}
.wrap3{
margin-top: 32rpx;
display: flex;
justify-content: center;
align-items: center;
border-radius: 30rpx;
width: 436rpx;
height: 60rpx;
background-color: #fff;
color: #B1292E;
font-size: 28rpx;
}
.wrap2{
margin-top: 30rpx;
font-size: 24rpx;
color: #fff;
}
.wrap1{
margin-top: 58rpx;
font-size: 32rpx;
color: #fff;
}
}
.container{
display: flex;
flex-direction: column;

View File

@ -5,6 +5,7 @@
<custom-title class="title-block" title="人脸核验">
</custom-title>
<div class="main">
<tm-message ref="msg" :lines="2"></tm-message>
<div class="content1">
身份证认证
</div>
@ -32,12 +33,35 @@
</template>
</display-box>
</div>
<div class="content3" @click="submit">
提交
</div>
</div>
</div>
</template>
<script setup>
import displayBox from '../../components/display-box/index.vue'
import {ref} from "vue";
import {getInfo, updateInfo} from "@/http/apis";
const msg=ref(null)
const getUserInfo = async () => {
const res=await getInfo()
if (res.code===200){
uni.setStorageSync('userInfo',res.data);
}
}
const submit=async ()=>{
const res=await updateInfo({
idNum:idInfo.value.idCard,
realName:idInfo.value.name
})
if (res.code===200){
msg.value.show({ model: 'success' })
/* await uni.showToast({title: '实名成功', icon: 'none', duration: 2000})*/
await getUserInfo()
await uni.navigateBack()
}
}
const idInfo=ref({
name:'',
idCard:''
@ -60,6 +84,21 @@ const validateIDCardNumber=(idNumber)=> {
flex: 1;
background-image: url('https://cdns.fontree.cn/fonchain-main/prod/image/1833/avatar/16968647-fc99-46fe-b95c-620c55b7646f.png');
background-size: 100%;
.content3{
left: 50%;
transform: translateX(-50%);
position: absolute;
bottom: 156rpx;
display: flex;
justify-content: center;
align-items: center;
color: #fff;
font-size: 28rpx;
width: 436rpx;
height: 60rpx;
background-color: #000;
border-radius: 30rpx;
}
.content2{
margin-top: 38rpx;
.box-left{

View File

@ -41,14 +41,16 @@
</div>
</div>
<div class="content3"></div>
<div class="content4">·历史预约门票</div>
<div class="content4" :style="{color:currentTab===0?'#EB783C':'#72665F'}">{{currentTab===0?'·我未使用的票务':'·历史预约门票'}}</div>
<div class="content5">
<div class="wrap1" :style="{backgroundImage: item.ticketCoverPic}" v-for="(item,index) in tabList?.tickets" :key="item.appointmentUid">
<div class="wrap1_4">
<image src="item.ticketCoverPic"></image>
<div class="wrap1" :class="[`status${item.status}`]" v-for="(item,index) in tabList?.tickets" :key="item.appointmentUid">
<div class="wrap1_5">
<image :src="item.ticketCoverPic"></image>
</div>
<div class="wrap1_6">
</div>
<div class="wrap1_1" :class="[`status${item.status}`]">{{statusList.find(x=>x.value===item.status).label}}</div>
<div class="wrap1_1" >{{statusList.find(x=>x.value===item.status).label}}</div>
<div class="wrap1_2">
<div class="wrap1_2_1">首都博物馆门票</div>
<div class="wrap1_2_2">预约场馆:首都博物馆</div>
@ -148,7 +150,129 @@ const goSetUp = () => {
margin-top: 14rpx;
flex-grow: 1;
overflow-y: auto;
.wrap1{
&:nth-child(n+2){
margin-top: 20rpx;
}
&:last-child{
margin-bottom: 100rpx;
}
display: flex;
position: relative;
width: 686rpx;
height: 210rpx;
box-sizing: border-box;
border: 2rpx solid #fff;
background-size: 100%;
border-radius: 40rpx;
overflow: hidden;
&.status2 {
.wrap1_1{
background-color: #fff;
color: #FF5C62;
}
.wrap1_6{
background-color: #B29E92;
}
}
&.status4 {
.wrap1_1{
background-color: #000000;
color: #fff;
}
.wrap1_6{
background-color: #B29E92;
}
}
&.status5{
.wrap1_6{
background-color: #EB783C;
}
}
&.status1{
.wrap1_6{
background-color: #EB783C;
}
}
&.status3 {
.wrap1_6{
background-color: #B29E92;
}
.wrap1_1{
background-color: #fff;
color: #72665F;
}
}
.wrap1_3 {
bottom: 18rpx;
right: 16rpx;
position: absolute;
width: 150rpx;
height: 56rpx;
background-color: rgba(0,0,0,0.5);
border-radius: 40rpx;
display: flex;
justify-content: center;
align-items: center;
image {
width: 119.5rpx;
height: 34rpx;
}
}
.wrap1_2 {
top: 16rpx;
right: 178rpx;
position: absolute;
.wrap1_2_1 {
font-size: 32rpx;
color: #fff;
margin-bottom: 6rpx;
}
.wrap1_2_2 {
margin-bottom: 2rpx;
font-size: 20rpx;
color: #fff;
}
}
.wrap1_1 {
top: 26rpx;
left: 26rpx;
position: absolute;
display: flex;
justify-content: center;
align-items: center;
width: 112rpx;
height: 40rpx;
border-radius: 22rpx;
font-size: 20rpx;
}
.wrap1_6{
box-sizing: border-box;
border-left: 7rpx solid #fff;
height: 208rpx;
flex-grow: 1;
background-color: red;
}
.wrap1_5{
width: 262rpx;
height: 208rpx;
image{
width: 100%;
height: 100%;
}
}
}
/*.wrap1 {
position: relative;
width: 686rpx;
height: 210rpx;
@ -215,13 +339,12 @@ const goSetUp = () => {
color: #72665F;
}
}
}
}*/
}
.content4 {
margin-top: 22rpx;
font-size: 28rpx;
color: #72665F;
}
.content3 {

View File

@ -38,7 +38,7 @@
</div>
</template>
<script setup>
import {updateAvatar, upload} from "@/http/apis";
import {updateInfo, upload} from "@/http/apis";
import {nextTick, ref} from 'vue'
const currentAvatar=ref('')
const changeAvatar=()=>{
@ -56,7 +56,7 @@ const changeAvatar=()=>{
})
}
const reqAvatar=async ()=>{
const res= await updateAvatar({
const res= await updateInfo({
avatar:currentAvatar.value
})
if (res.code===200) {