32172fb1 by 杨炀

no message

1 parent 5bd03939
......@@ -4,7 +4,7 @@
// staging
// const baseUrl_api = "http://22yidpjzjifv.ngrok.xiaomiqiu123.top/stage-api/";
const baseUrl_api = "http://192.168.1.11:8787";
const baseUrl_api = "http://182.92.233.247/stage-api/";
export default {
baseUrl_api
......
......@@ -38,7 +38,8 @@
"quickapp" : {},
/* 小程序特有相关 */
"mp-weixin" : {
"appid" : "wx5d51e8ed31bbdbb7",//J系统
"appid" : "wx5d51e8ed31bbdbb7", //J系统
// "appid" : "wx70f16625f10de4fe",//新跆联
// "appid" : "wx5e2471ed6210c3a6",
"setting" : {
......@@ -48,7 +49,9 @@
},
"usingComponents" : true,
"permission" : {},
"optimization":{"subPackages":true}
"optimization" : {
"subPackages" : true
}
},
"mp-alipay" : {
"usingComponents" : true
......
<template>
<view class="graybg">
<view v-if="formData.type=='0'">
<view v-html="formData.content" class="richContent"></view>
</view>
<view v-if="formData.type=='1'" class="formBox">
<view @click="clickImg">
<image style="width: 100%;height: 50vw;" mode="aspectFit" v-for="p in formData.picArr" :src="p"/>
</view>
<view v-if="formData.content2" v-html="formData.content2" class="richContent2"></view>
<uni-forms ref="baseForm" :modelValue="baseFormData">
<uni-forms-item label="姓名" required v-if="formData.fields.indexOf('0')>-1">
<uni-easyinput v-model="baseFormData.name" placeholder="请输入姓名" />
</uni-forms-item>
<uni-forms-item label="手机号" required v-if="formData.fields.indexOf('1')>-1">
<uni-easyinput v-model="baseFormData.telno" placeholder="请输入手机号" />
</uni-forms-item>
<uni-forms-item label="需求描述" required v-if="formData.fields.indexOf('2')>-1">
<uni-easyinput type="textarea" v-model="baseFormData.requirement" placeholder="请输入需求描述" />
</uni-forms-item>
</uni-forms>
<button type="primary" @click="submit">提交</button>
</view>
</view>
<uni-popup ref="alertPayOk" type="dialog">
<uni-popup-dialog type="success" confirmText="返回主页" content="提交成功" @confirm="goIndex">
</uni-popup-dialog>
</uni-popup>
</template>
<script setup>
......@@ -42,85 +13,7 @@
import * as api from '@/common/api.js';
const { proxy } = getCurrentInstance()
const app = getApp();
const telNo = ref('');
const alertPayOk = ref(null);
const isActive = ref(null);
const formData = ref({})
const baseFormData = ref({})
const rules= ref({
name: {rules: [{required: true,errorMessage: '请输入姓名'}]},
telno: {rules: [{required: true,errorMessage: '请输入手机号'}]},
requirement: {rules: [{required: true,errorMessage: '请输入需求描述'}]},
})
onReady(()=>{
// 修改页头标题
uni.setNavigationBarTitle({
title: formData.value.name
});
})
onShow(() => {
formData.value = JSON.parse(app.globalData.venue.miniappCustConfig)
formData.value.picArr = formData.value.pics.split(',')
});
function goIndex() {
uni.redirectTo({
url: `/pages/index/index`
})
}
function submit(){
// 姓名
if((formData.value.fields.indexOf('0')>-1) && baseFormData.value.name==undefined){
uni.showToast({
title: '请输入姓名',
icon: 'none',
duration: 2000
});
return
}
// 手机号
if(formData.value.fields.indexOf('1')>-1&&baseFormData.value.telno==undefined){
uni.showToast({
title: '请输入手机号',
icon: 'none',
duration: 2000
});
return
}
// 需求描述
if(formData.value.fields.indexOf('2')>-1&&baseFormData.value.requirement==undefined){
uni.showToast({
title: '请输入需求描述',
icon: 'none',
duration: 2000
});
return
}
api.miniappData(baseFormData.value).then((res)=>{
baseFormData.value = []
alertPayOk.value.open()
})
}
function clickImg() {
uni.previewImage({
urls: formData.value.picArr,
// current: 0,
success: function(res) {
console.log('success', res)
},
fail: function(res) {
console.log('fail', res)
},
complete: function(res) {
console.log('complete', res)
}
})
}
</script>
<style scoped>
......
<template>
<view class="graybg">
<view class="pads">
<view class="box">
<view class="billItem" @click="showDetail(b)" v-for="b in billsList" :key="b.id">
<!-- parentType -->
<view>
订单编号:
<text>{{ b.orderCode }}</text>
</view>
<view v-if="b.verificationCode">
验证码:
<text>{{ b.verificationCode }}</text>
</view>
<view v-if="b.siteName">
预订项目:
<text>{{b.projectName||b.sonList[0].projectName}} {{ b.siteName }}</text>
</view>
<view v-if="b.orderDate">
预订时间:
<text>{{ b.orderDate }} {{ b.orderTimePeriod.replace(/,/,'-') }}</text>
</view>
<view class="billFoot">
<view class="status" v-if="b.payStatus == 1">{{ b.payStatusStr }}</view>
<view class="status warning" v-else>{{ b.payStatusStr }}</view>
<view class="price">
<text class="tip" v-if="b.payStatus == 0 && b.parentType == 2">*子订单不支持独立支付</text>
<!--payStatus 0 未支付 1 已支付 2 部分退款 3 已退款-->
<!--orderType 预定类型 0 普通预定 1 长租预定 2 预留 3 锁场 -->
<text v-if="b.payStatus==0">原价¥{{b.orderAmount}}</text>
<text v-if="b.payStatus>0">{{b.finalOrderAmount}}</text>
<text class="danger" v-if="b.payStatus==2||b.payStatus==3">
(已退款¥{{b.refundAmount}})</text>
<button class="billbtn" v-if="b.payStatusStr == '未支付' && b.parentType != 2" @click.stop="goBooking(b)">去支付</button>
</view>
</view>
</view>
<view v-show="isLoadMore" @click="clickLoadMore">
<uni-load-more :status="loadStatus" :content-text="contentText"></uni-load-more>
</view>
<view class="nodata" v-if="billsList.length==0">
<image mode="aspectFit" src="/static/nodata.png"></image>
</view>
</view>
</view>
<view>
</view>
</template>
<script setup>
import { ref } from 'vue';
import { onShow,onPullDownRefresh,onReachBottom} from '@dcloudio/uni-app';
import * as api from '@/common/api.js';
import _ from 'lodash';
const billsList = ref([]);
const alertDialog = ref(null);
const isLoadMore = ref(false);
const loadStatus = ref('loading');
const contentText = ref({
contentdown: '点击查看更多',
contentrefresh: '正在加载...',
contentnomore: '没有更多数据了'
})
const queryparam = ref({
pageNum:1,
pageSize: 10
})
onShow(() => {
billsList.value = []
getBills()
});
function clickLoadMore() {
if(loadStatus.value=='nomore'){
return
}
queryparam.value.pageNum+=1
getBills()
}
function getBills() {
isLoadMore.value = false
api.getMalist(queryparam.value).then(res => {
_.each(res.rows,(r)=>{
billsList.value.push(r)
})
// billsList.value = res.rows;
if(res.total < (queryparam.value.pageSize*queryparam.value.pageNum)){
isLoadMore.value = true
loadStatus.value='nomore'
} else {
isLoadMore.value = true
loadStatus.value='more'
}
});
}
function goBooking(b) {
let path = `/pages/index/booking?id=${b.id}`;
uni.navigateTo({
url: path
});
}
function showDetail(b) {
let path = `/pages/usercenter/billsDetail?id=${b.id}`;
uni.navigateTo({
url: path
});
}
function pay() {
alertDialog.value.open();
}
function dialogConfirm() {
// 微信支付
}
function dialogClose() {
alertDialog.value.close();
}
</script>
<style lang="scss" scoped>
.pads{padding:0 25rpx 70rpx;}
.billItem {
width: auto; padding-bottom: 1px;
.uni-input {
padding: 15rpx 0;
color: #000;
}
.billFoot{ margin-bottom: 20rpx;}
}
.rrcard .box {
padding: 0 0 1px;
margin: 20rpx 0 0;
}
.graybg {
background: #f7f8fa;
height: 100vh;
width: 100vw;
overflow: auto;
}
.whitebg {
background: #fff;
margin-top: 15rpx;
border-radius: 20rpx;
margin-bottom: 180rpx;
}
.payBtn {
width: 750rpx;
line-height: 90rpx;
height: 120rpx;
text-align: center;
background: #ff8124;
color: #ffffff;
font-size: 36rpx;
border-radius: 20rpx 20rpx 0px 0px;
position: fixed;
bottom: 0;
}
.uni-list-cell::after {
display: none;
}
.littleimgBox {
display: flex;
align-items: center;
}
.littleimg {
width: 50rpx;
height: 50rpx;
margin-right: 15rpx;
}
.padh20 {
padding: 0 25rpx;
}
.billFoot .tip {
font-size: 24rpx;
font-size: 24rpx;
color: #999;
font-weight: 500;
margin: 0 20rpx;
}
.billFoot text{white-space: nowrap;}
.billFoot text.danger{color: #da2a2a;}
</style>
......
<template>
<view class="graybg">
<view class="padh20">
<view class="box">
<view class="billItem">
<view>订单编号: <text>{{bill.orderCode||bill.id}}</text></view>
<view v-if="bill.verificationCode">验证码: <text>{{bill.verificationCode}}</text></view>
<view v-if="bill.siteName">预订项目: <text>{{bill.projectName}} {{bill.siteName}}</text></view>
<view v-if="bill.orderDate">预订时间: <text>{{bill.orderDate}} {{bill.orderTimePeriod.replace(/,/,'-')}}</text></view>
<view class="billCode" v-if="bill.qrCodeBase&&bill.payStatus==1">
<!-- -->
<image class="codeChecked" src="@/static/done.png" v-if="bill.status=='2'"/>
<image :src="bill.qrCodeBase"></image>
</view>
<view v-if="bill.payStatus==0">
下单时间:
<text>{{bill.payTime}}</text>
</view>
<view v-if="bill.payStatus!=0">
支付时间:
<text>{{bill.payTime}}</text>
</view>
<view>
订单状态:
<text>{{bill.payStatusStr}}</text>
</view>
<view v-if="bill.remark">
备注: <text>{{bill.remark}}</text>
</view>
<view v-if="bill.payStatus==0">
原价: <text class="price">{{bill.unuseBalancePrice}}</text>
</view>
<view v-if="bill.payStatus==0">
会员价: <text class="price">{{bill.useBalancePrice}}</text>
</view>
<view v-if="bill.payStatus>0">
支付金额: <text class="price">{{bill.finalOrderAmount}}</text>
</view>
<view v-if="bill.payStatus==3">
退款金额: <text class="price">{{bill.refundAmount}}</text>
</view>
<view class="billFoot" v-if="bill.sonList==null">
<!-- 2 用了 1 没用-->
<view class="status textherf" @click="payCancel(bill)"
v-if="!(bill.payStatus==0&&bill.parentType==2)&&bill.status==1">取消订单</view>
<!-- 0 未支付 1 已支付 2 部分退款 3 已退款-->
<view class="status" v-else-if="bill.payStatus==1">支付完成</view>
<view class="status warning" v-else>{{bill.payStatusStr}}</view>
<view class="price">
<text v-if="bill.payStatus==3||bill.payStatus==2">已退款¥{{bill.refundAmount}}</text>
<text v-else-if="bill.payStatus==1">{{bill.finalOrderAmount}}</text>
<button class="billbtn" v-if="bill.payStatusStr == '未支付'&&bill.parentType!=2"
@click="goBooking(bill)">去支付</button>
</view>
</view>
</view>
<view class="collapseBox" v-if="bill.sonList&&bill.sonList.length>0">
<uni-collapse @change="changeCollapse">
<uni-collapse-item :show-animation="true" v-for="z in bill.sonList" :key="z.id">
<template v-slot:title>
<text class="bold">{{z.projectName}}</text> <text class="ddd">({{z.siteName}})</text> <text class="ccc">{{z.orderDate.substring(5,10)}} {{z.orderTimePeriod.replace(/,/,'-')}}</text>
</template>
<view class="collapseBody">
<view class="pp">
子订单编号: <text>{{z.orderCode}}</text>
</view>
<view class="pp">
子订单金额: <text>¥{{z.orderAmount}}</text>
</view>
<view class="pp">
场地: <text>{{z.siteName}}</text>
</view>
<view class="pp">
预订时间: <text>{{z.orderDate}} {{z.orderTimePeriod.replace(/,/,'-')}}</text>
</view>
<view class="pp" v-if="z.verificationCode">
验证码: <text>【{{z.verificationCode}}】 </text>
</view>
<view class="billCode" v-if="z.qrCodeBase&&z.payStatus==1">
<image :src="z.qrCodeBase"></image>
</view>
<view class="pp" v-if="z.payStatus>0">
支付金额: <text>¥{{z.finalOrderAmount}}</text>
</view>
<view class="pp" v-if="z.payStatus==3&&z.refundAmount">
退款金额: <text>¥{{z.refundAmount}}</text>
</view>
<view class="pp" v-if="z.payStatus==0">
原价: <text class="price">¥{{z.unuseBalancePrice}}</text>
</view>
<view class="pp" v-if="z.payStatus==0">
会员价: <text class="price">¥{{z.useBalancePrice}}</text>
</view>
<view class="billFoot">
<!-- 2 用了 1 没用-->
<view class="status textherf" @click="payCancel(z)"
v-if="!(z.payStatus==0&&z.parentType==2)&&z.status==1">取消订单</view>
<!-- 0 未支付 1 已支付 2 部分退款 3 已退款-->
<view class="status" v-else-if="z.payStatus==1">支付完成</view>
<view class="status warning" v-else>{{z.payStatusStr}}</view>
<!-- <view class="price" v-if="z.payStatus!=3">¥{{z.finalOrderAmount}}</view> -->
<!-- 退款金额 -->
<!-- <view class="price" v-else>¥{{z.refundAmount}}</view> -->
</view>
</view>
</uni-collapse-item>
</uni-collapse>
</view>
<view v-if="bill.sonList&&bill.sonList.length>0" class="fixedBBB">
<view class="billFoot">
<!-- 2 用了 1 没用-->
<view class="status textherf" @click="payCancel(bill)" v-if="bill.status==1">
<text v-if="bill.payStatus==0">批量取消</text>
<text v-else>批量退订</text>
</view>
<!-- 0 未支付 1 已支付 2 部分退款 3 已退款-->
<view class="status" v-else-if="bill.payStatus==1">支付完成</view>
<view class="status warning" v-else>{{bill.payStatusStr}}</view>
<view class="price">
<text v-if="bill.payStatus==0">原价¥{{bill.orderAmount}}</text>
<text v-if="bill.payStatus>0">¥{{bill.finalOrderAmount}}</text>
<text class="danger" v-if="bill.payStatus==2||bill.payStatus==3">
(已退款¥{{bill.refundAmount}})</text>
<button class="billbtn" v-if="bill.payStatusStr == '未支付'&&bill.parentType!=2"
@click="goBooking(bill)">去支付</button>
</view>
</view>
</view>
</view>
</view>
</view>
</template>
<script setup>
......@@ -150,258 +9,17 @@
getCurrentInstance
} from 'vue';
import {
onLoad,
onBackPress,onPullDownRefresh
onLoad
} from '@dcloudio/uni-app'
const {
proxy
} = getCurrentInstance()
const bill = ref({})
const billId = ref()
const accordionVal = ref(1)
onLoad((options) => {
// 获取订单详情
console.log(options.id)
billId.value = options.id
getBill()
})
onPullDownRefresh(()=>{
getBill()
})
function payCancel(item) {
if (item.payStatus == 1) {
// 已付款
api.getCancelHint(item.orderCode).then(res => {
if (res.data.canCancel == 1&&res.data.refundPercent!=100) {
let hour = Math.floor(res.data.timeMinutes / 60)
let minute = res.data.timeMinutes % 60
let msg
if (hour > 0) {
msg = `距离开场还有${hour}小时 ${minute}分钟,将扣款${100 - res.data.refundPercent}%,你确定要退订吗?`
} else {
msg = `距离开场还有${minute}分钟,将扣款${100 - res.data.refundPercent}%,你确定要退订吗?`
}
uni.showModal({
title: '温馨提示',
content: msg,
success: function(res) {
if (res.confirm) {
cancelThisOrder(item.orderCode)
} else if (res.cancel) {
console.log('取消');
}
}
});
} else if(res.data.canCancel == 0) {
uni.showModal({
title: '温馨提示',
content: `此订单不可退订,如需退订请联系商家`,
showCancel: false,
success: function(res) {
if (res.confirm) {
console.log('确定');
} else if (res.cancel) {
console.log('取消');
}
}
});
} else {
uni.showModal({
title: '提示',
content: '确定取消订单吗?',
success: function(res) {
if (res.confirm) {
cancelThisOrder(item.orderCode)
} else if (res.cancel) {
console.log('取消');
}
}
});
}
})
} else {
uni.showModal({
title: '提示',
content: '确定取消订单吗?',
success: function(res) {
if (res.confirm) {
cancelThisOrder(item.orderCode)
} else if (res.cancel) {
console.log('取消');
}
}
});
}
}
function cancelThisOrder(id) {
api.cancelOrder(id).then((res) => {
uni.showToast({
title: res.msg,
icon: 'none'
});
getBill()
})
}
function getBill() {
api.getMaItemById(billId.value).then(res => {
bill.value = res.data
})
}
function goBooking(b) {
let path = `/pages/index/booking?id=${b.id}`;
uni.redirectTo({
url: path
});
}
function changeCollapse(e) {
console.log(e);
}
</script>
<style lang="scss" scoped>
.collapseBox {
margin-top: 30rpx;
}
.billItem {
width: auto;
padding-bottom: 1px;
.uni-input {
padding: 15rpx 0;
color: #000;
}
}
.rrcard .box {
padding: 0 0 1px;
margin: 20rpx 0 0;
}
.graybg {
background: #f7f8fa;
padding: 0 0 140rpx;
height: 100vh;
width: 100vw;
overflow: auto;
}
.whitebg {
background: #fff;
margin-top: 15rpx;
border-radius: 20rpx;
margin-bottom: 180rpx;
}
.uni-list-cell::after {
display: none;
}
.padh20 {
padding: 0 25rpx;
}
.billItem .billCode {
position: relative;
border-top: 1rpx dashed #E5E5E5;
}
.collapseBody {
margin: 20rpx 0 0;
}
.collapseBody .billCode {
position: relative;
border-top: 1rpx dashed #E5E5E5;
}
.billItem .billCode image {
width: 340rpx;
height: 340rpx;
margin: 30rpx auto;
display: block;
}
.collapseBody .billCode image {
width: 340rpx;
height: 340rpx;
margin: 30rpx auto;
display: block;
}
.billFoot .status.textherf {
color: #888;
font-size: 28rpx;
text-decoration: underline;
}
.collapseBody .billFoot {
margin: 20rpx 0 0;
padding: 22rpx 0;
}
.billSon {
padding: 0 35rpx;
border-top: 1px dashed #e1e1e1;
border-bottom: 1px dashed #e1e1e1;
}
.billItem .billSonItem {}
.billSonItem .pp {
padding: 15rpx 0;
overflow: hidden;
}
.collapseBody .pp {
padding: 15rpx 0;
overflow: hidden;
}
.billSonItem .pp text {
float: right;
}
.collapseBody .pp text {
float: right;
}
.billItem .ttt {
font-size: 28rpx;
padding: 0 35rpx;
color: #000;
}
.fixedBBB {
background: #fff;
width: 100%;
position: fixed;
height: 120rpx;
bottom: 0;
left: 0;
}
.codeChecked {
position: absolute;
width: 200rpx;
height: 130rpx;
right: 15%;
top: 30%;
}
.billItem view text.price{ color: #ff8124;font-weight:bold;}
.bold{font-weight:500;font-size:28rpx;}
.ccc{color:#666;font-size:28rpx;}
.ddd{color:#666;font-size:28rpx;margin: 0 10rpx;}
.billFoot text.danger{color: #da2a2a;}
.billItem view text{white-space: nowrap;}
</style>
......
<template>
<view class="fixedbody">
<uni-forms ref="baseForm" :modelValue="baseFormData" :rules="rules" label-width="80">
<uni-group mode="card" title="个人信息" top="20">
<view class="wBox">
<uni-forms-item label="照片" required name="picUrl">
<view class="avatarUrl">
<button type="balanced" open-type="chooseAvatar" @chooseavatar="onChooseavatar">
<image mode="aspectFill" :src="baseFormData.picUrl" class="refreshIcon"></image>
</button>
</view>
</uni-forms-item>
<uni-forms-item label="姓名" required name="realName">
<uni-easyinput v-model="baseFormData.realName" placeholder="请输入姓名" />
</uni-forms-item>
<!--<uni-forms-item label="身份标签" required>
<uni-data-checkbox v-model="baseFormData.label" multiple :localdata="tagList" />
</uni-forms-item>-->
<uni-forms-item label="证件类型" required name="idcType">
<uni-data-select
v-model="baseFormData.idcType"
:localdata="idcTypeList"
@change="changeidcType"
></uni-data-select>
</uni-forms-item>
<uni-forms-item label="证件号码" required name="idcCode">
<uni-easyinput v-model="baseFormData.idcCode" @blur="giveBirthDay" />
</uni-forms-item>
<uni-forms-item label="性别" required name="sex">
<uni-data-checkbox v-model="baseFormData.sex" @change="changeSex" :localdata="sexs" />
</uni-forms-item>
<uni-forms-item label="出生日期" required name="birth">
<uni-datetime-picker type="date" :clear-icon="false" v-model="baseFormData.birth" @maskClick="maskClick" />
</uni-forms-item>
<uni-forms-item label="联系方式" name="phone">
<uni-easyinput v-model="baseFormData.phone" placeholder="请输入联系方式" />
</uni-forms-item>
<uni-forms-item label="国籍" required name="countryId">
<uni-data-select
v-model="baseFormData.countryId"
:localdata="countryList"
@change="changeCountry"
></uni-data-select>
</uni-forms-item>
<uni-forms-item label="民族" required name="nation">
<uni-data-select v-model="baseFormData.nation" :localdata="nationList"></uni-data-select>
</uni-forms-item>
<uni-forms-item label="所在地区">
<uni-data-picker class="fixUniFormItemStyle"
v-model="baseFormData.regionId"
:localdata="regionsList"
popup-title="请选择所在地区"
></uni-data-picker>
</uni-forms-item>
<uni-forms-item label="详细地址"><uni-easyinput v-model="baseFormData.address" placeholder="请输入详细地址" /></uni-forms-item>
<uni-forms-item label="紧急联系人"><uni-easyinput v-model="baseFormData.ecName" placeholder="请输入联系人" /></uni-forms-item>
<uni-forms-item label="紧急联系方式"><uni-easyinput v-model="baseFormData.ecPhone" type="number" placeholder="请输入联系方式" /></uni-forms-item>
<uni-forms-item label="与本人关系"><uni-easyinput v-model="baseFormData.ecRelationship" placeholder="请输入与本人关系" /></uni-forms-item>
<view class="gapTitle" style="padding: 0; margin: 0 0 10rpx;">
实名认证
<text>正面为国徽面 反面为头像面</text>
</view>
<view class="ttt">
头像面<text>请拍摄完整身份证</text>
</view>
<view class="idImgUrl">
<uni-file-picker v-model="baseFormData.idcFrontImgObj" @delete="delimgFont" return-type="object" limit="1" @select="upIdCardImgFront" :image-styles="imageStyles"></uni-file-picker>
</view>
<view class="ttt">
国徽面<text>请拍摄完整身份证</text>
</view>
<view class="idImgUrl">
<uni-file-picker limit="1" v-model="baseFormData.idcBackImgObj" @delete="delimgBack" return-type="object" @select="upIdCardImgBack" :image-styles="imageStyles"></uni-file-picker>
</view>
</view>
</uni-group>
<uni-group mode="card" title="所属团体信息" top="20">
<view class="wBox">
<!-- <button class="poKxBtn" type="primary" plain="true">+加入机构</button> -->
<view class="matchItem" v-for="(g,index) in groupList" :key="index">
<view class="leftImg">
<image class="roundImg" :src="g.imgUrl" mode="aspectFill"></image>
</view>
<view class="rightWen">
<view class="name">{{g.name}}</view>
<view class="pp">地区:
<uni-data-picker readonly v-if="g.regionId" :clear-icon='false'
v-model="g.regionId"
:localdata="regionsList"
></uni-data-picker>
<text v-else>暂无</text>
</view>
<view class="pp">类型:
<text v-if="g.type==0">学校 </text>
<text v-if="g.type==1">场馆 </text>
<text v-if="g.type==2">俱乐部 </text>
<text v-if="g.type==3">机构 </text>
</view>
</view>
<view class="bottomFunc">
<view class="textButtom" @click="exitGroup(g)">退出参赛队</view>
</view>
</view>
<view class="nodata" v-if="groupList.length==0">
<image mode="aspectFit" src="/static/nodata.png"></image>
</view>
</view>
</uni-group>
<uni-group mode="card" title="人员管理" top="20" style="display: none;">
<view class="wBox">
<button class="poKxBtn" type="primary" plain="true" @click="goEditCoach(0,0)">+添加人员</button>
<uni-segmented-control :current="current" :values="kindList" @clickItem="onClickItem" styleType="button" activeColor="#39DBA7"></uni-segmented-control>
<view class="matchItem" v-for="p in memberList" :key="p.id">
<view class="leftImg">
<image class="roundImg" :src="p.picUrl" mode="aspectFill"></image>
</view>
<view class="rightWen">
<view class="name">{{p.realName}}
<view class="tag-view" v-for="(l,index) in p.labelArr" :key="index">
<uni-tag v-if="l == '2'" :inverted="true" text="领队" type="warning" />
<uni-tag :inverted="true" v-if="l == '1'" text="教练" type="primary" />
<uni-tag :inverted="true" v-if="l == '0'" text="运动员" type="success" />
<uni-tag :inverted="true" v-if="l == '3'" text="其他" type="error" />
</view>
</view>
<view class="pp">
证件类型:
<text v-if="p.idcType == 0">身份证</text>
<text v-else-if="p.idcType == 1">护照</text>
<text v-else>其他</text>
</view>
<view class="pp">证件号:{{p.idcCode}}</view>
<view class="pp">联系方式:{{p.phone}}</view>
</view>
<view class="bottomFunc">
<view class="textButtom" @click="goEditCoach(p.id, groupId)">编辑</view>
<text class="greenline">|</text>
<view class="textButtom" @click="del(p)">删除</view>
</view>
</view>
<view class="nodata" v-if="memberList.length==0">
<image mode="aspectFit" src="/static/nodata.png"></image>
</view>
</view>
</uni-group>
</uni-forms>
<view class="fixedBottom"><button class="btn btn1" @click="goNext" type="default">保存</button></view>
</view>
</template>
<script setup>
import { ref } from 'vue';
import { onLoad ,onShow,onPullDownRefresh} from '@dcloudio/uni-app'
import * as match from '@/common/match.js'
import { tagList, sexs , idcTypeList,nationList } from '@/static/js/data'
const baseFormData = ref({
countryId:240
});
const rules = ref({
realName:{
rules:[{required: true,errorMessage: '请填写真实姓名'}]
}
});
const imageStyles=ref({
width:'500rpx',
height:'300rpx',
border:{radius:'2px'}
});
const countryList = ref([]);
const regionsList = ref([]);
const groupList = ref([]);
const memberList = ref([]);
const current = ref(0);
const kindList = ref(['教练', '领队', '其他']);
onLoad(()=>{
getCountryList()
getRegionsList()
})
onShow(()=>{
getData()
})
onPullDownRefresh(() => {
getData()
})
function getCountryList(){
match.countryList().then(res => {
countryList.value = res.data
for(const c of countryList.value){
c.value = c.id
c.text =c.name
}
})
}
function getRegionsList() {
match.regionsList().then(res => {
regionsList.value = res.data
});
}
function getData(){
match.getMyPersonInfo().then(res => {
baseFormData.value = res.data
groupList.value = baseFormData.value.groups||[]
current.value = 0
memberList.value = baseFormData.value.coaches||[]
if(baseFormData.value.idcFrontImg){
baseFormData.value.idcFrontImgObj = {
name:"正面",
extname:"jpg",
url:baseFormData.value.idcFrontImg,
}
}
if(baseFormData.value.idcBackImg){
baseFormData.value.idcBackImgObj = {
name:"反面",
extname:"jpg",
url:baseFormData.value.idcBackImg,
}
}
getLabel(memberList.value);
})
}
function giveBirthDay(){
// 判断身份证正确性/赋值生日
if(baseFormData.value.idcType==0){
if(!(/(^\d{15}$)|(^\d{17}([0-9]|X)$)/.test(baseFormData.value.idcCode))){
uni.showToast({
title: '请输入正确的身份证号码',
duration: 2000,
icon: 'none'
})
} else {
let tmpStr = "";
if (baseFormData.value.idcCode.length == 15) {
tmpStr = baseFormData.value.idcCode.substring(6, 12);
tmpStr = "19" + tmpStr;
tmpStr = tmpStr.substring(0, 4) + "-" + tmpStr.substring(4, 6) + "-" + tmpStr.substring(6)
}else{
tmpStr = baseFormData.value.idcCode.substring(6, 14);
tmpStr = tmpStr.substring(0, 4) + "-" + tmpStr.substring(4, 6) + "-" + tmpStr.substring(6)
}
baseFormData.value.birth = tmpStr
const res = /^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$/
if (baseFormData.value.idcCode && res.test(baseFormData.value.idcCode)) {
const genderCode = baseFormData.value.idcCode.charAt(16)
if (parseInt(genderCode) % 2 == 0) {
baseFormData.value.sex = '0'
} else {
baseFormData.value.sex = '1'
}
}
}
}
}
function goNext() {
// 验证手机号
// var pattern = /^1[345789]\d{9}$/;
// if (!pattern.test(baseFormData.value.phone)) {
// uni.showToast({
// title: '请输入正确的手机号',
// duration: 2000,
// icon: 'none'
// })
// return
// }
// 验证身份证号
if(baseFormData.value.idcType==0&&!(/(^\d{15}$)|(^\d{17}([0-9]|X)$)/.test(baseFormData.value.idcCode))){
uni.showToast({
title: '请输入正确的身份证号码',
duration: 2000,
icon: 'none'
})
return
}
if (baseFormData.value.nation == null) {
uni.showToast({
title: '请填写民族',
duration: 2000,
icon: 'none'
})
return
}
match.saveMyBaseInfo(baseFormData.value).then(res=>{
uni.showToast({
title: '保存成功',
duration: 2000
});
})
}
function onChooseavatar(e) {
match.uploadFile(e).then(data=>{
baseFormData.value.picUrl = data.data
})
}
function upIdCardImgFront(e) {
match.uploadImg(e).then(data => {
baseFormData.value.idcFrontImg = data.data;
});
}
function upIdCardImgBack(e) {
match.uploadImg(e).then(data => {
baseFormData.value.idcFrontImg = data.data;
});
}
function delimgFont(n){
baseFormData.value.idcFrontImg = '';
}
function delimgBack(n){
baseFormData.value.idcBackImg = '';
}
function getLabel(list) {
if (list.length > 0) {
for (const m of list) {
m.labelArr = m.label.split(',');
}
}
}
function onClickItem(e) {
console.log(current.value);
if (current.value != e.currentIndex) {
current.value = e.currentIndex;
switch (current.value) {
case 0: {
memberList.value = baseFormData.value.coaches;
getLabel(memberList.value);
break;
}
case 1: {
memberList.value = baseFormData.value.leaders;
getLabel(memberList.value);
break;
}
case 2: {
memberList.value = baseFormData.value.others;
getLabel(memberList.value);
break;
}
}
}
}
function maskClick(e){
console.log('maskClick事件:', e);
}
function changeSex(e){
console.log("性别:",e.detail.value)
}
function changeCountry(e){
console.log(e);
if (e!= 240) {
baseFormData.value.nation = '其他'
}
}
function changeidcType(e){
console.log("证件:",e)
if(e){
baseFormData.value.idcTypeStr = idcTypeList[e].text
}
}
function exitGroup(g){
uni.showModal({
title: '提示',
content: `确定退出${g.name}吗?`,
success: function (res) {
if (res.confirm) {
match.leaveGroup(g.id).then(response => {
uni.showToast({
title: '已退出',
duration: 2000
});
})
} else if (res.cancel) {
console.log('用户点击取消');
}
}
});
}
function goEditCoach(id, groupId) {
uni.navigateTo({
url: `/pages_match/match/add_coach?id=${id || 0}&groupId=${groupId || 0}`
});
}
function del(p){
uni.showModal({
title: '提示',
content: `确定删除${p.realName}吗?`,
success: function (res) {
if (res.confirm) {
match.delPerson(p.id).then(response => {
uni.showToast({
title: '已删除',
duration: 2000
});
getData()
})
} else if (res.cancel) {
console.log('用户点击取消');
}
}
});
}
</script>
<style scope lang="scss">
.wBox { position: relative;
......
<template>
<view class="fixedbody">
<uni-group mode="card" title="我的参赛队" top="20">
<view class="wBox">
<button class="poKxBtn" type="primary" plain="true" @click="newGroup">+新建参赛队</button>
<view class="matchItem" v-for="(g,index) in dataList" :key="index">
<view class="leftImg">
<image :src="g.imgUrl" mode="aspectFill"></image>
</view>
<view class="rightWen">
<view class="name">{{g.name}}</view>
<view class="pp">地区:
{{g.regionStr}}
</view>
<view class="pp">类型:{{g.typeStr}}</view>
</view>
<view class="bottomFunc">
<view class="textButtom" @click="view(g)">查看</view>
<text class="greenline">|</text>
<view class="textButtom" @click="del(g)">删除</view>
</view>
</view>
<view class="nodata" v-if="dataList.length==0">
<image mode="aspectFit" src="/static/nodata.png"></image>
<text>还没有参赛队,点击新建参赛队立即创建吧~</text>
</view>
</view>
</uni-group>
</view>
</template>
<script setup>
import { ref } from 'vue';
import * as match from '@/common/match.js'
import { onShow } from '@dcloudio/uni-app'
const baseFormData = ref({});
const dataList = ref([]);
const memberList = ref([{id:1},{id:2}]);
const avatarUrl = ref('');
const kindList = ref(['全部','运动员','教练','领队','其他']);
const tagList = ref([{text: '运动员',value: 0},{text: '教练',value: 1},{text: '领队',value: 2},{text: '其他',value: 3},]);
const typeList = ref([{text: '学校',value: 0}, {text: '场馆',value: 1}, {text: '俱乐部',value: 2}, {text: '机构',value: 3}]);
const regionsList = ref([]);
const current = ref(0);
const editIng = ref(false);
const showEditForm = ref(false);
const query = ref({
type: 0
})
onShow(()=>{
getRegionsList()
getList()
})
function getList(){
match.getMyGroupList(query).then(res => {
dataList.value = res.data
})
}
function newGroup() {
uni.navigateTo({
url: `/pages/usercenter/teamInfo`
});
}
function getRegionsList(){
match.regionsList().then(res => {
regionsList.value = res.data
})
}
function onchange(){
}
function onnodeclick(){
}
function onClickItem(e){
console.log(current.value)
if (current.value != e.currentIndex) {
current.value = e.currentIndex;
}
}
function goNext() {
baseFormData.value.src = avatarUrl.value
}
function onChooseavatar(e) {
if(editIng.value){
match.uploadFile(e).then(data => {
avatarUrl.value = data.data
})
} else {
return
}
}
function editTeamInfo(){
editIng.value = true
}
function goChooseCoach(n){
uni.navigateTo({
url: `/pages_match/match/choose_coach?id=${n||0}`
});
}
function goEditCoach(n){
uni.navigateTo({
url: `/pages_match/match/add_coach?id=${n||0}`
});
}
function view(g){
uni.navigateTo({
url: `/pages/usercenter/teamInfo?groupId=${g.id}`
});
}
function del(g){
// 删除团
uni.showModal({
title: '提示',
content: '确定删除吗',
success: function (res) {
if (res.confirm) {
match.deleteMyGroup(g.id).then(res=>{
uni.showToast({
icon:'none',
title: res.msg
})
getList()
})
} else if (res.cancel) {
console.log('用户点击取消');
}
}
});
}
function saveMyteam() {
match.saveMyGroup(baseFormData.value).then(res=>{
uni.showToast({
title: '保存成功',
duration: 2000
});
editIng.value = false
})
}
</script>
<style scope lang="scss">
.wBox {position: relative;background: #ffffff;border-radius: 15px;box-sizing: border-box;}
.avatarUrl{width: 200rpx;height:200rpx;}
......
<template>
<view class="box">
<view class="topBg">
<image src="/static/bg.png" class="topbgimg"></image>
<!-- @click="auth" -->
<view class="userInfoBox">
<view class="headImg">
<button type="balanced" open-type="chooseAvatar" @chooseavatar="onChooseavatar">
<image mode="aspectFill" :src="avatarUrl"></image>
</button>
</view>
<view class="nameBox">
<!-- <input v-model="user.nickName" type="nickname"/> -->
{{ user.nickName }}
<view @click="changePhoneNumber">{{ user.phonenumber }}</view>
</view>
</view>
<!-- 会员卡 -->
<view class="vipBox" v-if="!isMaster && card.isVip">
<image class="fm" :src="vTypeImg"></image>
<image class="vv" src="/static/vip.png"></image>
<view class="poInfo" @click="goCard">
<view class="flexline">
<view class="typeStr">{{ card.info.cardTypeStr }}</view>
<view class="cardCode">{{ card.info.cardCode }}</view>
</view>
<view class="flexline mt40">
<view class="ye">
余额(元)
<text>{{ card.info.balance }}</text>
</view>
<view class="zk">
折扣
<view>
<text>{{ (100 - card.info.discountPercent) / 10 }}</text>
</view>
</view>
</view>
</view>
<view class="cardBottom">
<text>有效期至{{ card.info?.expirationTime }}</text>
<text class="renewBtn" @click="goRenew">立即续费</text>
</view>
</view>
</view>
<view class="rMainBox" v-if="!isMaster">
<uni-list :border="false" class="myList">
<uni-list-item :border="false" title="个人信息" showArrow :to="`./myInfo`">
<template v-slot:header>
<view class="slot-box">
<image class="slot-image" src="/static/user_icon03.png" mode="widthFix"></image>
</view>
</template>
</uni-list-item>
<uni-list-item :border="false" title="参赛队信息" showArrow :to="`./teamList`">
<template v-slot:header>
<view class="slot-box">
<image class="slot-image" src="/static/user_icon06.png" mode="widthFix"></image>
</view>
</template>
</uni-list-item>
<uni-list-item :border="false" title="会员充值" showArrow :to="`./mycard/renew`">
<template v-slot:header>
<view class="slot-box">
<image class="slot-image" src="/static/user_icon01.png" mode="widthFix"></image>
</view>
</template>
</uni-list-item>
<uni-list-item :border="false" title="场地订单" showArrow :to="`./bills`">
<template v-slot:header>
<view class="slot-box">
<image class="slot-image" src="/static/user_icon02.png" mode="widthFix"></image>
</view>
</template>
</uni-list-item>
<uni-list-item :border="false" title="我的培训" showArrow clickable @click="myTrain">
<template v-slot:header>
<view class="slot-box">
<image class="slot-image" src="/static/user_icon07.png" mode="widthFix"></image>
</view>
</template>
</uni-list-item>
<uni-list-item :border="false" title="我的赛事" showArrow :to="`./match`">
<template v-slot:header>
<view class="slot-box">
<image class="slot-image" src="/static/user_icon04.png" mode="widthFix"></image>
</view>
</template>
</uni-list-item>
</uni-list>
</view>
<!-- 场馆人员 -->
<view class="forAdmin" v-if="isMaster">
<!-- <view class="forAdmin"> -->
<view class="onlyCardBottom">
<image src="/static/xf_bg.png" class="bbg"></image>
<view class="cardBottom">
<text>有效期至{{ card.info?.expirationTime }}</text>
<text class="renewBtn" @click="goRenew">立即续费</text>
</view>
</view>
<view class="funcBar">
<!-- <view @click="goOrder"> -->
<view @click="goBills">
<image mode="aspectFit" src="/static/icon01.png"></image>
预订
</view>
<view @click="goVip">
<image mode="aspectFit" src="/static/icon02.png"></image>
会员
</view>
<view @click="goQcode">
<image mode="aspectFit" src="/static/icon03.png"></image>
核验
</view>
</view>
<view class="mt40">
<uni-list :border="false" class="myList">
<uni-list-item :border="false" title="个人信息" showArrow :to="`./myInfo`">
<template v-slot:header>
<view class="slot-box">
<image class="slot-image" src="/static/user_icon03.png" mode="widthFix"></image>
</view>
</template>
</uni-list-item>
<uni-list-item :border="false" title="团体信息" showArrow :to="`./teamList`">
<template v-slot:header>
<view class="slot-box">
<image class="slot-image" src="/static/user_icon06.png" mode="widthFix"></image>
</view>
</template>
</uni-list-item>
<uni-list-item :border="false" title="培训报名" showArrow clickable @click="myTrain">
<template v-slot:header>
<view class="slot-box">
<image class="slot-image" src="/static/user_icon07.png" mode="widthFix"></image>
</view>
</template>
</uni-list-item>
<uni-list-item :border="false" title="我的赛事" showArrow :to="`./match`">
<template v-slot:header>
<view class="slot-box">
<image class="slot-image" src="/static/user_icon04.png" mode="widthFix"></image>
</view>
</template>
</uni-list-item>
</uni-list>
</view>
<view class="reportItembox">
<view class="reportItem">
<view class="t">今日预订</view>
<view class="rbody">
<view>
<text>{{ reportData.bookCount }}</text>
订场
</view>
<view>
<text>{{ reportData.bookAmount }}</text>
金额
</view>
</view>
</view>
<view class="reportItem">
<view class="t">商品销售</view>
<view class="rbody">
<view>
<text>--</text>
</view>
<view>
<text>--</text>
金额
</view>
</view>
</view>
<view class="reportItem">
<view class="t">今日会员</view>
<view class="rbody">
<view>
<text>{{ reportData.memberCount }}</text>
新增
</view>
<view>
<text>{{ reportData.memberAmout }}</text>
金额
</view>
</view>
</view>
<view class="reportItem">
<view class="t">今日签到</view>
<view class="rbody">
<view>
<text>--</text>
人数
</view>
<view>
<text>--</text>
金额
</view>
</view>
</view>
</view>
</view>
<uni-popup ref="inputDialog" type="dialog">
<uni-popup-dialog ref="inputClose" mode="input" title="修改会员卡绑定手机号" @confirm="dialogInputConfirm">
<view class="changephonepop">
<view><input placeholder="请输入手机号" type="number" v-model="captchaPhonenumber" /></view>
<view class="ffff">
<input placeholder="输入验证码" type="number" v-model="captcha" />
<button v-if="canSend" @click="sendsms">发送验证码</button>
<button v-else disabled style="back">
<uni-countdown
style="display: inline-block;"
:start="start"
:font-size="14"
:show-day="false"
:show-hour="false"
:show-min="false"
color="#FFFFFF"
splitorColor="#fff"
:minute="1"
:second="0"
@timeup="timeup"
/>
</button>
</view>
</view>
</uni-popup-dialog>
</uni-popup>
</view>
</template>
<script setup>
import * as api from '@/common/api.js';
import { ref } from 'vue';
import { onLoad, onShow, onPullDownRefresh } from '@dcloudio/uni-app';
const vTypeImg = ref('/static/v1.png');
const card = ref({});
const reportData = ref({});
const user = ref({});
const userImg = ref('');
const avatarUrl = ref('');
const captchaPhonenumber = ref('');
const captcha = ref('');
const inputDialog = ref(null);
const start = ref(false);
const canSend = ref(true);
const app = getApp();
const isMaster = ref(false);
onPullDownRefresh(() => {
getVip();
});
onShow(() => {
if (app.globalData.isLogin) {
init();
getVip();
} else {
app.firstLoadCallback = () => {
init();
getVip();
};
}
});
function init() {
const currUser = uni.getStorageSync('currUser');
user.value = currUser;
if (user.value.manageFlag == '1' && app.globalData.venue.id == user.value.venueId) {
isMaster.value = true;
}
avatarUrl.value = user.value.avatar;
}
function getVip() {
getMemberInfo();
if (isMaster.value) {
api.getMaInfo().then(res => {
reportData.value = res.data;
});
}
}
function goBack() {
uni.navigateBack({});
}
function onChooseavatar(e) {
// 上传头像
match.uploadFile(e).then(data => {
avatarUrl.value = data.data;
match.updateAvatar({ avatarUrl: avatarUrl.value }).then(res => {
uni.showToast({
title: '头像保存成功',
icon: 'none',
duration: 2000
});
uni.setStorageSync('currUser', res.data);
});
});
}
function changePhoneNumber() {
inputDialog.value.open();
}
function dialogInputConfirm() {
// 修改手机号
const currUser = uni.getStorageSync('currUser');
api.maRebindMemberCard(captchaPhonenumber.value, captcha.value).then(res => {
uni.showToast({
title: res.msg,
icon: 'none',
duration: 2000
});
captcha.value = '';
getMemberInfo();
});
}
function goRenew() {
let path = '/pages/usercenter/mycard/renew';
uni.navigateTo({
url: path
});
}
function goCard() {
let path = '/pages/usercenter/mycard/mycard';
uni.navigateTo({
url: path
});
}
function goOrder() {
let path = '/pages/index/order';
uni.navigateTo({
url: path
});
}
function goBills() {
let path = '/pages/usercenter/bills';
uni.navigateTo({
url: path
});
}
function goVip() {
let path = '/pages/usercenter/mycard/mycard';
uni.navigateTo({
url: path
});
}
function goQcode() {
uni.scanCode({
onlyFromCamera: true,
success: function(res) {
console.log('条码类型:' + res.scanType);
console.log('条码内容:' + res.result);
api.scanQrCode(res.result).then(res => {
uni.showModal({
title: '提示',
content: res.msg,
success: function(res) {
if (res.confirm) {
console.log('确定');
} else if (res.cancel) {
console.log('取消');
}
}
});
});
}
});
}
function building() {
uni.showToast({
title: '暂未开放,敬请期待。',
icon: 'none',
duration: 2000
});
}
function myTrain() {
let path = '/pages/usercenter/myTrain/index/index';
uni.navigateTo({
url: path
});
}
function timeup() {
canSend.value = true;
}
function sendsms() {
//发送验证码
if (captchaPhonenumber.value) {
let strTemp = /^1[3|4|5|6|7|8|9][0-9]{9}$/;
if (strTemp.test(captchaPhonenumber.value)) {
api.getCaptchaSms({
phonenumber: captchaPhonenumber.value
}).then(res => {
uni.showToast({
title: res.msg,
icon: 'none',
duration: 2000
});
start.value = true;
canSend.value = false;
});
} else {
uni.showToast({
title: '请输入正确的手机号',
icon: 'none',
duration: 2000
});
}
} else {
uni.showToast({
title: '请输入手机号',
icon: 'none',
duration: 2000
});
}
}
</script>
<style scoped lang="scss">
.box {
width: 100vw;
overflow: hidden;
}
.rMainBox {
box-sizing: border-box;
padding: 20rpx 25rpx 0;
margin: 25rpx;
}
.userInfoBox {
height: 200rpx;
}
.nameBox {
position: absolute;
left: 180rpx;
top: 70rpx;
font-size: 30rpx;
}
.nameBox view {
color: #7b7f83;
font-size: 26rpx;
margin-top: 10rpx;
}
.goback {
position: absolute;
color: #fff;
top: 100rpx;
left: 35rpx;
}
.forAdmin {
padding: 25rpx;
box-sizing: border-box;
}
.topBg {
}
.onlyCardBottom {
position: relative;
width: 660rpx;
margin: auto;
height: 90rpx;
.bbg {
height: 90rpx;
width: 660rpx;
}
.cardBottom {
width: 660rpx;
background: transparent;
height: 90rpx;
text {
font-size: 28rpx;
color: #925921;
}
.renewBtn {
background: #874f02;
color: #fff;
}
}
}
.headImg {
border-radius: 50%;
position: relative;
top: 50rpx;
overflow: hidden;
width: 100rpx;
height: 100rpx;
border: 4px solid #ffffff;
background: #c4f9cb;
left: 40rpx;
button {
display: block;
padding: 0;
}
image {
width: 100rpx;
height: 100rpx;
display: block;
}
}
.slot-image {
width: 50rpx;
position: relative;
top: -8rpx;
height: 50rpx;
margin-right: 30rpx;
}
.myList {
}
.funcBar {
display: flex;
background: #fff;
width: 700rpx;
height: 140rpx;
justify-content: space-around;
}
.funcBar view {
display: flex;
align-items: center;
font-size: 36rpx;
}
.funcBar image {
width: 80rpx;
height: 80rpx;
}
.topbgimg {
width: 100vw;
position: absolute;
z-index: -1;
}
.reportItembox {
overflow: hidden;
display: flex;
flex-wrap: wrap;
justify-content: space-between;
}
.reportItem {
background: #fff;
border-radius: 15rpx;
width: 340rpx;
margin-top: 25rpx;
.t {
border-bottom: 1px solid #e5e5e5;
height: 70rpx;
line-height: 70rpx;
color: #2b3133;
font-size: 30rpx;
padding-left: 36rpx;
}
.rbody {
display: flex;
padding: 36rpx;
box-sizing: border-box;
view {
font-size: 26rpx;
color: #888;
width: 40%;
}
text {
color: #00c176;
font-weight: bold;
font-size: 36rpx;
display: block;
margin-bottom: 20rpx;
}
}
}
.changephonepop {
width: 100%;
}
.changephonepop view {
width: 100%;
margin: 0 0 30rpx;
}
.changephonepop view input {
width: 100%;
background: #f4f4f4;
font-size: 30rpx;
height: 80rpx;
padding: 0 15rpx;
box-sizing: border-box;
line-height: 80rpx;
}
.changephonepop view.ffff {
display: flex;
}
.changephonepop view button {
font-size: 24rpx;
margin-left: 10rpx;
white-space: nowrap;
width: 260rpx;
line-height: 80rpx;
background: linear-gradient(90deg, #00c176, #3ed89b);
color: #fff;
padding: 0;
border: none;
}
</style>
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!