c5_labsci/fapp/ciyon_ap/pages/main/notify.vue
2026-01-21 22:14:26 +08:00

412 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:1rem;">
<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.5rem;">
<view class="flex flex-center">
<view class="nick" @tap="gourl" data-url="$/pages/me/user_info">{{me.id>0?(me.name?me.name:'游客'):'登录/注册'}}</view>
<view class="icon zy" style="margin-left:1rem;" v-if="showbalance" @tap="getbalance(2)"></view>
<view class="icon by" style="margin-left:1rem;" 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.mymoney" unit=",100,2|万,1000000,2|亿,10000000000,2"></ciy-shownum>
</view>
<view class="num" v-else>---</view>
<view class="tit">可消费余额</view>
</view>
<view>
<view class="num" v-if="showbalance">
<ciy-shownum :value="me.mycashmoney" unit=",100,2|万,1000000,2|亿,10000000000,2"></ciy-shownum>
</view>
<view class="num" v-else>---</view>
<view class="tit">可提现余额</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/me/pnt_lst">积分</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>
xiaoxi 消息
<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">
<view class="ciy-grid">
<view class="grid" data-url="$/pages/me/cash_charge" @tap="gourl">
<view class="icon" :style="{backgroundImage:svg2bg(svg.v1)}"></view>
<view class="name">充值</view>
</view>
<view class="grid" data-url="$/pages/me/cashie_lst" @tap="gourl">
<view class="icon" :style="{backgroundImage:svg2bg(svg.v3)}"></view>
<view class="name">收支明细</view>
</view>
<view class="grid" data-url="$/pages/me/cashout_cash" @tap="gourl">
<view class="icon" :style="{backgroundImage:svg2bg(svg.v2)}"></view>
<view class="name">提现</view>
</view>
<view class="grid" data-url="$/pages/me/cashoe_lst" @tap="gourl">
<view class="icon" :style="{backgroundImage:svg2bg(svg.v3)}"></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>
<view class="bg5" style="height:0.3rem;"></view>
<ciy-swipelist v-if="me.id>0" title="众识码" data-url="$/pages/me/safe_ccub" @tap="gourl" :right="tocciy(me.cciy)" more></ciy-swipelist>
<ciy-swipelist v-if="me.id>0" title="实名认证" data-url="$/pages/me/safe_real" @tap="gourl" :right="tomsk(me.truename, '#***')" more></ciy-swipelist>
<view class="bg5" style="height:0.3rem;"></view>
<ciy-swipelist v-if="me.id>0" title="个人信息" @tap="gourl" data-url="$/pages/me/user_info" more></ciy-swipelist>
<ciy-swipelist v-if="me.id>0" title="收款银行" @tap="gourl" data-url="$/pages/me/user_bank" :right="me.bankaccount?'已设置':'未设置'" more></ciy-swipelist>
<ciy-swipelist v-if="me.id>0" title="收货地址" @tap="gourl" data-url="$/pages/me/user_shipaddr" more></ciy-swipelist>
<ciy-swipelist v-if="me.id>0" title="我要开票" @tap="gourl" data-url="$/pages/me/invoicing" :right="me.myinvmoney>=1000?'可开票':'未达开票金额'" more></ciy-swipelist>
<ciy-swipelist v-if="me.id>0" title="分享二维码" @tap="gourl" data-url="$/pages/me/share_qrcode" more></ciy-swipelist>
<ciy-swipelist v-if="me.mobile" :title="me.needpass?'设置密码':'修改密码'" @tap="gourl" data-url="$/pages/me/safe_password" more></ciy-swipelist>
<ciy-swipelist v-if="me.id>0" title="意见建议" @tap="gourl" data-url="$/pages/me/suggest" right="留下您的宝贵建议" more></ciy-swipelist>
<ciy-swipelist title="帮助中心" @tap="gourl" data-url="/pages/pub/psection?id=1" right="FAQ" more></ciy-swipelist>
<ciy-swipelist v-if="me.id>0" title="工单提问" @tap="gourl" data-url="$/pages/me/problem_pub" 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/pub/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.5rem;"></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 {
svg: {},
version:'',
showbalance: false,
}
},
onLoad() {
var app = getApp();
this.version = app.globalData._version;
this.load_svgicon(this.file_stor('/svgicon/me.txt')).then(svgs => {
this.svg = svgs;
});
this.getinit();
},
onPullDownRefresh(b) {
var app = getApp();
app.globalData._restorage = true;
uni.stopPullDownRefresh();
},
methods: {
async getinit() {
await this.getauth();
var retjson = await this.callfunc({
func: 'main.me_init',
//cache: 86400,
});
if (retjson.code != 1)
return this.alert(retjson.errmsg);
this.init = retjson;
},
async getbalance(act) {
if (this._loading)
return;
await this.getauth();
if (this.me.id == 0)
return;
if (act == 2) {
this.showbalance = false;
return;
}
this._loading = true;
var retjson = await this.callfunc({
func: 'me.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.callfunc({
func: 'me.me_userbuy_create',
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.callfunc({
func: 'me.me_userbuy_chk',
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('relogin');
},
upver() {
var app = getApp();
app.appupdate('all', async verinfo => {
return await this.askmsg(verinfo, '更新') == 'ok';
});
},
}
}
</script>
<style>
.topbg {
height: 10rem;
overflow: hidden;
position: absolute;
top: 0;
left: 0;
right: 0;
}
.topbg::before {
content: '';
left: -5rem;
right: -5rem;
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.5rem;
width: 5rem;
height: 5rem;
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);
padding: 0.5rem;
margin: 0 1rem 1rem 1rem;
border-radius: 0.3rem;
box-shadow: 0 4px 8px var(--bg6);
}
.maincard .nick {
font-size: 1.2rem;
font-weight: bold;
padding-left: 4.5rem;
}
.expdate {
display: block;
padding-left: 1rem;
margin-top: -1rem;
margin-bottom: 1rem;
font-size: 0.9rem;
color: var(--succ5);
}
.caption {
font-size: 1.2rem;
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: 1rem;
}
.userpay>.item>.price {
display: block;
font-size: 1.2rem;
font-weight: bold;
color: var(--man5);
}
.userpay>.item>.memo {
font-size: 13px;
color: var(--txt4);
}
.userpay>.item>.recommend {
position: absolute;
top: -0.5rem;
right: 0.5rem;
padding: 0.2rem 0.8rem;
font-size: 0.8rem;
color: var(--dagt);
background: var(--dag5);
border-radius: 1rem;
}
.cgrid {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
}
.cgrid .item {
width: 48%;
margin-bottom: 1rem;
padding: 1rem;
display: flex;
flex-direction: column;
align-items: center;
background: var(--bg3);
border-radius: 1rem;
}
.cgrid .icon {
width: 2rem;
height: 2rem;
margin-bottom: 0.5rem;
border-radius: 50%;
background: linear-gradient(-25deg, #1890ff, #c0e1ff);
display: flex;
justify-content: center;
align-items: center;
font-size: 1.5rem;
}
.icon {
width: 1.5rem;
height: 1.5rem;
}
.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: 1rem;
padding-bottom: 0.5rem;
display: flex;
}
.usrnum>view {
flex: 1;
text-align: center;
}
.usrnum .num {
height: 2.5rem;
padding-top: 0.2rem;
font-size: 1.3rem;
}
.usrnum .tit {
font-size: 0.9rem;
}
</style>