123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364 |
- <template>
- <view class="page">
- <!-- 顶部黄色背景 -->
- <view class="top-bg"></view>
-
- <!-- 内容区域 -->
- <view class="content-area">
- <!-- 彩豆余额展示区 -->
- <view class="bean-balance">
- <view class="balance-header">
- <view class="title-area">
- <view class="yellow-dot"></view>
- <text class="my-bean-title">我的彩豆</text>
- </view>
- <view class="exchange-btn" @click="showExchangePopup">兑换</view>
- </view>
- <view class="bean-number">2560</view>
- </view>
- <!-- 星愿打卡区域 -->
- <view class="sign-cards">
- <view class="card purple-card">
- <view class="card-title">初次见面礼</view>
- <view class="card-desc">完善个人资料可得</view>
- <view class="card-reward">奖励+100彩豆</view>
- <view class="card-progress">80%</view>
- </view>
- <view class="card yellow-card">
- <view class="card-title">每日签到</view>
- <view class="card-desc">连续签到奖励更多</view>
- <view class="sign-btn" @click="showSignPopup">立即签到</view>
- </view>
- </view>
- <!-- 每日任务列表 -->
- <view class="task-list">
- <view class="task-header">
- <text class="task-title">每日任务</text>
- <text class="task-subtitle">获取免费彩豆</text>
- </view>
-
- <!-- 任务项列表 -->
- <view class="task-item" v-for="(item, index) in taskList" :key="index">
- <view class="task-info">
- <view class="task-name">{{item.name}}</view>
- <view class="task-desc">{{item.desc}}</view>
- </view>
- <view class="task-reward">+{{item.reward}}彩豆</view>
- <view class="task-btn" :class="{'task-completed': item.completed}" @click="claimReward(index)">
- {{item.completed ? '已领取' : '领取'}}
- </view>
- </view>
- </view>
- </view>
- <!-- 彩豆兑换弹窗 -->
- <view class="exchange-popup" v-if="showExchange">
- <view class="popup-mask" @click="hideExchangePopup"></view>
- <view class="popup-content">
- <!-- 弹窗顶部信息栏 -->
- <view class="popup-header">
- <text class="available-balance">可用M币: 14500</text>
- <text class="exchange-title">兑换彩豆</text>
- </view>
-
- <!-- 兑换区域主体 -->
- <view class="exchange-area">
- <view class="exchange-title-area">
- <text class="exchange-main-title">M币兑换彩豆数</text>
- <text class="exchange-subtitle">兑换彩豆数必须是10的倍数</text>
- </view>
-
- <view class="input-area">
- <view class="bean-icon"></view>
- <input type="number" class="exchange-input" placeholder="请输入兑换彩豆数量" v-model="exchangeAmount" />
- </view>
-
- <!-- 操作按钮 -->
- <view class="action-area">
- <view class="exchange-btn-large" @click="confirmExchange">立即兑换彩豆</view>
- <text class="tips-text">彩豆可用于创作(生成图片、音乐等AI创作功能)</text>
- </view>
- </view>
- </view>
- </view>
-
- <!-- 签到弹窗 -->
- <view class="sign-popup" v-if="showSign">
- <view class="popup-mask" @click="hideSignPopup"></view>
- <view class="sign-popup-content">
- <!-- 弹窗顶部 -->
- <view class="sign-popup-header">
- <text class="sign-popup-title">每日签到领好礼</text>
- <view class="sign-notify-switch">
- <text class="sign-notify-text">签到消息提醒</text>
- <switch class="sign-switch" color="#9C27B0" :checked="signNotify" @change="toggleSignNotify" />
- </view>
- <view class="sign-days-tag">已签到1天</view>
- </view>
-
- <!-- VIP特权区域 -->
- <view class="vip-area">
- <view class="vip-left">
- <text class="vip-text">VIP十通会员,签到享专属好礼</text>
- </view>
- <view class="vip-right">
- <text class="vip-offer">限时优惠 ></text>
- </view>
- </view>
-
- <!-- 签到奖励网格布局 -->
- <view class="sign-grid">
- <view class="sign-grid-item" v-for="(item, index) in signRewards" :key="index"
- :class="{'sign-received': index === 0}">
- <view class="sign-day-num">{{item.dayNum}}</view>
- <view class="sign-item-img"></view>
- <view class="sign-item-name">{{item.reward}}</view>
- <view class="sign-vip-tag" v-if="item.isVip">VIP</view>
- <view class="sign-received-mask" v-if="index === 0">
- <text class="received-text">已领取</text>
- </view>
- </view>
- </view>
-
- <!-- 底部签到按钮 -->
- <view class="sign-btn-large" @click="confirmSign">签到领取奖励</view>
- </view>
- </view>
- <!-- 提示框 -->
- <DialogBox ref="DialogBox"></DialogBox>
- </view>
- </template>
- <script>
- export default {
- components: {},
- data() {
- return {
- title: '任务中心',
- myinfo: {},
- realname: '',
- idcard: '',
- beanBalance: 2560,
- showExchange: false,
- exchangeAmount: '',
- mCoinBalance: 14500,
- showSign: false,
- signNotify: true,
- signRewards: [
- { dayNum: '01', reward: '海浪*3天', isVip: false },
- { dayNum: '02', reward: '红玫瑰*3', isVip: false },
- { dayNum: '03', reward: '樱花*3', isVip: false },
- { dayNum: '04', reward: '星辰*7天', isVip: false },
- { dayNum: '05', reward: '红玫瑰*5', isVip: false },
- { dayNum: '06', reward: '樱花*5', isVip: true },
- { dayNum: '07', reward: '特别奖励', isVip: true }
- ],
- taskList: [
- {
- name: '每日首次发布作品',
- desc: '当日首次发布作品即可获得奖励',
- reward: 20,
- completed: false
- },
- {
- name: '分享作品领彩豆',
- desc: '分享作品到社交平台即可获得奖励',
- reward: 20,
- completed: false
- },
- {
- name: '邀请好友领彩豆',
- desc: '成功邀请一位好友注册',
- reward: 50,
- completed: false
- },
- {
- name: '充值赠礼',
- desc: '首次充值即可获得额外奖励',
- reward: 30,
- completed: false
- },
- {
- name: '口碑缔造者',
- desc: '给他人作品评论5次',
- reward: 20,
- completed: false
- }
- ]
- }
- },
- onLoad() {
- this.loadInfo();
- },
- onShow() {},
- methods: {
- onBack() {},
- loadInfo() {
- uni.request({
- url: this.$apiHost + '/My/idcheck',
- data: {
- uuid: getApp().globalData.uuid
- },
- header: {
- "content-type": "application/json",
- 'sign': getApp().globalData.headerSign
- },
- success: (res) => {
- console.log("----:", res.data);
- this.myinfo = res.data;
- },
- complete: (com) => {
- // uni.hideLoading();
- },
- fail: (e) => {
- console.log("----e:", e);
- }
- });
- },
-
- // 显示兑换弹窗
- showExchangePopup() {
- this.showExchange = true;
- },
-
- // 隐藏兑换弹窗
- hideExchangePopup() {
- this.showExchange = false;
- },
-
- // 显示签到弹窗
- showSignPopup() {
- this.showSign = true;
- },
-
- // 隐藏签到弹窗
- hideSignPopup() {
- this.showSign = false;
- },
-
- // 切换签到通知开关
- toggleSignNotify(e) {
- this.signNotify = e.detail.value;
- },
-
- // 确认签到
- confirmSign() {
- uni.showToast({
- title: "签到成功,获得今日奖励",
- icon: 'none'
- });
- this.hideSignPopup();
- },
-
- // 确认兑换
- confirmExchange() {
- if (!this.exchangeAmount) {
- uni.showToast({
- title: "请输入兑换数量",
- icon: 'none'
- });
- return;
- }
-
- const amount = parseInt(this.exchangeAmount);
-
- if (isNaN(amount) || amount <= 0) {
- uni.showToast({
- title: "请输入有效数量",
- icon: 'none'
- });
- return;
- }
-
- if (amount % 10 !== 0) {
- uni.showToast({
- title: "兑换数量必须是10的倍数",
- icon: 'none'
- });
- return;
- }
-
- // 模拟兑换处理
- uni.showToast({
- title: "兑换成功,获得" + amount + "彩豆",
- icon: 'none'
- });
-
- this.beanBalance += amount;
- this.hideExchangePopup();
- this.exchangeAmount = '';
- },
-
- claimReward(index) {
- if(this.taskList[index].completed) {
- uni.showToast({
- title: "已领取该奖励",
- icon: 'none'
- });
- return;
- }
-
- // 模拟领取奖励
- this.taskList[index].completed = true;
- this.beanBalance += this.taskList[index].reward;
-
- uni.showToast({
- title: "成功领取" + this.taskList[index].reward + "彩豆",
- icon: 'none'
- });
- },
- setSFZ() {
- if (this.realname == '') {
- uni.showToast({
- title: "请填写姓名",
- icon: 'none'
- });
- return;
- }
- if (this.idcard.length < 15) {
- uni.showToast({
- title: "请填写身份证号",
- icon: 'none'
- });
- return;
- }
- uni.request({
- url: this.$apiHost + '/My/setsfz',
- data: {
- uuid: getApp().globalData.uuid,
- realname: this.realname,
- idcard: this.idcard
- },
- header: {
- "content-type": "application/json",
- 'sign': getApp().globalData.headerSign
- },
- success: (res) => {
- console.log("----:", res.data);
- uni.showToast({
- title: res.data.str,
- icon: 'none'
- })
- if (res.data.success == 'yes') {
- this.loadInfo();
- }
- },
- complete: (com) => {
- // uni.hideLoading();
- },
- fail: (e) => {
- console.log("----e:", e);
- }
- });
- },
- }
- }
- </script>
- <style scoped lang="scss">
- @import 'task.scss';
- </style>
|