KunWeb/fapp/ciyon_ap/pages/main/me.vue
2025-11-08 17:27:48 +08:00

401 lines
15 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<ciy-header title="我的" mode="scroll"></ciy-header>
<view class="topbg"></view>
<view :style="{height:header_statusbar_height+'px'}"></view>
<view style="padding-top:1em;">
<view class="avartop">
<image :src="file_stor(me.icon?me.icon:'/img/face.png')" mode="scaleToFill" />
</view>
</view>
<view class="maincard" style="margin-top: -2.5em;">
<view class="flex flex-center">
<view class="nick" @tap="gourl" data-url="$/pages/main/me_info">{{me.name?me.name:'登录/注册'}}</view>
<view class="icon zy" style="margin-left:1em;" v-if="showbalance" @tap="getbalance(2)"></view>
<view class="icon by" style="margin-left:1em;" v-else @tap="getbalance(1)"></view>
</view>
<view class="abs r0 t0" style="opacity: 0;" @tap="gourl" data-url="/pages/demo/index">Demo</view>
<view class="abs r1 b1 txt-smmm" @tap="copyboard('E' + me.eid)" v-if="me.id>0">E{{me.eid}}</view>
<view class="usrnum">
<view>
<view class="num" v-if="showbalance">
<ciy-shownum speed="80" :value="me.mycashmoney" unit=",100,2|万,1000000,2|亿,10000000000,2"></ciy-shownum>
</view>
<view class="num" v-else>---</view>
<view class="tit" @tap="gourl" data-url="$/pages/main/me_cash">提现</view>
</view>
<view>
<view class="num" v-if="showbalance">
<ciy-shownum :value="me.mypnt" unit=",1,0|万,10000,2|亿,100000000,2"></ciy-shownum>
</view>
<view class="num" v-else>---</view>
<view class="tit" @tap="gourl" data-url="$/pages/main/me_pnt">积分</view>
</view>
</view>
</view>
<view class="maincard px4" v-if="me.id>0">
<template v-if="me.accounttimes>tostamp()">
<view class="caption">有效会员</view>
<view class="expdate">{{ccode(g.userlevel, me.userlevel)}} 有效期至 {{todatetime(me.accounttimes, 'd')}}</view>
</template>
<template v-else>
<view class="caption">会员已到期</view>
<view class="expdate" style="color:var(--dag5);">{{ccode(g.userlevel, me.userlevel)}} 到期日 {{todatetime(me.accounttimes, 'd')}}</view>
</template>
<view class="ciy-hr"></view>
<view class="caption">选择{{me.accounttimes>tostamp()?'续费':'付费'}}方案</view>
<view class="userpay" v-if="init.userbuys">
<view class="item" @tap="buyuser(item)" v-for="(item,index) in init.userbuys" :key="index">
<view class="price">{{item.usermoney/100}}</view>
<view class="memo">{{item.name}}</view>
<view class="recommend" v-if="init.recommend == item.id">推荐</view>
</view>
</view>
<view class="caption">付费会员权益</view>
<view class="cgrid">
<view class="item">
<view class="icon">📇</view>
<view class="txt">权益1</view>
</view>
<view class="item">
<view class="icon">🤝</view>
<view class="txt">权益2</view>
</view>
</view>
</view>
<view class="maincard" style="min-height:9em;">
<view class="ciy-grid">
<view class="grid">
<view class="icon" :style="{backgroundImage:svg2bg(svg.ciy)}"></view>
<view class="name">图标名称</view>
</view>
<view class="grid">
<view class="icon" :style="{backgroundImage:svg2bg(svg.ciy)}"></view>
<view class="name">图标名称</view>
</view>
<view class="grid">
<view class="icon" :style="{backgroundImage:svg2bg(svg.ciy)}"></view>
<view class="name">图标名称</view>
</view>
<view class="grid">
<view class="icon" :style="{backgroundImage:svg2bg(svg.ciy)}"></view>
<view class="name">图标名称</view>
</view>
</view>
<view class="ciy-grid">
<view class="grid">
<view class="icon" :style="{backgroundImage:svg2bg(svg.ciy)}"></view>
<view class="name">图标名称</view>
</view>
<view class="grid">
<view class="icon" :style="{backgroundImage:svg2bg(svg.ciy)}"></view>
<view class="name">图标名称</view>
</view>
<view class="grid">
<view class="icon" :style="{backgroundImage:svg2bg(svg.ciy)}"></view>
<view class="name">图标名称</view>
</view>
<view class="grid">
<view class="icon" :style="{backgroundImage:svg2bg(svg.ciy)}"></view>
<view class="name">图标名称</view>
</view>
</view>
</view>
<ciy-swipelist v-if="me.id>0" :icon="svg.ciy" title="实名认证" data-url="$/pages/main/me_real" @tap="gourl" :right="tomsk(me.truename, '#***')" more></ciy-swipelist>
<view class="bg5" style="height:0.3em;" v-if="me.id>0"></view>
<ciy-swipelist title="收入明细" v-if="me.id>0" @tap="gourl" data-url="$/pages/main/me_cash_in" more></ciy-swipelist>
<view class="bg5" style="height:0.3em;"></view>
<ciy-swipelist v-if="me.id>0" title="个人信息" @tap="gourl" data-url="$/pages/main/me_info" more></ciy-swipelist>
<ciy-swipelist v-if="me.id>0" title="收货地址" @tap="gourl" data-url="$/pages/main/me_shipaddr" more></ciy-swipelist>
<ciy-swipelist v-if="me.id>0" title="我要开票" @tap="gourl" data-url="$/pages/main/me_invoice" :right="me.myinvmoney>=100?'可开票金额 ' + me.myinvmoney/100 + '元':'未达开票金额'" more></ciy-swipelist>
<ciy-swipelist v-if="me.id>0" title="分享二维码" @tap="gourl" data-url="$/pages/main/me_qrcode" more></ciy-swipelist>
<ciy-swipelist v-if="me.mobile" :title="me.needpass?'设置密码':'修改密码'" @tap="gourl" data-url="$/pages/main/me_passchange" more></ciy-swipelist>
<ciy-swipelist v-if="me.id>0" title="意见建议" @tap="gourl" data-url="$/pages/main/me_suggest" right="留下您的宝贵建议" more></ciy-swipelist>
<ciy-swipelist title="帮助中心" @tap="gourl" data-url="/pages/main/psection?id=1" right="FAQ" more></ciy-swipelist>
<ciy-swipelist v-if="me.id>0" title="工单提问" @tap="gourl" data-url="$/pages/main/me_problem" right="提交您的问题" more></ciy-swipelist>
<ciy-swipelist title="联系客服" more>
<button open-type="contact" plain class="btn tran" style="color:var(--txt5)">在线客服</button>
</ciy-swipelist>
<ciy-swipelist title="关于我们" @tap="gourl" data-url="/pages/main/paper?id=1" right="众产" more></ciy-swipelist>
<ciy-swipelist title="软件版本" @tap="upver" :right="version" more></ciy-swipelist>
<view class="bg5" v-if="me.id>0" style="height:0.5em;"></view>
<ciy-swipelist v-if="me.id>0" title="重新登录" @tap="relogin" more></ciy-swipelist>
<ciy-tabbar ref="tabbar"></ciy-tabbar>
</template>
<script>
export default {
data() {
return {
showbalance: false,
svg: {
ciy: '<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path d="M987.136 384.512C919.552 131.584 668.16-22.528 415.232 27.136c219.648-41.984 434.176 79.36 488.96 283.136 57.344 214.016-82.944 437.76-313.344 499.2-49.664 13.312-78.848 64-65.536 113.152 13.312 49.664 64 78.848 113.152 65.536 263.168-70.144 418.816-340.48 348.672-603.648zM116.224 713.216C58.88 499.2 199.68 275.456 430.08 214.016c49.664-13.312 78.848-64 65.536-113.152C482.816 51.2 432.128 21.504 382.464 34.816c-263.68 70.656-419.84 340.992-349.184 604.16 67.584 252.928 319.488 407.04 571.392 356.864-219.648 42.496-433.664-78.848-488.448-282.624z m93.184-203.776L291.84 449.536c44.544-32.256 90.112-32.256 133.12-0.512l83.456 60.928-149.504-230.4-149.504 229.888z m516.096-60.416L808.96 509.952l-149.504-229.888-149.504 229.376 82.432-59.904c44.544-32.256 90.112-32.256 133.12-0.512z m-366.08 291.84L441.856 680.96c44.544-32.256 90.112-32.256 133.12-0.512l83.456 60.928-149.504-230.4-149.504 229.888z" fill="#56a4ef"></path></svg>',
},
}
},
onLoad() {},
onShow() {
this.getinit();
},
onPullDownRefresh(b) {
var app = getApp();
app.globalData._restorage = true;
uni.stopPullDownRefresh();
},
methods: {
async getinit() {
this.getauth();
var retjson = this.callajax({
func: 'me.usrbuy_get',
cache: 86400,
data: {}
}).then(json => {
this.init = json;
});
},
async getbalance(act) {
var auth = await this.getauth();
if(auth.me.id == 0)
return;
if (act == 2) {
this.showbalance = false;
return;
}
this._loading = true;
var retjson = await this.callajax({
func: 'me.balance_get',
data: {}
});
this._loading = false;
if (retjson.code != 1)
return this.alert(retjson.errmsg);
this.showbalance = true;
this.me = this.objdeepmerge(this.me, retjson.user);
this.setstorage('me', this.me);
},
async buyuser(item) {
if (item.userlevel < this.me.userlevel) {
if (await this.askmsg('您当前会员等级高于续费等级,\n是否降级续费', '降级') != 'ok')
return;
}
if (this._loading)
return;
this._loading = true;
var retjson = await this.callajax({
func: 'me.buy_usernow',
data: {
id: item.id
}
});
this._loading = false;
if (retjson.code != 1)
return this.alert(retjson.errmsg);
retjson.provider = 'wxpay';
try {
var retpay = await uni.requestPayment(retjson);
await this.sleep(1000);
var retjson2 = await this.callajax({
func: 'me.buy_userchk',
data: {
orderid: retjson.orderid
}
});
if (retjson2.code != 1)
return this.toast(retjson2.errmsg);
this.me.accounttimes = retjson2.accounttimes;
this.me.userlevel = retjson2.userlevel;
this.setstorage('me', this.me);
this.toast('支付成功');
} catch (e) {}
},
relogin() {
this.clearstorage();
this.getauth(true);
},
upver() {
var app = getApp();
app.appupdate('all', async verinfo => {
return await this.askmsg(verinfo, '更新') == 'ok';
});
}
}
}
</script>
<style>
.topbg {
height: 10em;
overflow: hidden;
position: absolute;
top: 0;
left: 0;
right: 0;
}
.topbg::before {
content: '';
left: -5em;
right: -5em;
border-radius: 0 0 100vw 100vw;
height: 100%;
background: linear-gradient(60deg, var(--e-userbg1), var(--e-userbg2));
position: absolute;
top: 0;
pointer-events: none;
z-index: 0;
}
.avartop {
position: relative;
display: flex;
margin: 0 0 0 1.5em;
width: 5em;
height: 5em;
border-radius: 50%;
background: var(--bg2);
border: 2px solid var(--bg1);
overflow: hidden;
z-index: 3;
}
.avartop>image {
width: 100%;
height: 100%;
}
.maincard {
position: relative;
background: var(--bg1);
color: var(--txt6);
min-height: 7em;
padding: 0.5em;
margin: 0 1em 1em 1em;
border-radius: 0.3em;
box-shadow: 0 4px 8px var(--bg6);
}
.maincard .nick {
font-size: 1.2em;
font-weight: bold;
padding-left: 4.5em;
}
.expdate {
display: block;
padding-left: 1em;
margin-top: -1em;
margin-bottom: 1em;
font-size: 0.9em;
color: var(--succ5);
}
.caption {
font-size: 1.2em;
font-weight: bold;
padding: 1em 0;
}
.userpay {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
}
.userpay>.item {
position: relative;
width: 30%;
padding: 1em 0;
text-align: center;
border: 1px solid var(--bg4);
border-radius: 1em;
}
.userpay>.item>.price {
display: block;
font-size: 1.2em;
font-weight: bold;
color: var(--man5);
}
.userpay>.item>.memo {
font-size: 13px;
color: var(--txt4);
}
.userpay>.item>.recommend {
position: absolute;
top: -0.5em;
right: 0.5em;
padding: 0.2em 0.8em;
font-size: 0.8em;
color: var(--dagt);
background: var(--dag5);
border-radius: 1em;
}
.cgrid {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
}
.cgrid .item {
width: 48%;
margin-bottom: 1em;
padding: 1em;
display: flex;
flex-direction: column;
align-items: center;
background: var(--bg3);
border-radius: 1em;
}
.cgrid .icon {
width: 2em;
height: 2em;
margin-bottom: 0.5em;
border-radius: 50%;
background: linear-gradient(-25deg, #1890ff, #c0e1ff);
display: flex;
justify-content: center;
align-items: center;
font-size: 1.5em;
}
.icon {
width: 1.5em;
height: 1.5em;
}
.icon.by {
background-image: url("data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTkyNi4wMzM5MiAzMzkuODcwNzJjLTkuODY2MjQgMC0xOS4xNjkyOCA0LjE0MjA4LTI2LjE3ODU2IDExLjA4NDgtMTQuMDkwMjQgMTMuOTQ2ODgtMzkuNDQ0NDggMzAuOTQwMTYtNzkuODU2NjQgNDcuMjc4MDgtNzkuODYxNzYgMzIuMjg2NzItMTkyLjEyMjg4IDUwLjgwMDY0LTMwNy45OTM2IDUwLjgwMDY0cy0yMjguMTM2OTYtMTguNTEzOTItMzA3Ljk5MzYtNTAuODAwNjRjLTQwLjQxMjE2LTE2LjMzNzkyLTY1Ljc2NjQtMzMuMzMxMi03OS44NTY2NC00Ny4yNzgwOC03LjAxNDQtNi45NDI3Mi0xNi4zMTIzMi0xMS4wNzk2OC0yNi4xNzg1Ni0xMS4wNzk2OC0zMy4wNTQ3MiAwLTQ4Ljk5ODQgNDAuMzU1ODQtMjQuOTg1NiA2My4wNzMyOCA3Mi44MzIgNjguODk0NzIgMjQxLjk3MTIgMTE3LjE3MTIgNDM5LjAxOTUyIDExNy4xNzEyczM2Ni4xODc1Mi00OC4yODE2IDQzOS4wMTk1Mi0xMTcuMTcxMmMyNC4wMDI1Ni0yMi43MjI1NiA4LjA1Mzc2LTYzLjA3ODQtMjQuOTk1ODQtNjMuMDc4NHoiIGZpbGw9IiM2NjY2NjYiPjwvcGF0aD48cGF0aCBkPSJNMzUzLjgzODA4IDY0Mi40MTE1MmwyMi45MjIyNC0xMzAuMDAxOTJhMzUuNTQ4MTYgMzUuNTQ4MTYgMCAwIDEgNzAuMDAwNjQgMTIuMzM5MmwtMjIuOTIyMjQgMTMwLjAwMTkyYTM1LjUzNzkyIDM1LjUzNzkyIDAgMSAxLTcwLjAwMDY0LTEyLjMzOTJ6TTYxMC4zMTQyNCA2NTQuNzU1ODRsLTIyLjkyMjI0LTEzMC4wMDE5MmEzNS41MzI4IDM1LjUzMjggMCAwIDEgMjguODMwNzItNDEuMTY5OTIgMzUuNTMyOCAzNS41MzI4IDAgMCAxIDQxLjE2OTkyIDI4LjgzMDcybDIyLjkyMjI0IDEzMC4wMDE5MmEzNS41NDgxNiAzNS41NDgxNiAwIDAgMS03MC4wMDA2NCAxMi4zMzkyek04NzguNzk2OCA1ODkuMzc4NTZsLTkzLjM0MjcyLTkzLjM0MjcyYTM1LjUzNzkyIDM1LjUzNzkyIDAgMSAxIDUwLjI2MzA0LTUwLjI2MzA0bDkzLjM0MjcyIDkzLjM0MjcyYTM1LjUzNzkyIDM1LjUzNzkyIDAgMSAxLTUwLjI2MzA0IDUwLjI2MzA0ek0xMDUuMDk4MjQgNTM5LjExNTUybDkzLjM0MjcyLTkzLjM0MjcyYTM1LjUzNzkyIDM1LjUzNzkyIDAgMSAxIDUwLjI2MzA0IDUwLjI2MzA0bC05My4zNDI3MiA5My4zNDI3MmEzNS41Mzc5MiAzNS41Mzc5MiAwIDEgMS01MC4yNjMwNC01MC4yNjMwNHoiIGZpbGw9IiM2NjY2NjYiPjwvcGF0aD48L3N2Zz4=");
}
.icon.zy {
background-image: url("data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTUxMiAyODQuMTkwNzJjNzIuMzUwNzIgMCAxNjAuMTg5NDQgMzYuNTc3MjggMjQ3LjMzMTg0IDEwMi45ODg4IDY0LjY4NjA4IDQ5LjMwMDQ4IDEwOC4zMDg0OCA5OS4zNjg5NiAxMjYuMTc3MjggMTI1LjE3ODg4LTE3Ljg0MzIgMjUuNTIzMi02Mi4yOTUwNCA3NS42NDI4OC0xMjkuMzMxMiAxMjUuNjM0NTYtODguMDQ4NjQgNjUuNjY0LTE3NC43NjYwOCAxMDEuODIxNDQtMjQ0LjE3NzkyIDEwMS44MjE0NC03MC41MjggMC0xNTcuNjgwNjQtMzYuNTg3NTItMjQ1LjQwMTYtMTAzLjAyNDY0LTY1LjEzNjY0LTQ5LjMzMTItMTA5LjI2NTkyLTk5LjA5NzYtMTI3LjY3NzQ0LTEyNS4wNTA4OCAxOC4xMzUwNC0yNS45ODQgNjEuNTczMTItNzUuNjQ4IDEyNS43NTIzMi0xMjQuNTU5MzZDMzUxLjgxMDU2IDMyMC43NjI4OCA0MzkuNjQ5MjggMjg0LjE5MDcyIDUxMiAyODQuMTkwNzJtMC03MC44NzYxNmMtMjIwLjMyODk2IDAtNDUwLjU2IDI1MC41OTMyOC00NTAuNTYgMjk4LjY4NTQ0czIzNS4xODIwOCAyOTguNjg1NDQgNDUwLjU2IDI5OC42ODU0NGMyMTAuNDI2ODggMCA0NTAuNTYtMjQ1LjUyOTYgNDUwLjU2LTI5OC42ODU0NCAwLTQ4LjA5MjE2LTIzMC4yMzEwNC0yOTguNjg1NDQtNDUwLjU2LTI5OC42ODU0NHoiIGZpbGw9IiM2NjY2NjYiPjwvcGF0aD48cGF0aCBkPSJNNTEyIDQ0Ni4xODc1MmMzNi4yODU0NCAwIDY1LjgxMjQ4IDI5LjUyMTkyIDY1LjgxMjQ4IDY1LjgxMjQ4cy0yOS41MjcwNCA2NS44MTI0OC02NS44MTI0OCA2NS44MTI0OFM0NDYuMTg3NTIgNTQ4LjI5MDU2IDQ0Ni4xODc1MiA1MTIgNDc1LjcxNDU2IDQ0Ni4xODc1MiA1MTIgNDQ2LjE4NzUybTAtNzAuODc2MTZjLTc1LjQ4OTI4IDAtMTM2LjY4ODY0IDYxLjE5NDI0LTEzNi42ODg2NCAxMzYuNjg4NjRTNDM2LjUxMDcyIDY0OC42ODg2NCA1MTIgNjQ4LjY4ODY0czEzNi42ODg2NC02MS4xOTQyNCAxMzYuNjg4NjQtMTM2LjY4ODY0UzU4Ny40ODkyOCAzNzUuMzExMzYgNTEyIDM3NS4zMTEzNnoiIGZpbGw9IiM2NjY2NjYiPjwvcGF0aD48L3N2Zz4=");
}
.usrnum {
padding-top: 1em;
padding-bottom: 0.5em;
display: flex;
}
.usrnum>view {
flex: 1;
text-align: center;
}
.usrnum .num {
height: 2.5rem;
padding-top: 0.2rem;
font-size: 1.3em;
}
.usrnum .tit {
font-size: 0.9em;
}
</style>