chore(样式调整): 所有页面统一使用<view :style="themeColor"> 这种方式

This commit is contained in:
2025-12-31 11:14:49 +08:00
parent 921e8b79b1
commit 7a28bb7f7a
102 changed files with 3558 additions and 3632 deletions

View File

@@ -1,6 +1,5 @@
<template> <template>
<page-meta :page-style="themeColor"></page-meta> <view class="empty" :style="themeColor">
<view class="empty">
</view> </view>
</template> </template>

View File

@@ -1,6 +1,5 @@
<template> <template>
<page-meta :page-style="themeColor"></page-meta> <view :style="themeColor +';' + { backgroundColor: bgColor, minHeight: openBottomNav ? 'calc(100vh - 55px)' : '' }" class="page-img">
<view :style="{ backgroundColor: bgColor, minHeight: openBottomNav ? 'calc(100vh - 55px)' : '' }" class="page-img">
<view class="site-info-box" <view class="site-info-box"
v-if="$util.isWeiXin() && followOfficialAccount && followOfficialAccount.isShow && wechatQrcode"> v-if="$util.isWeiXin() && followOfficialAccount && followOfficialAccount.isShow && wechatQrcode">
<view class="site-info"> <view class="site-info">

View File

@@ -1,5 +1,4 @@
<template> <template>
<page-meta :page-style="themeColor"></page-meta>
<view :style="themeColor"> <view :style="themeColor">
<view class="container"> <view class="container">
<scroll-view class="scroll-view" :scroll-y="true" :show-scrollbar="false" :refresher-enabled="true" :refresher-triggered="refresherTriggered" @refresherrefresh="onRefresh"> <scroll-view class="scroll-view" :scroll-y="true" :show-scrollbar="false" :refresher-enabled="true" :refresher-triggered="refresherTriggered" @refresherrefresh="onRefresh">

View File

@@ -1,5 +1,4 @@
<template> <template>
<page-meta :page-style="themeColor"></page-meta>
<view :style="themeColor"> <view :style="themeColor">
<block v-if="diyData"> <block v-if="diyData">
<block v-for="(item, index) in diyData.value" :key="index"> <block v-for="(item, index) in diyData.value" :key="index">

View File

@@ -1,5 +1,4 @@
<template> <template>
<page-meta :page-style="themeColor"></page-meta>
<view :style="themeColor"> <view :style="themeColor">
<!-- #ifndef H5 --> <!-- #ifndef H5 -->
<!-- <view class="page-header" v-if="goodsSkuDetail && goodsSkuDetail.config && goodsSkuDetail.config.nav_bar_switch == 0"> <!-- <view class="page-header" v-if="goodsSkuDetail && goodsSkuDetail.config && goodsSkuDetail.config.nav_bar_switch == 0">

View File

@@ -1,6 +1,5 @@
<template> <template>
<page-meta :page-style="themeColor"></page-meta> <view class="content" :style="themeColor">
<view class="content">
<view class="head-wrap"> <view class="head-wrap">
<!-- 搜索区域 --> <!-- 搜索区域 -->
<view class="search-wrap uni-flex uni-row"> <view class="search-wrap uni-flex uni-row">

View File

@@ -1,6 +1,5 @@
<template> <template>
<page-meta :page-style="themeColor"></page-meta> <view class="detail-container" :class="{ 'safe-area': isIphoneX }" :style="themeColor">
<view class="detail-container" :class="{ 'safe-area': isIphoneX }">
<!-- 订单状态 --> <!-- 订单状态 -->
<view class="status-wrap color-base-bg" :style="{ backgroundImage: 'url(' + $util.img('public/uniapp/order/status-wrap-bg.png') + ')' }"> <view class="status-wrap color-base-bg" :style="{ backgroundImage: 'url(' + $util.img('public/uniapp/order/status-wrap-bg.png') + ')' }">
<view class="order-status-left"> <view class="order-status-left">

View File

@@ -1,5 +1,4 @@
<template> <template>
<page-meta :page-style="themeColor"></page-meta>
<view :style="themeColor"> <view :style="themeColor">
<loading-cover ref="loadingCover"></loading-cover> <loading-cover ref="loadingCover"></loading-cover>
</view> </view>

View File

@@ -1,5 +1,4 @@
<template> <template>
<page-meta :page-style="themeColor"></page-meta>
<view :style="themeColor"> <view :style="themeColor">
<loading-cover ref="loadingCover"></loading-cover> <loading-cover ref="loadingCover"></loading-cover>
</view> </view>

View File

@@ -1,6 +1,5 @@
<template> <template>
<page-meta :page-style="themeColor"></page-meta> <view class="detail-container" :class="{ 'safe-area': isIphoneX }" :style="themeColor">
<view class="detail-container" :class="{ 'safe-area': isIphoneX }">
<!-- 订单状态 --> <!-- 订单状态 -->
<view class="status-wrap color-base-bg" :style="{ backgroundImage: 'url(' + $util.img('public/uniapp/order/status-wrap-bg.png') + ')' }"> <view class="status-wrap color-base-bg" :style="{ backgroundImage: 'url(' + $util.img('public/uniapp/order/status-wrap-bg.png') + ')' }">
<view class="order-status-left"> <view class="order-status-left">

View File

@@ -1,6 +1,5 @@
<template> <template>
<page-meta :page-style="themeColor"></page-meta> <view class="order-container" :style="themeColor">
<view class="order-container">
<view class="cate-search"> <view class="cate-search">
<view class="search-box"> <view class="search-box">
<input class="uni-input" maxlength="50" v-model="searchText" confirm-type="search" <input class="uni-input" maxlength="50" v-model="searchText" confirm-type="search"

View File

@@ -1,5 +1,4 @@
<template> <template>
<page-meta :page-style="themeColor"></page-meta>
<view :style="themeColor"> <view :style="themeColor">
<common-payment :api="api" create-data-key="orderCreateData" ref="payment"></common-payment> <common-payment :api="api" create-data-key="orderCreateData" ref="payment"></common-payment>
</view> </view>

View File

@@ -1,6 +1,5 @@
<template> <template>
<page-meta :page-style="themeColor"></page-meta> <view class="apply" :style="themeColor">
<view class="apply">
<!-- 导航栏 --> <!-- 导航栏 -->
<!-- #ifdef H5 --> <!-- #ifdef H5 -->
<view class="head-nav color-base-bg"></view> <view class="head-nav color-base-bg"></view>

View File

@@ -1,147 +1,146 @@
<template> <template>
<page-meta :page-style="themeColor"></page-meta> <view class="bill" :style="themeColor">
<view class="bill" > <mescroll-uni ref="mescroll" @getData="getData" class="member-point" :size="8">
<mescroll-uni ref="mescroll" @getData="getData" class="member-point" :size="8"> <block slot="list">
<block slot="list"> <view class="balances" v-if="accountList.length" v-for="item in accountList" :key="item.id">
<view class="balances" v-if="accountList.length" v-for="item in accountList" :key="item.id"> <image v-if="item.type == 'order'" :src="$util.img('public/uniapp/fenxiao/bill/jiesuan.png')" mode="widthFix"></image>
<image v-if="item.type == 'order'" :src="$util.img('public/uniapp/fenxiao/bill/jiesuan.png')" mode="widthFix"></image> <image v-else :src="$util.img('public/uniapp/fenxiao/bill/withdraw.png')" mode="widthFix"></image>
<image v-else :src="$util.img('public/uniapp/fenxiao/bill/withdraw.png')" mode="widthFix"></image> <view class="balances-info">
<view class="balances-info"> <text>{{ item.type_name }}</text>
<text>{{ item.type_name }}</text> <text>账单编号: {{ item.account_no }}</text>
<text>账单编号: {{ item.account_no }}</text> <text>{{ $util.timeStampTurnTime(item.create_time) }}</text>
<text>{{ $util.timeStampTurnTime(item.create_time) }}</text> </view>
</view> <view class="balances-num">
<view class="balances-num"> <text :class="item.money > 0 ? 'color-base-text' : ''">{{ item.money > 0 ? '+' + item.money : item.money }}</text>
<text :class="item.money > 0 ? 'color-base-text' : ''">{{ item.money > 0 ? '+' + item.money : item.money }}</text> </view>
</view> </view>
</view> <ns-empty v-if="!accountList.length && showEmpty" text="暂无账单信息" :isIndex="false"></ns-empty>
<ns-empty v-if="!accountList.length && showEmpty" text="暂无账单信息" :isIndex="false"></ns-empty> </block>
</block> <loading-cover ref="loadingCover"></loading-cover>
<loading-cover ref="loadingCover"></loading-cover> </mescroll-uni>
</mescroll-uni> </view>
</view> </template>
</template>
<script>
<script> export default {
export default { data() {
data() { return {
return { accountList: {},
accountList: {}, showEmpty: true
showEmpty: true };
}; },
}, onShow() {
onShow() { setTimeout( () => {
setTimeout( () => { if (!this.addonIsExist.fenxiao) {
if (!this.addonIsExist.fenxiao) { this.$util.showToast({
this.$util.showToast({ title: '商家未开启分销',
title: '商家未开启分销', mask: true,
mask: true, duration: 2000
duration: 2000 });
}); setTimeout(() => {
setTimeout(() => { this.$util.redirectTo('/pages/index/index');
this.$util.redirectTo('/pages/index/index'); }, 2000);
}, 2000); }
} },1000);
},1000); },
}, methods: {
methods: { getData(mescroll) {
getData(mescroll) { if (mescroll.num == 1) {
if (mescroll.num == 1) { this.accountList = [];
this.accountList = []; }
} this.$api.sendRequest({
this.$api.sendRequest({ url: '/fenxiao/api/account/page',
url: '/fenxiao/api/account/page', data: {
data: { page: mescroll.num,
page: mescroll.num, page_size: mescroll.size
page_size: mescroll.size },
}, success: res => {
success: res => { let newArr = [];
let newArr = []; let msg = res.message;
let msg = res.message; if (res.code == 0 && res.data && res.data.list) {
if (res.code == 0 && res.data && res.data.list) { newArr = res.data.list;
newArr = res.data.list; } else {
} else { this.$util.showToast({
this.$util.showToast({ title: msg
title: msg });
}); }
} mescroll.endSuccess(newArr.length);
mescroll.endSuccess(newArr.length); //设置列表数据
//设置列表数据 if (mescroll.num == 1) this.accountList = []; //如果是第一页需手动制空列表
if (mescroll.num == 1) this.accountList = []; //如果是第一页需手动制空列表 this.accountList = this.accountList.concat(newArr); //追加新数据
this.accountList = this.accountList.concat(newArr); //追加新数据 if (this.$refs.loadingCover) this.$refs.loadingCover.hide();
if (this.$refs.loadingCover) this.$refs.loadingCover.hide(); },
}, fail: res => {
fail: res => { this.showEmpty = true;
this.showEmpty = true; mescroll.endErr();
mescroll.endErr(); if (this.$refs.loadingCover) this.$refs.loadingCover.hide();
if (this.$refs.loadingCover) this.$refs.loadingCover.hide(); }
} });
}); }
} }
} };
}; </script>
</script>
<style lang="scss">
<style lang="scss"> /deep/ .empty {
/deep/ .empty { margin-top: 0 !important;
margin-top: 0 !important; }
}
/deep/ .member-point .mescroll-uni-content {
/deep/ .member-point .mescroll-uni-content { overflow: hidden;
overflow: hidden; }
}
.balances {
.balances { width: calc(100% - 60rpx);
width: calc(100% - 60rpx); border-radius: 10rpx;
border-radius: 10rpx; margin: 0 auto;
margin: 0 auto; padding: 27rpx 27rpx;
padding: 27rpx 27rpx; box-sizing: border-box;
box-sizing: border-box; display: flex;
display: flex; align-items: flex-start;
align-items: flex-start; background: #fff;
background: #fff; margin-bottom: 18rpx;
margin-bottom: 18rpx; margin-top: 18rpx;
margin-top: 18rpx;
image {
image { width: 54rpx;
width: 54rpx; height: 54rpx;
height: 54rpx; border-radius: 50%;
border-radius: 50%; }
}
.balances-info {
.balances-info { flex: 1;
flex: 1; margin-left: 16rpx;
margin-left: 16rpx; display: flex;
display: flex; flex-direction: column;
flex-direction: column;
text {
text { line-height: 1;
line-height: 1;
&:last-child {
&:last-child { font-size: $font-size-base;
font-size: $font-size-base; }
}
&:nth-child(2) {
&:nth-child(2) { margin-top: 18rpx;
margin-top: 18rpx; font-size: $font-size-tag;
font-size: $font-size-tag; color: $color-tip;
color: $color-tip; }
}
&:nth-child(3) {
&:nth-child(3) { font-size: $font-size-tag;
font-size: $font-size-tag; margin-top: 19rpx;
margin-top: 19rpx; color: $color-tip;
color: $color-tip; }
} }
} }
}
.balances-num {
.balances-num { text {
text { line-height: 1;
line-height: 1; font-size: $font-size-toolbar;
font-size: $font-size-toolbar; color: #000;
color: #000; }
} }
} }
} </style>
</style>

View File

@@ -1,5 +1,4 @@
<template> <template>
<page-meta :page-style="themeColor"></page-meta>
<view :style="themeColor"> <view :style="themeColor">
<mescroll-uni ref="mescroll" @getData="getData" top="0" class="member-point" :size="8" v-if="storeToken"> <mescroll-uni ref="mescroll" @getData="getData" top="0" class="member-point" :size="8" v-if="storeToken">
<block slot="list"> <block slot="list">

View File

@@ -1,6 +1,5 @@
<template> <template>
<page-meta :page-style="themeColor"></page-meta> <view class="content" :style="themeColor">
<view class="content">
<mescroll-uni ref="mescroll" @getData="getGoodsList"> <mescroll-uni ref="mescroll" @getData="getGoodsList">
<block slot="list"> <block slot="list">
<view class="goods-list" :style="{ backgroundImage: 'url(' + $util.img('public/uniapp/fenxiao/promote/promote_bg.png') + ')' }"> <view class="goods-list" :style="{ backgroundImage: 'url(' + $util.img('public/uniapp/fenxiao/promote/promote_bg.png') + ')' }">

File diff suppressed because it is too large Load Diff

View File

@@ -1,320 +1,319 @@
<template> <template>
<page-meta :page-style="themeColor"></page-meta> <view class="container" :style="themeColor">
<view class="container"> <view class="level-top">
<view class="level-top"> <image :src="$util.img('public/uniapp/level/level-top-bg.png')"></image>
<image :src="$util.img('public/uniapp/level/level-top-bg.png')"></image> </view>
</view>
<swiper :autoplay="false" :duration="500" class="level-swiper" previous-margin="50rpx" next-margin="50rpx" @change="swiperChange" :current="curr">
<swiper :autoplay="false" :duration="500" class="level-swiper" previous-margin="50rpx" next-margin="50rpx" @change="swiperChange" :current="curr"> <swiper-item v-for="(item, index) in levelList" :key="index">
<swiper-item v-for="(item, index) in levelList" :key="index"> <view class="level-item" :class="{'curr': index == curr}">
<view class="level-item" :class="{'curr': index == curr}"> <view class="level-wrap">
<view class="level-wrap"> <view class="member-info">
<view class="member-info"> <view class="head-img">
<view class="head-img"> <image :src="fenxiaoInfo.headimg ? $util.img(fenxiaoInfo.headimg) : $util.getDefaultImage().head" @error="fenxiaoInfo.headimg = $util.getDefaultImage().head" mode="aspectFill"/>
<image :src="fenxiaoInfo.headimg ? $util.img(fenxiaoInfo.headimg) : $util.getDefaultImage().head" @error="fenxiaoInfo.headimg = $util.getDefaultImage().head" mode="aspectFill"/> </view>
</view> <view class="nickname">{{ fenxiaoInfo.nickname }}</view>
<view class="nickname">{{ fenxiaoInfo.nickname }}</view> <view class="level-name">{{ item.level_name }}</view>
<view class="level-name">{{ item.level_name }}</view> </view>
</view> <view class="level-rate">
<view class="level-rate"> <view class="rate-item" v-if="config.level > 0">
<view class="rate-item" v-if="config.level > 0"> <view class="title">一级分佣比率</view>
<view class="title">一级分佣比率</view> <view class="rate">{{ item.one_rate }}<text class="percentage">%</text></view>
<view class="rate">{{ item.one_rate }}<text class="percentage">%</text></view> </view>
</view> <view class="rate-item" v-if="config.level > 1">
<view class="rate-item" v-if="config.level > 1"> <view class="title">二级分佣比率</view>
<view class="title">二级分佣比率</view> <view class="rate">{{ item.two_rate }}<text class="percentage">%</text></view>
<view class="rate">{{ item.two_rate }}<text class="percentage">%</text></view> </view>
</view> <view class="rate-item" v-if="config.level > 2">
<view class="rate-item" v-if="config.level > 2"> <view class="title">三级分佣比率</view>
<view class="title">三级分佣比率</view> <view class="rate">{{ item.three_rate }}<text class="percentage">%</text></view>
<view class="rate">{{ item.three_rate }}<text class="percentage">%</text></view> </view>
</view> </view>
</view>
<view class="not-unlocked" v-if="item.level_num > fenxiaoInfo.level_num">
<view class="not-unlocked" v-if="item.level_num > fenxiaoInfo.level_num"> <text class="iconfont icon-suoding"></text>
<text class="iconfont icon-suoding"></text> </view>
</view> </view>
</view> </view>
</view> </swiper-item>
</swiper-item> </swiper>
</swiper>
<view class="level-condition" v-if="levelInfo">
<view class="level-condition" v-if="levelInfo"> <view class="condition-title">
<view class="condition-title"> <view class="title">快速升级技巧</view>
<view class="title">快速升级技巧</view> <view class="rate price-font">
<view class="rate price-font"> <text class="complete">{{ levelInfo.complete > levelInfo.task_num ? levelInfo.task_num : levelInfo.complete }}</text>
<text class="complete">{{ levelInfo.complete > levelInfo.task_num ? levelInfo.task_num : levelInfo.complete }}</text> <text class="num">/{{ levelInfo.task_num }}</text>
<text class="num">/{{ levelInfo.task_num }}</text> </view>
</view> </view>
</view> <view class="task">
<view class="task"> <view class="task-item" v-for="(item, index) in levelInfo.task" :key="index">
<view class="task-item" v-for="(item, index) in levelInfo.task" :key="index"> <view class="flex-box">
<view class="flex-box"> <view class="title">
<view class="title"> {{item.title}}
{{item.title}} <text class="iconfont icon-wenxiao" @click="openTips(item)"></text>
<text class="iconfont icon-wenxiao" @click="openTips(item)"></text> </view>
</view> <view class="status" :class="{'complete': item.progress == 100}">
<view class="status" :class="{'complete': item.progress == 100}"> {{ item.progress == 100 ? '已完成' : '未完成' }}</view>
{{ item.progress == 100 ? '已完成' : '未完成' }}</view> </view>
</view> <view class="progress">
<view class="progress"> <progress :percent="item.progress" activeColor="#E7B667" stroke-width="4" />
<progress :percent="item.progress" activeColor="#E7B667" stroke-width="4" /> </view>
</view> <view class="flex-box">
<view class="flex-box"> <view class="desc">{{item.desc}}</view>
<view class="desc">{{item.desc}}</view> <view class="rate price-font">
<view class="rate price-font"> <text class="complete">{{ item.value }}</text>
<text class="complete">{{ item.value }}</text> <text class="num">/{{ item.condition }}</text>
<text class="num">/{{ item.condition }}</text> </view>
</view> </view>
</view> </view>
</view> </view>
</view> </view>
</view>
<uni-popup type="bottom" ref="tips">
<uni-popup type="bottom" ref="tips"> <view class="popup">
<view class="popup"> <view class="popup-header">
<view class="popup-header"> <text class="tit">提示</text>
<text class="tit">提示</text> <text class="iconfont icon-close" @click="$refs.tips.close()"></text>
<text class="iconfont icon-close" @click="$refs.tips.close()"></text> </view>
</view> <view class="popup-body">
<view class="popup-body"> <view>{{ tips }}</view>
<view>{{ tips }}</view> <view v-if="levelInfo">{{ levelInfo.upgrade_type == 1 ? '满足任意一条件即可升级' : '满足全部条件才能进行升级' }}</view>
<view v-if="levelInfo">{{ levelInfo.upgrade_type == 1 ? '满足任意一条件即可升级' : '满足全部条件才能进行升级' }}</view> </view>
</view> </view>
</view> </uni-popup>
</uni-popup>
<ns-goods-recommend route="fenxiao_level"></ns-goods-recommend>
<ns-goods-recommend route="fenxiao_level"></ns-goods-recommend> <loading-cover ref="loadingCover"></loading-cover>
<loading-cover ref="loadingCover"></loading-cover> </view>
</view> </template>
</template>
<script>
<script> import fenxiaoWords from 'common/js/fenxiao-words.js';
import fenxiaoWords from 'common/js/fenxiao-words.js'; export default {
export default { data() {
data() { return {
return { fenxiaoInfo: {
fenxiaoInfo: { condition: {
condition: { last_level: null
last_level: null }
} },
}, config: {},
config: {}, levelList: [],
levelList: [], curr: 0,
curr: 0, tips: ''
tips: '' };
}; },
}, mixins: [fenxiaoWords],
mixins: [fenxiaoWords], computed: {
computed: { levelInfo() {
levelInfo() { if (this.levelList.length) {
if (this.levelList.length) { let level = this.levelList[this.curr];
let level = this.levelList[this.curr]; level.task = [];
level.task = []; level.complete = 0;
level.complete = 0;
if (level.one_fenxiao_order_num > 0) {
if (level.one_fenxiao_order_num > 0) { let task = {
let task = { title: '下级消费',
title: '下级消费', desc: '下级消费单数满' + level.one_fenxiao_order_num + '单',
desc: '下级消费单数满' + level.one_fenxiao_order_num + '单', tips: '分销商自己购买和自己推荐的直属会员购买的订单次数达到'+ level.one_fenxiao_order_num + '单',
tips: '分销商自己购买和自己推荐的直属会员购买的订单次数达到'+ level.one_fenxiao_order_num + '单', condition: level.one_fenxiao_order_num,
condition: level.one_fenxiao_order_num, value: this.fenxiaoInfo.one_fenxiao_order_num,
value: this.fenxiaoInfo.one_fenxiao_order_num, progress: parseFloat(this.fenxiaoInfo.one_fenxiao_order_num) > parseFloat(level.one_fenxiao_order_num) ? 100 : (parseFloat(this.fenxiaoInfo.one_fenxiao_order_num) / parseFloat(level.one_fenxiao_order_num) * 100).toFixed(2)
progress: parseFloat(this.fenxiaoInfo.one_fenxiao_order_num) > parseFloat(level.one_fenxiao_order_num) ? 100 : (parseFloat(this.fenxiaoInfo.one_fenxiao_order_num) / parseFloat(level.one_fenxiao_order_num) * 100).toFixed(2) }
} if (task.progress == 100) level.complete += 1;
if (task.progress == 100) level.complete += 1; level.task.push(task);
level.task.push(task); }
} if (level.one_fenxiao_total_order > 0) {
if (level.one_fenxiao_total_order > 0) { let task = {
let task = { title: '下级消费',
title: '下级消费', desc: '下级消费金额满' + this.moneyFormat(level.one_fenxiao_total_order) + '元',
desc: '下级消费金额满' + this.moneyFormat(level.one_fenxiao_total_order) + '元', tips: '分销商自己购买和推荐的直属会员购买的订单的总额达到'+ this.moneyFormat(level.one_fenxiao_total_order) + '元',
tips: '分销商自己购买和推荐的直属会员购买的订单的总额达到'+ this.moneyFormat(level.one_fenxiao_total_order) + '元', condition: this.moneyFormat(level.one_fenxiao_total_order),
condition: this.moneyFormat(level.one_fenxiao_total_order), value: this.fenxiaoInfo.one_fenxiao_total_order,
value: this.fenxiaoInfo.one_fenxiao_total_order, progress: parseFloat(this.fenxiaoInfo.one_fenxiao_total_order) > parseFloat(level.one_fenxiao_total_order) ? 100 : (parseFloat(this.fenxiaoInfo.one_fenxiao_total_order) / parseFloat(level.one_fenxiao_total_order) * 100)
progress: parseFloat(this.fenxiaoInfo.one_fenxiao_total_order) > parseFloat(level.one_fenxiao_total_order) ? 100 : (parseFloat(this.fenxiaoInfo.one_fenxiao_total_order) / parseFloat(level.one_fenxiao_total_order) * 100) .toFixed(2)
.toFixed(2) }
} if (task.progress == 100) level.complete += 1;
if (task.progress == 100) level.complete += 1; level.task.push(task);
level.task.push(task); }
} if (level.one_fenxiao_order_money > 0) {
if (level.one_fenxiao_order_money > 0) { let task = {
let task = { title: '下级消费',
title: '下级消费', desc: '下级消费产生佣金总额满' + this.moneyFormat(level.one_fenxiao_order_money) + '元',
desc: '下级消费产生佣金总额' + this.moneyFormat(level.one_fenxiao_order_money) + '元', tips: '分销商自己购买和自己推荐的直属会员购买的订单佣金总额达到'+ this.moneyFormat(level.one_fenxiao_order_money) + '元',
tips: '分销商自己购买和自己推荐的直属会员购买的订单佣金总额达到'+ this.moneyFormat(level.one_fenxiao_order_money) + '元', condition: this.moneyFormat(level.one_fenxiao_order_money),
condition: this.moneyFormat(level.one_fenxiao_order_money), value: this.fenxiaoInfo.one_fenxiao_order_money,
value: this.fenxiaoInfo.one_fenxiao_order_money, progress: parseFloat(this.fenxiaoInfo.one_fenxiao_order_money) > parseFloat(level.one_fenxiao_order_money) ? 100 : (parseFloat(this.fenxiaoInfo.one_fenxiao_order_money) / parseFloat(level.one_fenxiao_order_money) * 100)
progress: parseFloat(this.fenxiaoInfo.one_fenxiao_order_money) > parseFloat(level.one_fenxiao_order_money) ? 100 : (parseFloat(this.fenxiaoInfo.one_fenxiao_order_money) / parseFloat(level.one_fenxiao_order_money) * 100) .toFixed(2)
.toFixed(2) }
} if (task.progress == 100) level.complete += 1;
if (task.progress == 100) level.complete += 1; level.task.push(task);
level.task.push(task); }
} if (level.order_num > 0) {
if (level.order_num > 0) { let task = {
let task = { title: '自身消费',
title: '自身消费', desc: '自身消费单数满' + level.order_num + '单',
desc: '自身消费单数满' + level.order_num + '单', tips: '分销商自己购买的订单次数达到'+ level.order_num + '单',
tips: '分销商自己购买的订单次数达到'+ level.order_num + '单', condition: level.order_num,
condition: level.order_num, value: this.fenxiaoInfo.order_num,
value: this.fenxiaoInfo.order_num, progress: parseFloat(this.fenxiaoInfo.order_num) > parseFloat(level.order_num) ? 100 : (parseFloat(this.fenxiaoInfo.order_num) / parseFloat(level.order_num) * 100).toFixed(2)
progress: parseFloat(this.fenxiaoInfo.order_num) > parseFloat(level.order_num) ? 100 : (parseFloat(this.fenxiaoInfo.order_num) / parseFloat(level.order_num) * 100).toFixed(2) }
} if (task.progress == 100) level.complete += 1;
if (task.progress == 100) level.complete += 1; level.task.push(task);
level.task.push(task); }
} if (level.order_money > 0) {
if (level.order_money > 0) { let task = {
let task = { title: '自身消费',
title: '自身消费', desc: '自身消费金额满' + this.moneyFormat(level.order_money) + '元',
desc: '自身消费金额满' + this.moneyFormat(level.order_money) + '元', tips: '分销商自己购买的订单总额满'+ this.moneyFormat(level.order_money) + '元',
tips: '分销商自己购买的订单总额满足'+ this.moneyFormat(level.order_money) + '元', condition: this.moneyFormat(level.order_money),
condition: this.moneyFormat(level.order_money), value: this.fenxiaoInfo.order_money,
value: this.fenxiaoInfo.order_money, progress: parseFloat(this.fenxiaoInfo.order_money) > parseFloat(level.order_money) ? 100 : (parseFloat(this.fenxiaoInfo.order_money) / parseFloat(level.order_money) * 100).toFixed(2)
progress: parseFloat(this.fenxiaoInfo.order_money) > parseFloat(level.order_money) ? 100 : (parseFloat(this.fenxiaoInfo.order_money) / parseFloat(level.order_money) * 100).toFixed(2) }
} if (task.progress == 100) level.complete += 1;
if (task.progress == 100) level.complete += 1; level.task.push(task);
level.task.push(task); }
} if (level.one_child_num > 0) {
if (level.one_child_num > 0) { let task = {
let task = { title: '邀请好友',
title: '邀请好友', desc: '邀请好友人数达到' + level.one_child_num + '人',
desc: '邀请好友人数达到' + level.one_child_num + '人', tips: '分销商的直属下级会员人数达到'+level.one_child_num+'人(包含已经申请成为分销商的)',
tips: '分销商的直属下级会员人数达到'+level.one_child_num+'人(包含已经申请成为分销商的)', condition: level.one_child_num,
condition: level.one_child_num, value: this.fenxiaoInfo.one_child_num,
value: this.fenxiaoInfo.one_child_num, progress: parseFloat(this.fenxiaoInfo.one_child_num) > parseFloat(level.one_child_num) ? 100 : (parseFloat(this.fenxiaoInfo.one_child_num) / parseFloat(level.one_child_num) * 100).toFixed(2)
progress: parseFloat(this.fenxiaoInfo.one_child_num) > parseFloat(level.one_child_num) ? 100 : (parseFloat(this.fenxiaoInfo.one_child_num) / parseFloat(level.one_child_num) * 100).toFixed(2) }
} if (task.progress == 100) level.complete += 1;
if (task.progress == 100) level.complete += 1; level.task.push(task);
level.task.push(task); }
} if (level.one_child_fenxiao_num > 0) {
if (level.one_child_fenxiao_num > 0) { let task = {
let task = { title: '邀请好友',
title: '邀请好友', desc: '邀请好友成为分销商人数达到' + level.one_child_fenxiao_num + '人',
desc: '邀请好友成为分销商人数达到' + level.one_child_fenxiao_num + '人', tips: '分销商的直属下级分销商人数达到'+ level.one_child_fenxiao_num + '人',
tips: '分销商的直属下级分销商人数达到'+ level.one_child_fenxiao_num + '人', condition: level.one_child_fenxiao_num,
condition: level.one_child_fenxiao_num, value: this.fenxiaoInfo.one_child_fenxiao_num,
value: this.fenxiaoInfo.one_child_fenxiao_num, progress: parseFloat(this.fenxiaoInfo.one_child_fenxiao_num) > parseFloat(level.one_child_fenxiao_num) ? 100 : (parseFloat(this.fenxiaoInfo.one_child_fenxiao_num) / parseFloat(level.one_child_fenxiao_num) * 100).toFixed(2)
progress: parseFloat(this.fenxiaoInfo.one_child_fenxiao_num) > parseFloat(level.one_child_fenxiao_num) ? 100 : (parseFloat(this.fenxiaoInfo.one_child_fenxiao_num) / parseFloat(level.one_child_fenxiao_num) * 100).toFixed(2) }
} if (task.progress == 100) level.complete += 1;
if (task.progress == 100) level.complete += 1; level.task.push(task);
level.task.push(task); }
} level.task_num = level.upgrade_type == 1 ? 1 : level.task.length;
level.task_num = level.upgrade_type == 1 ? 1 : level.task.length; return level;
return level; }
} }
} },
}, onLoad() {},
onLoad() {}, onShow() {
onShow() { setTimeout( () => {
setTimeout( () => { if (!this.addonIsExist.fenxiao) {
if (!this.addonIsExist.fenxiao) { this.$util.showToast({
this.$util.showToast({ title: '商家未开启分销',
title: '商家未开启分销', mask: true,
mask: true, duration: 2000
duration: 2000 });
}); setTimeout(() => {
setTimeout(() => { this.$util.redirectTo('/pages/index/index');
this.$util.redirectTo('/pages/index/index'); }, 2000);
}, 2000); }
} },1000);
},1000);
if (this.fenxiaoWords && this.fenxiaoWords.fenxiao_name) this.$langConfig.title(this.fenxiaoWords.fenxiao_name + '等级');
if (this.fenxiaoWords && this.fenxiaoWords.fenxiao_name) this.$langConfig.title(this.fenxiaoWords.fenxiao_name + '等级');
if (this.storeToken) {
if (this.storeToken) { this.getFenxiaoInfo();
this.getFenxiaoInfo(); this.getBasicsConfig();
this.getBasicsConfig(); } else {
} else { this.$util.redirectTo('/pages_tool/login/login', {
this.$util.redirectTo('/pages_tool/login/login', { back: '/pages_promotion/fenxiao/level'
back: '/pages_promotion/fenxiao/level' });
}); }
} },
}, methods: {
methods: { /**
/** * 获取分销等级信息
* 获取分销等级信息 */
*/ getFenxiaoLevel() {
getFenxiaoLevel() { this.$api.sendRequest({
this.$api.sendRequest({ url: '/fenxiao/api/Level/lists',
url: '/fenxiao/api/Level/lists', success: res => {
success: res => { if (res.code == 0 && res.data) {
if (res.code == 0 && res.data) { this.levelList = res.data;
this.levelList = res.data; this.levelList.forEach((item, index) => {
this.levelList.forEach((item, index) => { if (item.level_id == this.fenxiaoInfo.level_id) this.curr = index;
if (item.level_id == this.fenxiaoInfo.level_id) this.curr = index; })
}) }
} }
} });
}); },
}, /**
/** * 获取分销商信息
* 获取分销商信息 */
*/ getFenxiaoInfo() {
getFenxiaoInfo() { this.$api.sendRequest({
this.$api.sendRequest({ url: '/fenxiao/api/fenxiao/detail',
url: '/fenxiao/api/fenxiao/detail', success: res => {
success: res => { if (this.$refs.loadingCover) this.$refs.loadingCover.hide();
if (this.$refs.loadingCover) this.$refs.loadingCover.hide(); if (res.code >= 0 && res.data) {
if (res.code >= 0 && res.data) { this.fenxiaoInfo = res.data;
this.fenxiaoInfo = res.data; this.curr = this.fenxiaoInfo.level_num;
this.curr = this.fenxiaoInfo.level_num; this.getFenxiaoLevel();
this.getFenxiaoLevel(); } else {
} else { this.$util.redirectTo('/pages_promotion/fenxiao/apply');
this.$util.redirectTo('/pages_promotion/fenxiao/apply'); }
} },
}, fail: () => {
fail: () => { if (this.$refs.loadingCover) this.$refs.loadingCover.hide();
if (this.$refs.loadingCover) this.$refs.loadingCover.hide(); }
} });
}); },
}, /**
/** * 获取分销基本配置
* 获取分销基本配置 */
*/ getBasicsConfig() {
getBasicsConfig() { this.$api.sendRequest({
this.$api.sendRequest({ url: '/fenxiao/api/config/basics',
url: '/fenxiao/api/config/basics', success: res => {
success: res => { if (res.code >= 0) {
if (res.code >= 0) { this.config = res.data;
this.config = res.data; }
} }
} });
}); },
}, swiperChange(e) {
swiperChange(e) { this.curr = e.detail.current;
this.curr = e.detail.current; },
}, moneyFormat(money) {
moneyFormat(money) { if (isNaN(parseFloat(money))) return money;
if (isNaN(parseFloat(money))) return money; return parseFloat(money).toFixed(2);
return parseFloat(money).toFixed(2); },
}, openTips(data) {
openTips(data) { this.tips = data.tips;
this.tips = data.tips; this.$refs.tips.open();
this.$refs.tips.open(); }
} }
} };
}; </script>
</script>
<style lang="scss">
<style lang="scss"> @import './public/css/level.scss';
@import './public/css/level.scss'; </style>
</style> <style scoped lang="scss">
<style scoped lang="scss"> /deep/ .uni-popup__wrapper.uni-custom .uni-popup__wrapper-box {
/deep/ .uni-popup__wrapper.uni-custom .uni-popup__wrapper-box { background: none;
background: none; max-height: unset !important;
max-height: unset !important; overflow-y: hidden !important;
overflow-y: hidden !important; }
}
/deep/ .uni-popup__wrapper {
/deep/ .uni-popup__wrapper { border-radius: 20rpx 20rpx 0 0;
border-radius: 20rpx 20rpx 0 0; }
}
/deep/ .uni-popup {
/deep/ .uni-popup { z-index: 8;
z-index: 8; }
}
/deep/ .sku-layer .uni-popup__wrapper.uni-custom .uni-popup__wrapper-box {
/deep/ .sku-layer .uni-popup__wrapper.uni-custom .uni-popup__wrapper-box { max-height: unset !important;
max-height: unset !important; }
}
</style> </style>

View File

@@ -1,5 +1,4 @@
<template> <template>
<page-meta :page-style="themeColor"></page-meta>
<view :style="themeColor"> <view :style="themeColor">
<view class="withdraw-cate"> <view class="withdraw-cate">
<block v-for="(item, index) in category" :key="index"> <block v-for="(item, index) in category" :key="index">

View File

@@ -1,5 +1,4 @@
<template> <template>
<page-meta :page-style="themeColor"></page-meta>
<view :style="themeColor"> <view :style="themeColor">
<view class="order-detail"> <view class="order-detail">
<view class="order-detail-box"> <view class="order-detail-box">

View File

@@ -1,363 +1,362 @@
<template> <template>
<page-meta :page-style="themeColor"></page-meta> <view class="fenxiao-promote" :style="themeColor + ';' + { backgroundImage: 'url(' + $util.img('public/uniapp/fenxiao/promote/promote_bg.png') + ')' }">
<view class="fenxiao-promote" :style="{ backgroundImage: 'url(' + $util.img('public/uniapp/fenxiao/promote/promote_bg.png') + ')' }"> <view class="my-earnings">
<view class="my-earnings"> <view class="earnings-head-wrap">
<view class="earnings-head-wrap"> <view class="earnings-head">
<view class="earnings-head"> <image class="name" :src="$util.img('public/uniapp/fenxiao/promote/my_earnings.png')" mode="aspectFit"></image>
<image class="name" :src="$util.img('public/uniapp/fenxiao/promote/my_earnings.png')" mode="aspectFit"></image> <image class="money-bg" :src="$util.img('public/uniapp/fenxiao/promote/money.png')" mode="aspectFill"></image>
<image class="money-bg" :src="$util.img('public/uniapp/fenxiao/promote/money.png')" mode="aspectFill"></image> <view class="content">
<view class="content"> 累计收益
累计收益 <text class="money-text">{{ detailData.total_commission }}</text>
<text class="money-text">{{ detailData.total_commission }}</text>
</view>
</view> </view>
</view> </view>
</view> <view class="earnings-body">
<view class="earnings-body"> <view class="earnings-tab">
<view class="earnings-tab"> <text :class="{ active: tabIndex == 0 }" @click="tabCut(0)">已邀请好友</text>
<text :class="{ active: tabIndex == 0 }" @click="tabCut(0)">邀请好友</text> <text :class="{ active: tabIndex == 1 }" @click="tabCut(1)">下单好友</text>
<text :class="{ active: tabIndex == 1 }" @click="tabCut(1)">已下单好友</text> </view>
</view> <scroll-view scroll-y="true" class="earnings-content-wrap" @scrolltolower="getTeam()">
<scroll-view scroll-y="true" class="earnings-content-wrap" @scrolltolower="getTeam()"> <view class="earnings-list" v-if="promote.list.length">
<view class="earnings-list" v-if="promote.list.length"> <view class="earnings-item" v-for="(item, index) in promote.list" :key="index">
<view class="earnings-item" v-for="(item, index) in promote.list" :key="index"> <image
<image class="item-img"
class="item-img" :src="item.headimg ? $util.img(item.headimg) : $util.getDefaultImage().head"
:src="item.headimg ? $util.img(item.headimg) : $util.getDefaultImage().head" @error="item.headimg = $util.getDefaultImage().head"
@error="item.headimg = $util.getDefaultImage().head" mode="aspectFill"
mode="aspectFill" ></image>
></image> <view class="item-content">
<view class="item-content"> <view class="item-name multi-hidden">{{ item.nickname }}</view>
<view class="item-name multi-hidden">{{ item.nickname }}</view> </view>
</view> </view>
</view> </view>
</view> <view class="earnings-empty" v-else>暂无已邀请好友快去邀请吧</view>
<view class="earnings-empty" v-else>暂无已邀请好友快去邀请吧</view> </scroll-view>
</scroll-view> </view>
</view> </view>
</view> <view class="activity-rules">
<view class="activity-rules"> <image class="rules-name" :src="$util.img('public/uniapp/fenxiao/promote/activity_rules.png')" mode="aspectFit"></image>
<image class="rules-name" :src="$util.img('public/uniapp/fenxiao/promote/activity_rules.png')" mode="aspectFit"></image> <view class="content" v-if="promoteContent.content"><rich-text :nodes="promoteContent.content"></rich-text></view>
<view class="content" v-if="promoteContent.content"><rich-text :nodes="promoteContent.content"></rich-text></view> <view class="rules-empty" v-else>暂无活动规则</view>
<view class="rules-empty" v-else>暂无活动规则</view> </view>
</view> <view class="active-btn"><button type="primary" @click="toPoster()">邀请好友</button></view>
<view class="active-btn"><button type="primary" @click="toPoster()">邀请好友</button></view> <ns-copyright></ns-copyright>
<ns-copyright></ns-copyright> <ns-login ref="login"></ns-login>
<ns-login ref="login"></ns-login> <loading-cover ref="loadingCover"></loading-cover>
<loading-cover ref="loadingCover"></loading-cover>
<!-- #ifdef MP-WEIXIN -->
<!-- #ifdef MP-WEIXIN --> <!-- 小程序隐私协议 -->
<!-- 小程序隐私协议 --> <privacy-popup ref="privacyPopup"></privacy-popup>
<privacy-popup ref="privacyPopup"></privacy-popup> <!-- #endif -->
<!-- #endif --> </view>
</view> </template>
</template>
<script>
<script> import htmlParser from '@/common/js/html-parser';
import htmlParser from '@/common/js/html-parser'; export default {
export default { data() {
data() { return {
return { tabIndex: 0,
tabIndex: 0, promoteContent: {},
promoteContent: {}, promote: {
promote: { page: 0,
page: 0, page_size: 5,
page_size: 5, page_count: 0,
page_count: 0, list: []
list: [] },
}, isPay: 0,
isPay: 0, detailData: {},
detailData: {}, templateId: '',
templateId: '', poster:'',
poster:'', };
}; },
}, onShow() {
onShow() { setTimeout( () => {
setTimeout( () => { if (!this.addonIsExist.fenxiao) {
if (!this.addonIsExist.fenxiao) { this.$util.showToast({
this.$util.showToast({ title: '商家未开启分销',
title: '商家未开启分销', mask: true,
mask: true, duration: 2000
duration: 2000 });
}); setTimeout(() => {
setTimeout(() => { this.$util.redirectTo('/pages/index/index');
this.$util.redirectTo('/pages/index/index'); }, 2000);
}, 2000); }
} },1000);
},1000);
if (this.storeToken) {
if (this.storeToken) { this.getTeam();
this.getTeam(); this.getPromoteRule();
this.getPromoteRule(); this.getFenxiaoDetail();
this.getFenxiaoDetail(); } else {
} else { this.$nextTick(() => {
this.$nextTick(() => { this.$refs.login.open('/pages_promotion/fenxiao/promote_code');
this.$refs.login.open('/pages_promotion/fenxiao/promote_code'); });
}); }
} },
}, onLoad() {
onLoad() { this.getTemplateId();
this.getTemplateId(); this.getPoster();
this.getPoster(); },
}, methods: {
methods: { toPoster(){
toPoster(){ this.$util.redirectTo('/pages_promotion/fenxiao/promote_code', { poster: this.poster,templateId:this.templateId })
this.$util.redirectTo('/pages_promotion/fenxiao/promote_code', { poster: this.poster,templateId:this.templateId }) },
}, tabCut(index) {
tabCut(index) { this.tabIndex = index;
this.tabIndex = index; this.isPay = index;
this.isPay = index;
this.promote.page_count = 0;
this.promote.page_count = 0; this.promote.page = 0;
this.promote.page = 0; this.promote.page_size = 5;
this.promote.page_size = 5; this.getTeam();
this.getTeam(); },
}, getTeam() {
getTeam() { if (this.promote.page_count > 0 && this.promote.page == this.promote.page_count) return;
if (this.promote.page_count > 0 && this.promote.page == this.promote.page_count) return; this.promote.page++;
this.promote.page++; this.$api.sendRequest({
this.$api.sendRequest({ url: '/fenxiao/api/fenxiao/team',
url: '/fenxiao/api/fenxiao/team', data: {
data: { page: this.promote.page,
page: this.promote.page, page_size: this.promote.page_size,
page_size: this.promote.page_size, is_pay: this.isPay,
is_pay: this.isPay, level: 1
level: 1 },
}, success: res => {
success: res => { if (this.$refs.loadingCover) this.$refs.loadingCover.hide();
if (this.$refs.loadingCover) this.$refs.loadingCover.hide(); if (res.code >= 0) {
if (res.code >= 0) { if (this.promote.page == 1) this.promote.list = [];
if (this.promote.page == 1) this.promote.list = []; this.promote.page_count = res.data.page_count;
this.promote.page_count = res.data.page_count; this.promote.list = this.promote.list.concat(res.data.list);
this.promote.list = this.promote.list.concat(res.data.list); } else {
} else { this.$util.showToast({
this.$util.showToast({ title: res.message
title: res.message });
}); }
} },
}, fail: res => {
fail: res => { if (this.$refs.loadingCover) this.$refs.loadingCover.hide();
if (this.$refs.loadingCover) this.$refs.loadingCover.hide(); }
} });
}); },
}, // 获取分销商信息
// 获取分销商信息 getFenxiaoDetail() {
getFenxiaoDetail() { this.$api.sendRequest({
this.$api.sendRequest({ url: '/fenxiao/api/fenxiao/detail',
url: '/fenxiao/api/fenxiao/detail', success: res => {
success: res => { if (res.data) {
if (res.data) { this.detailData = res.data;
this.detailData = res.data; } else {
} else { this.$util.showToast({
this.$util.showToast({ title: res.message
title: res.message });
}); }
} }
} });
}); },
}, // 获取富文本
// 获取富文本 getPromoteRule() {
getPromoteRule() { this.$api.sendRequest({
this.$api.sendRequest({ url: '/fenxiao/api/config/promoterule',
url: '/fenxiao/api/config/promoterule', success: res => {
success: res => { if (res.data) {
if (res.data) { this.promoteContent = res.data;
this.promoteContent = res.data; this.promoteContent.content = res.data.content ? htmlParser(res.data.content) : '';
this.promoteContent.content = res.data.content ? htmlParser(res.data.content) : ''; } else {
} else { this.$util.showToast({
this.$util.showToast({ title: res.message
title: res.message });
}); }
} },
}, fail: res => {
fail: res => { if (this.$refs.loadingCover) this.$refs.loadingCover.hide();
if (this.$refs.loadingCover) this.$refs.loadingCover.hide(); }
} });
}); },
}, /**
/** * 获取分享海报
* 获取分享海报 */
*/ getPoster() {
getPoster() { this.$api.sendRequest({
this.$api.sendRequest({ url: '/fenxiao/api/fenxiao/posterList',
url: '/fenxiao/api/fenxiao/posterList', success: res => {
success: res => { if (res.code >= 0) {
if (res.code >= 0) { this.poster = res.data.toString();
this.poster = res.data.toString(); this.poster = encodeURIComponent(this.poster);
this.poster = encodeURIComponent(this.poster); }
} }
} });
}); },
}, /**
/** * 获取分享海报id
* 获取分享海报id */
*/ getTemplateId() {
getTemplateId() { this.$api.sendRequest({
this.$api.sendRequest({ url: '/fenxiao/api/fenxiao/posterTemplateIds',
url: '/fenxiao/api/fenxiao/posterTemplateIds', success: res => {
success: res => { if (res.code >= 0) {
if (res.code >= 0) { this.templateId = [...res.data].join();
this.templateId = [...res.data].join(); }
} }
} });
}); }
} }
} };
}; </script>
</script>
<style lang="scss">
<style lang="scss"> .fenxiao-promote {
.fenxiao-promote { overflow: hidden;
overflow: hidden; padding: 0 30rpx 160rpx;
padding: 0 30rpx 160rpx; min-height: 100vh;
min-height: 100vh; background-color: #ff2d46;
background-color: #ff2d46; background-size: 100%;
background-size: 100%; background-repeat: no-repeat;
background-repeat: no-repeat; .my-earnings,
.my-earnings, .activity-rules {
.activity-rules { background-color: #fff;
background-color: #fff; border-radius: 30rpx;
border-radius: 30rpx; }
} .my-earnings {
.my-earnings { margin-top: 230rpx;
margin-top: 230rpx; padding-bottom: 40rpx;
padding-bottom: 40rpx; .earnings-head-wrap {
.earnings-head-wrap { background-color: #fff7f5;
background-color: #fff7f5; height: 160rpx;
height: 160rpx; border-radius: 30rpx;
border-radius: 30rpx; border-bottom-left-radius: 0;
border-bottom-left-radius: 0; border-bottom-right-radius: 0;
border-bottom-right-radius: 0; }
} .earnings-head {
.earnings-head { position: relative;
position: relative; padding-top: 60rpx;
padding-top: 60rpx; display: flex;
display: flex; align-items: center;
align-items: center; justify-content: center;
justify-content: center; .name {
.name { position: absolute;
position: absolute; width: 384rpx;
width: 384rpx; height: 74rpx;
height: 74rpx; top: -22rpx;
top: -22rpx; }
} .content {
.content { font-size: $font-size-tag;
font-size: $font-size-tag; }
} .money-bg {
.money-bg { width: 80rpx;
width: 80rpx; height: 80rpx;
height: 80rpx; }
} .money-text {
.money-text { margin: 0 6rpx;
margin: 0 6rpx; font-size: 40rpx;
font-size: 40rpx; line-height: 1;
line-height: 1; }
} }
} .earnings-body {
.earnings-body { padding: 0 30rpx;
padding: 0 30rpx; .earnings-tab {
.earnings-tab { display: flex;
display: flex; justify-content: space-around;
justify-content: space-around; align-items: center;
align-items: center; height: 100rpx;
height: 100rpx; font-size: 30rpx;
font-size: 30rpx; color: #e93224;
color: #e93224; margin-bottom: 10rpx;
margin-bottom: 10rpx; text.active {
text.active { position: relative;
position: relative; font-weight: bold;
font-weight: bold; &::after {
&::after { position: absolute;
position: absolute; content: '';
content: ''; height: 4rpx;
height: 4rpx; width: 86rpx;
width: 86rpx; left: 50%;
left: 50%; bottom: -4rpx;
bottom: -4rpx; transform: translateX(-50%);
transform: translateX(-50%); background-color: #e93224;
background-color: #e93224; }
} }
} }
} .earnings-content-wrap {
.earnings-content-wrap { max-height: 440rpx;
max-height: 440rpx; }
} .earnings-item {
.earnings-item { display: flex;
display: flex; align-items: center;
align-items: center; margin-bottom: 20rpx;
margin-bottom: 20rpx; &:last-child {
&:last-child { margin-bottom: 0;
margin-bottom: 0; }
} .item-img {
.item-img { width: 90rpx;
width: 90rpx; height: 90rpx;
height: 90rpx; margin-right: 20rpx;
margin-right: 20rpx; flex-shrink: 0;
flex-shrink: 0; }
} .item-time {
.item-time { font-size: $font-size-tag;
font-size: $font-size-tag; color: $color-tip;
color: $color-tip; }
} .item-name {
.item-name { line-height: 1.3;
line-height: 1.3; }
} .money {
.money { margin-left: auto;
margin-left: auto; color: #f9b124;
color: #f9b124; }
} }
} }
} .earnings-empty {
.earnings-empty { display: flex;
display: flex; align-items: center;
align-items: center; justify-content: center;
justify-content: center; height: 160rpx;
height: 160rpx; font-size: 30rpx;
font-size: 30rpx; }
} }
} .activity-rules {
.activity-rules { position: relative;
position: relative; margin-top: 60rpx;
margin-top: 60rpx; min-height: 300rpx;
min-height: 300rpx; .rules-name {
.rules-name { position: absolute;
position: absolute; width: 384rpx;
width: 384rpx; height: 74rpx;
height: 74rpx; top: -22rpx;
top: -22rpx; left: 50%;
left: 50%; transform: translateX(-50%);
transform: translateX(-50%); }
} .content {
.content { padding: 70rpx 20rpx 0;
padding: 70rpx 20rpx 0; }
} .rules-empty {
.rules-empty { padding-top: 140rpx;
padding-top: 140rpx; text-align: center;
text-align: center; font-size: 30rpx;
font-size: 30rpx; }
} }
}
.active-btn {
.active-btn { position: fixed;
position: fixed; bottom: 0;
bottom: 0; left: 0;
left: 0; right: 0;
right: 0; z-index: 5;
z-index: 5; display: flex;
display: flex; align-items: center;
align-items: center; justify-content: center;
justify-content: center; background-color: #ff2d46;
background-color: #ff2d46; height: 160rpx;
height: 160rpx; padding: 0 60rpx;
padding: 0 60rpx;
button {
button { flex: 1;
flex: 1; margin: 0;
margin: 0; border-radius: 50rpx;
border-radius: 50rpx; color: #985400;
color: #985400; background: linear-gradient(45deg, #ffe2ac 0%, #fdc174 100%);
background: linear-gradient(45deg, #ffe2ac 0%, #fdc174 100%); }
} }
} }
} </style>
</style>

View File

@@ -1,307 +1,306 @@
<template> <template>
<page-meta :page-style="themeColor"></page-meta> <view class="container" :style="themeColor">
<view class="container"> <swiper class="swiper" @change="getIndex">
<swiper class="swiper" @change="getIndex"> <swiper-item v-for="(item, index) in poster" :key="index">
<swiper-item v-for="(item, index) in poster" :key="index"> <view class="swiper-item">
<view class="swiper-item"> <view class="poster-wrap">
<view class="poster-wrap"> <image :src="$util.img(item)" mode="widthFix" :show-menu-by-longpress="true"/>
<image :src="$util.img(item)" mode="widthFix" :show-menu-by-longpress="true"/> </view>
</view> </view>
</view> </swiper-item>
</swiper-item> </swiper>
</swiper>
<!-- #ifdef H5 -->
<!-- #ifdef H5 --> <view class="tips">长按识别图中二维码</view>
<view class="tips">长按识别图中二维码</view> <!-- #endif -->
<!-- #endif -->
<!-- #ifdef MP -->
<!-- #ifdef MP --> <view class="btn color-base-bg color-base-border" @click="save">保存海报</view>
<view class="btn color-base-bg color-base-border" @click="save">保存海报</view> <!-- #endif -->
<!-- #endif -->
<uni-popup ref="popupDialog" :custom="true" :mask-click="false">
<uni-popup ref="popupDialog" :custom="true" :mask-click="false"> <view class="dialog-popup">
<view class="dialog-popup"> <view class="title">提示</view>
<view class="title">提示</view> <view class="message">您拒绝了保存图片到相册的授权请求无法保存图片到相册如需正常使用请授权之后再进行操作</view>
<view class="message">您拒绝了保存图片到相册的授权请求无法保存图片到相册如需正常使用请授权之后再进行操作</view> <view class="action-wrap">
<view class="action-wrap"> <view @click="closeDialog">取消</view>
<view @click="closeDialog">取消</view> <view>
<view> <button type="default" open-type="openSetting" @opensetting="closeDialog" hover-class="none">立即授权</button>
<button type="default" open-type="openSetting" @opensetting="closeDialog" hover-class="none">立即授权</button> </view>
</view> </view>
</view> </view>
</view> </uni-popup>
</uni-popup>
<ns-login ref="login"></ns-login>
<ns-login ref="login"></ns-login> <loading-cover ref="loadingCover"></loading-cover>
<loading-cover ref="loadingCover"></loading-cover>
<!-- #ifdef MP-WEIXIN -->
<!-- #ifdef MP-WEIXIN --> <!-- 小程序隐私协议 -->
<!-- 小程序隐私协议 --> <privacy-popup ref="privacyPopup"></privacy-popup>
<privacy-popup ref="privacyPopup"></privacy-popup> <!-- #endif -->
<!-- #endif --> </view>
</view> </template>
</template>
<script>
<script> import {
import { Weixin
Weixin } from 'common/js/wx-jssdk.js';
} from 'common/js/wx-jssdk.js'; import uniPopup from '@/components/uni-popup/uni-popup.vue';
import uniPopup from '@/components/uni-popup/uni-popup.vue';
export default {
export default { data() {
data() { return {
return { poster: [],
poster: [], fenxiaoInfo: {},
fenxiaoInfo: {}, posterIndex: 0,
posterIndex: 0, //海报模板id
//海报模板id templateId: ['default'],
templateId: ['default'], mpShareData: null //小程序分享数据
mpShareData: null //小程序分享数据 };
}; },
}, components: {
components: { uniPopup
uniPopup },
}, methods: {
methods: { /**
/** * 获取分销海报
* 获取分销海报 */
*/ getPoster(id) {
getPoster(id) { return new Promise((resolve, reject) => {
return new Promise((resolve, reject) => { this.$api.sendRequest({
this.$api.sendRequest({ url: '/fenxiao/api/fenxiao/poster',
url: '/fenxiao/api/fenxiao/poster', data: {
data: { page: '/pages/index/index',
page: '/pages/index/index', qrcode_param: JSON.stringify({}),
qrcode_param: JSON.stringify({}), template_id: id
template_id: id },
}, success: res => {
success: res => { if (this.$refs.loadingCover) this.$refs.loadingCover.hide();
if (this.$refs.loadingCover) this.$refs.loadingCover.hide(); if (res.code >= 0) {
if (res.code >= 0) { resolve(res.data.path);
resolve(res.data.path); }
} },
}, fail: res => {
fail: res => { if (this.$refs.loadingCover) this.$refs.loadingCover.hide();
if (this.$refs.loadingCover) this.$refs.loadingCover.hide(); reject();
reject(); }
} });
}); });
}); },
}, getIndex(e) {
getIndex(e) { this.posterIndex = e.detail.current;
this.posterIndex = e.detail.current; },
}, save() {
save() { // #ifdef MP
// #ifdef MP uni.downloadFile({
uni.downloadFile({ url: this.$util.img(this.poster[this.posterIndex]),
url: this.$util.img(this.poster[this.posterIndex]), success: res => {
success: res => { if (res.statusCode === 200) {
if (res.statusCode === 200) { uni.saveImageToPhotosAlbum({
uni.saveImageToPhotosAlbum({ filePath: res.tempFilePath,
filePath: res.tempFilePath, success: () => {
success: () => { this.$util.showToast({
this.$util.showToast({ title: '保存成功'
title: '保存成功' });
}); },
}, fail: res => {
fail: res => { if (res.errMsg == 'saveImageToPhotosAlbum:fail auth deny' ||
if (res.errMsg == 'saveImageToPhotosAlbum:fail auth deny' || res.errMsg == 'saveImageToPhotosAlbum:fail:auth denied') {
res.errMsg == 'saveImageToPhotosAlbum:fail:auth denied') { this.$refs.popupDialog.open();
this.$refs.popupDialog.open(); } else {
} else { this.$util.showToast({
this.$util.showToast({ title: '保存失败,请稍后重试'
title: '保存失败,请稍后重试' });
}); }
} }
} });
}); } else {
} else { this.$util.showToast({
this.$util.showToast({ title: '下载失败'
title: '下载失败' });
}); }
} },
}, fail: res => {
fail: res => { this.$util.showToast({
this.$util.showToast({ title: '下载失败'
title: '下载失败' });
}); }
} });
}); // #endif
// #endif },
}, getFenxiaoDetail() {
getFenxiaoDetail() { this.poster = [];
this.poster = []; try {
try { this.templateId.forEach((item, index) => {
this.templateId.forEach((item, index) => { this.getPoster(item).then(resolve => {
this.getPoster(item).then(resolve => { this.poster.push(resolve);
this.poster.push(resolve); if (this.$refs.loadingCover) this.$refs.loadingCover.hide();
if (this.$refs.loadingCover) this.$refs.loadingCover.hide(); }).catch(reject => {
}).catch(reject => { throw reject;
throw reject; });
}); });
}); } catch {
} catch { this.$util.showToast({
this.$util.showToast({ title: '海报生成失败'
title: '海报生成失败' });
}); }
} },
},
closeDialog() {
closeDialog() { this.$refs.popupDialog.close();
this.$refs.popupDialog.close(); }
} },
}, onLoad(option) {
onLoad(option) { setTimeout( () => {
setTimeout( () => { if (!this.addonIsExist.fenxiao) {
if (!this.addonIsExist.fenxiao) { this.$util.showToast({
this.$util.showToast({ title: '商家未开启分销',
title: '商家未开启分销', mask: true,
mask: true, duration: 2000
duration: 2000 });
}); setTimeout(() => {
setTimeout(() => { this.$util.redirectTo('/pages/index/index');
this.$util.redirectTo('/pages/index/index'); }, 2000);
}, 2000); }
} },1000);
},1000);
if (option.templateId) {
if (option.templateId) { this.templateId = option.templateId.split(',');
this.templateId = option.templateId.split(','); }
}
if (this.storeToken) {
if (this.storeToken) { if(option.poster){
if(option.poster){ this.poster = decodeURIComponent(option.poster).split(',')
this.poster = decodeURIComponent(option.poster).split(',') setTimeout(() => {
setTimeout(() => { if (this.$refs.loadingCover) this.$refs.loadingCover.hide();
if (this.$refs.loadingCover) this.$refs.loadingCover.hide(); }, 500)
}, 500) }else{
}else{ this.getFenxiaoDetail();
this.getFenxiaoDetail(); }
}
} else {
} else { this.$nextTick(() => {
this.$nextTick(() => { this.$refs.login.open('/pages_promotion/fenxiao/promote_code');
this.$refs.login.open('/pages_promotion/fenxiao/promote_code'); });
}); }
} },
}, onShow() {
onShow() { //小程序分享
//小程序分享 // #ifdef MP-WEIXIN
// #ifdef MP-WEIXIN this.$util.getMpShare().then(res => {
this.$util.getMpShare().then(res => { this.mpShareData = res;
this.mpShareData = res; });
}); // #endif
// #endif },
}, //分享给好友
//分享给好友 onShareAppMessage() {
onShareAppMessage() { return this.mpShareData.appMessage;
return this.mpShareData.appMessage; },
}, //分享到朋友圈
//分享到朋友圈 onShareTimeline() {
onShareTimeline() { return this.mpShareData.timeLine;
return this.mpShareData.timeLine; },
}, watch: {
watch: { storeToken: function(nVal, oVal) {
storeToken: function(nVal, oVal) { if (nVal) {
if (nVal) { this.getFenxiaoDetail();
this.getFenxiaoDetail(); }
} }
} }
} };
}; </script>
</script>
<style lang="scss">
<style lang="scss"> .container {
.container { width: 100vw;
width: 100vw; min-height: 100vh;
min-height: 100vh; background-color: #f5f5f5;
background-color: #f5f5f5; }
}
.poster-wrap {
.poster-wrap { padding: 40rpx 0;
padding: 40rpx 0; width: calc(100vw - 80rpx);
width: calc(100vw - 80rpx); margin: 0 40rpx;
margin: 0 40rpx; line-height: 1;
line-height: 1;
image {
image { border-radius: 20rpx;
border-radius: 20rpx; overflow: hidden;
overflow: hidden; width: 100%;
width: 100%; }
} }
}
.swiper {
.swiper { height: 1240rpx;
height: 1240rpx; }
}
.btn {
.btn { margin: 0 80rpx;
margin: 0 80rpx; margin-top: 30rpx;
margin-top: 30rpx; height: 80rpx;
height: 80rpx; line-height: 80rpx;
line-height: 80rpx; border-radius: $border-radius;
border-radius: $border-radius; color: #fff;
color: #fff; text-align: center;
text-align: center; }
}
.tips {
.tips { text-align: center;
text-align: center; font-size: $font-size-base;
font-size: $font-size-base; color: #999;
color: #999; font-weight: 600;
font-weight: 600; margin-top: 20rpx;
margin-top: 20rpx; }
}
.dialog-popup {
.dialog-popup { width: 580rpx;
width: 580rpx; background: #fff;
background: #fff; box-sizing: border-box;
box-sizing: border-box; border-radius: 10rpx;
border-radius: 10rpx; overflow: hidden;
overflow: hidden; height: initial;
height: initial;
.title {
.title { padding: 30rpx 30rpx 0 30rpx;
padding: 30rpx 30rpx 0 30rpx; text-align: center;
text-align: center; font-size: 32rpx;
font-size: 32rpx; font-weight: bold;
font-weight: bold; }
}
.message {
.message { padding: 0 30rpx;
padding: 0 30rpx; color: #666;
color: #666; text-align: center;
text-align: center; font-size: $font-size-base;
font-size: $font-size-base; line-height: 1.3;
line-height: 1.3; margin-top: 30rpx;
margin-top: 30rpx; }
}
.action-wrap {
.action-wrap { margin-top: 50rpx;
margin-top: 50rpx; height: 80rpx;
height: 80rpx; display: flex;
display: flex; border-top: 2rpx solid #eee;
border-top: 2rpx solid #eee;
&>view {
&>view { flex: 1;
flex: 1; text-align: center;
text-align: center; line-height: 80rpx;
line-height: 80rpx;
&:first-child {
&:first-child { border-right: 2rpx solid #eee;
border-right: 2rpx solid #eee; color: #999;
color: #999; }
}
button {
button { border: none;
border: none; line-height: 80rpx;
line-height: 80rpx; padding: 0;
padding: 0; margin: 0;
margin: 0; width: 100%;
width: 100%; height: 100%;
height: 100%; }
} }
} }
} }
}
</style> </style>

View File

@@ -1,416 +1,415 @@
<template> <template>
<page-meta :page-style="themeColor"></page-meta> <view class="container" :style="themeColor">
<view class="container"> <mescroll-uni ref="mescroll" @getData="getData" top="0" :size="10">
<mescroll-uni ref="mescroll" @getData="getData" top="0" :size="10"> <view slot="list">
<view slot="list"> <block v-if="list.length != 0">
<block v-if="list.length != 0"> <view class="banner" :style="{background: 'url('+ $util.img('public/uniapp/fenxiao/index/header_bg.png') +') no-repeat top left / 100% 100%'}">
<view class="banner" :style="{background: 'url('+ $util.img('public/uniapp/fenxiao/index/header_bg.png') +') no-repeat top left / 100% 100%'}"> <view class="info">
<view class="info"> <view class="info-pic">
<view class="info-pic"> <image :src="info.headimg ? $util.img(info.headimg) : $util.getDefaultImage().head" @error="info.headimg = $util.getDefaultImage().head" mode="aspectFill"/>
<image :src="info.headimg ? $util.img(info.headimg) : $util.getDefaultImage().head" @error="info.headimg = $util.getDefaultImage().head" mode="aspectFill"/> </view>
</view> <view class="member-info">
<view class="member-info"> <view class="rank-info-box">
<view class="rank-info-box"> <text class="name">{{info.nickname}}</text>
<text class="name">{{info.nickname}}</text> </view>
</view> <view class="withdrawal" @click="$util.redirectTo('/pages_promotion/fenxiao/withdraw_apply')" v-if="type == 'profit'">点击提现</view>
<view class="withdrawal" @click="$util.redirectTo('/pages_promotion/fenxiao/withdraw_apply')" v-if="type == 'profit'">点击提现</view> <view class="withdrawal" @click="$util.redirectTo('/pages_promotion/fenxiao/team')" v-if="type == 'invited_num'">我的团队</view>
<view class="withdrawal" @click="$util.redirectTo('/pages_promotion/fenxiao/team')" v-if="type == 'invited_num'">我的团队</view> </view>
</view> </view>
</view> </view>
</view>
<view class="fenxiao-team" v-if="type == 'profit'">
<view class="fenxiao-team" v-if="type == 'profit'"> <view class="fenxiao-index-other">
<view class="fenxiao-index-other"> <view class="all-money-item">
<view class="all-money-item"> <view class="img-wrap">
<view class="img-wrap"> <text class="iconfont icon-fenxiao"></text>
<text class="iconfont icon-fenxiao"></text> </view>
</view> <view class="all-money-tit-wrap">
<view class="all-money-tit-wrap"> <text class="all-money-tit">分销佣金</text>
<text class="all-money-tit">分销佣金</text> <text class="all-money-num">{{ info.today_commission}}</text>
<text class="all-money-num">{{ info.today_commission}}</text> </view>
</view> </view>
</view> </view>
</view> <view class="fenxiao-index-other">
<view class="fenxiao-index-other"> <view class="all-money-item">
<view class="all-money-item"> <view class="img-wrap">
<view class="img-wrap"> <text class="iconfont icon-baixingbeng"></text>
<text class="iconfont icon-baixingbeng"></text> </view>
</view> <view class="all-money-tit-wrap">
<view class="all-money-tit-wrap"> <text class="all-money-tit">佣金排行</text>
<text class="all-money-tit">佣金排行</text> <text class="all-money-num">您排行第{{ ranking }}</text>
<text class="all-money-num">您排行第{{ ranking }}</text> </view>
</view> </view>
</view> </view>
</view> </view>
</view> <view class="fenxiao-team" v-if="type == 'invited_num'">
<view class="fenxiao-team" v-if="type == 'invited_num'"> <view class="fenxiao-index-other">
<view class="fenxiao-index-other"> <view class="all-money-item">
<view class="all-money-item"> <view class="img-wrap">
<view class="img-wrap"> <text class="iconfont icon-huodongtuiyan"></text>
<text class="iconfont icon-huodongtuiyan"></text> </view>
</view> <view class="all-money-tit-wrap">
<view class="all-money-tit-wrap"> <text class="all-money-tit">推广人数</text>
<text class="all-money-tit">推广人数</text> <text class="all-money-num">{{ info.one_child_num}}</text>
<text class="all-money-num">{{ info.one_child_num}}</text> </view>
</view> </view>
</view> </view>
</view> <view class="fenxiao-index-other">
<view class="fenxiao-index-other"> <view class="all-money-item">
<view class="all-money-item"> <view class="img-wrap">
<view class="img-wrap"> <text class="iconfont icon-baixingbeng"></text>
<text class="iconfont icon-baixingbeng"></text> </view>
</view> <view class="all-money-tit-wrap">
<view class="all-money-tit-wrap"> <text class="all-money-tit" v-if="type == 'invited_num'">推广排行</text>
<text class="all-money-tit" v-if="type == 'invited_num'">推广排行</text> <text class="all-money-num">您排行第{{ ranking }}</text>
<text class="all-money-num">您排行第{{ ranking }}</text> </view>
</view> </view>
</view> </view>
</view> </view>
</view>
<view class="title-rakn-text" v-if="type == 'profit'">佣金排行</view>
<view class="title-rakn-text" v-if="type == 'profit'">佣金排行</view> <view class="title-rakn-text" v-if="type == 'invited_num'">推广排行</view>
<view class="title-rakn-text" v-if="type == 'invited_num'">推广排行</view>
<view class="ranking-list">
<view class="ranking-list"> <view class="ranking-item" v-for="(item, index) in list" :key="index">
<view class="ranking-item" v-for="(item, index) in list" :key="index"> <view class="ranking price-font">{{ index + 1 }}</view>
<view class="ranking price-font">{{ index + 1 }}</view> <view class="content">
<view class="content"> <view class="head-img">
<view class="head-img"> <image :src="item.headimg ? $util.img(item.headimg) : $util.getDefaultImage().head" @error="item.headimg = $util.getDefaultImage().head" mode="aspectFill"/>
<image :src="item.headimg ? $util.img(item.headimg) : $util.getDefaultImage().head" @error="item.headimg = $util.getDefaultImage().head" mode="aspectFill"/> </view>
</view> <view class="nickname">{{ item.nickname }}</view>
<view class="nickname">{{ item.nickname }}</view> </view>
</view> <view class="price-font price-style" v-if="type == 'profit'">
<view class="price-font price-style" v-if="type == 'profit'"> {{ item.total_commission|moneyFormat }}</view>
{{ item.total_commission|moneyFormat }}</view> <view class="price-font price-style" v-if="type == 'invited_num'">{{ item.child_num }}
<view class="price-font price-style" v-if="type == 'invited_num'">{{ item.child_num }} </view>
</view> </view>
</view> </view>
</view> </block>
</block> <block v-if="list.length == 0 && emptyShow">
<block v-if="list.length == 0 && emptyShow"> <ns-empty text="暂无数据" :isIndex="false"></ns-empty>
<ns-empty text="暂无数据" :isIndex="false"></ns-empty> </block>
</block> </view>
</view> </mescroll-uni>
</mescroll-uni>
<loading-cover ref="loadingCover"></loading-cover>
<loading-cover ref="loadingCover"></loading-cover> </view>
</view> </template>
</template>
<script>
<script> export default {
export default { data() {
data() { return {
return { list: [],
list: [], emptyShow: false,
emptyShow: false, type: '',
type: '', ranking: 0,
ranking: 0, info: {}
info: {} }
} },
}, onLoad(data) {
onLoad(data) { this.type = data.type;
this.type = data.type; this.getRanking();
this.getRanking(); this.getFenxiaoDetail();
this.getFenxiaoDetail(); },
}, methods: {
methods: { getData(mescroll) {
getData(mescroll) { this.emptyShow = false;
this.emptyShow = false; if (mescroll.num == 1) {
if (mescroll.num == 1) { this.list = [];
this.list = []; }
} this.$api.sendRequest({
this.$api.sendRequest({ url: '/fenxiao/api/fenxiao/rankinglist',
url: '/fenxiao/api/fenxiao/rankinglist', data: {
data: { page_size: mescroll.size,
page_size: mescroll.size, page: mescroll.num,
page: mescroll.num, type: this.type
type: this.type },
}, success: res => {
success: res => { this.emptyShow = true;
this.emptyShow = true; let newArr = [];
let newArr = []; let msg = res.message;
let msg = res.message; if (res.code == 0 && res.data) {
if (res.code == 0 && res.data) { newArr = res.data.list;
newArr = res.data.list; } else {
} else { this.$util.showToast({
this.$util.showToast({ title: msg
title: msg });
}); }
} mescroll.endSuccess(newArr.length);
mescroll.endSuccess(newArr.length); //设置列表数据
//设置列表数据 if (mescroll.num == 1) this.list = []; //如果是第一页需手动制空列表
if (mescroll.num == 1) this.list = []; //如果是第一页需手动制空列表 this.list = this.list.concat(newArr); //追加新数据
this.list = this.list.concat(newArr); //追加新数据 if (this.$refs.loadingCover) this.$refs.loadingCover.hide();
if (this.$refs.loadingCover) this.$refs.loadingCover.hide(); },
}, fail: res => {
fail: res => { mescroll.endErr();
mescroll.endErr(); if (this.$refs.loadingCover) this.$refs.loadingCover.hide();
if (this.$refs.loadingCover) this.$refs.loadingCover.hide(); }
} });
}); },
}, getRanking() {
getRanking() { this.$api.sendRequest({
this.$api.sendRequest({ url: '/fenxiao/api/fenxiao/ranking',
url: '/fenxiao/api/fenxiao/ranking', data: {
data: { type: this.type
type: this.type },
}, success: res => {
success: res => { if (res.code >= 0) {
if (res.code >= 0) { this.ranking = res.data;
this.ranking = res.data; }
} }
} })
}) },
}, getFenxiaoDetail() {
getFenxiaoDetail() { this.$api.sendRequest({
this.$api.sendRequest({ url: '/fenxiao/api/fenxiao/detail',
url: '/fenxiao/api/fenxiao/detail', success: res => {
success: res => { if (res.data) {
if (res.data) { this.info = res.data;
this.info = res.data; }
} },
}, });
}); },
}, }
} }
} </script>
</script>
<style lang="scss">
<style lang="scss"> .container {
.container { width: 100vw;
width: 100vw; height: 100vh;
height: 100vh; }
}
.banner {
.banner { width: 100%;
width: 100%; height: 200rpx;
height: 200rpx; // background: $base-color;
// background: $base-color; }
}
.info {
.info { width: 100%;
width: 100%; display: flex;
display: flex; justify-content: space-between;
justify-content: space-between; align-items: center;
align-items: center; padding: 50rpx 80rpx 0;
padding: 50rpx 80rpx 0; box-sizing: border-box;
box-sizing: border-box;
.info-pic {
.info-pic { width: 100rpx;
width: 100rpx; height: 100rpx;
height: 100rpx; border-radius: 50%;
border-radius: 50%; border: 4rpx solid #fff;
border: 4rpx solid #fff; position: relative;
position: relative;
image {
image { width: 100%;
width: 100%; height: 100%;
height: 100%; border-radius: 50%;
border-radius: 50%; }
}
}
}
.member-info {
.member-info { flex: 1;
flex: 1; width: 0;
width: 0; margin-left: 32rpx;
margin-left: 32rpx; display: flex;
display: flex;
view {
view { color: #fff;
color: #fff; }
}
.rank-info-box {
.rank-info-box { line-height: 1;
line-height: 1; flex: 1;
flex: 1; }
}
.name {
.name { font-size: 32rpx;
font-size: 32rpx; font-weight: 600;
font-weight: 600; color: #FFFFFF;
color: #FFFFFF; }
}
.withdrawal {
.withdrawal { border-radius: 4px;
border-radius: 4px; line-height: 23px;
line-height: 23px; margin: auto;
margin: auto; text-align: center;
text-align: center; font-size: 11px;
font-size: 11px; }
}
}
}
}
}
.fenxiao-team {
.fenxiao-team { display: flex;
display: flex; width: 100%;
width: 100%; margin-top: 22rpx;
margin-top: 22rpx;
.fenxiao-index-other {
.fenxiao-index-other { margin: 0 24rpx 20rpx 24rpx;
margin: 0 24rpx 20rpx 24rpx; border-radius: 16rpx;
border-radius: 16rpx; background-color: #ffffff;
background-color: #ffffff; padding: 30rpx 0;
padding: 30rpx 0; flex: 1;
flex: 1;
&:last-child {
&:last-child { margin-left: 0;
margin-left: 0; }
}
.all-money-item {
.all-money-item { margin: 0 30rpx;
margin: 0 30rpx; display: flex;
display: flex; font-size: $font-size-tag;
font-size: $font-size-tag; align-items: center;
align-items: center;
.img-wrap {
.img-wrap { display: flex;
display: flex; justify-content: center;
justify-content: center; align-items: center;
align-items: center; width: 70rpx;
width: 70rpx; height: 70rpx;
height: 70rpx;
image {
image { width: 100%;
width: 100%; height: 100%;
height: 100%; }
} }
}
.all-money-tit-wrap {
.all-money-tit-wrap { flex: 1;
flex: 1; margin-left: 24rpx;
margin-left: 24rpx; display: flex;
display: flex; flex-direction: column;
flex-direction: column; height: 70rpx;
height: 70rpx;
.all-money-tit {
.all-money-tit { line-height: 1;
line-height: 1; color: $color-title;
color: $color-title; font-size: $font-size-base;
font-size: $font-size-base; flex: 1;
flex: 1; }
}
.all-money-num {
.all-money-num { color: $color-tip;
color: $color-tip; font-size: 24rpx;
font-size: 24rpx; line-height: 1;
line-height: 1; }
} }
} }
} }
} }
}
.icon-wenxiao {
.icon-wenxiao { text-align: center;
text-align: center; font-size: 50rpx;
font-size: 50rpx; color: var(--base-color) !important;
color: var(--base-color) !important; }
}
.number {
.number { font-weight: 600;
font-weight: 600; text-align: center;
text-align: center; }
}
.info-text {
.info-text { font-size: 20rpx;
font-size: 20rpx; text-align: center;
text-align: center; }
}
.info-title {
.info-title { font-size: 50rpx;
font-size: 50rpx; font-weight: 900;
font-weight: 900; color: #f5f5f5;
color: #f5f5f5; text-align: center;
text-align: center; }
}
.info-rank {
.info-rank { color: #f5f5f5;
color: #f5f5f5; margin-top: 10rpx;
margin-top: 10rpx; }
}
.title-rakn-text {
.title-rakn-text { text-align: center;
text-align: center; font-size: 30rpx;
font-size: 30rpx; font-weight: 900;
font-weight: 900; }
}
.ranking-list {
.ranking-list { transform: translateY(-120rpx);
transform: translateY(-120rpx); margin: 200rpx 24rpx;
margin: 200rpx 24rpx; background: #fff;
background: #fff; border-radius: 16rpx;
border-radius: 16rpx; padding: 10rpx 20rpx;
padding: 10rpx 20rpx; margin-top: 140rpx;
margin-top: 140rpx;
.ranking-item {
.ranking-item { display: flex;
display: flex; align-items: center;
align-items: center; padding: 20rpx 0;
padding: 20rpx 0; border-bottom: 2rpx solid #f5f5f5;
border-bottom: 2rpx solid #f5f5f5;
&:last-child {
&:last-child { border-bottom: 0;
border-bottom: 0; }
}
.ranking {
.ranking { width: 60rpx;
width: 60rpx; height: 60rpx;
height: 60rpx; display: flex;
display: flex; align-items: center;
align-items: center; justify-content: center;
justify-content: center; box-sizing: border-box;
box-sizing: border-box; font-size: 24rpx;
font-size: 24rpx; }
}
&:nth-child(1) .ranking {
&:nth-child(1) .ranking { background: rgb(249, 186, 1);
background: rgb(249, 186, 1); border-radius: 50%;
border-radius: 50%; border: 10rpx solid rgb(254, 220, 92);
border: 10rpx solid rgb(254, 220, 92); }
}
&:nth-child(2) .ranking {
&:nth-child(2) .ranking { background: rgb(172, 185, 194);
background: rgb(172, 185, 194); border-radius: 50%;
border-radius: 50%; border: 10rpx solid rgb(215, 223, 229);
border: 10rpx solid rgb(215, 223, 229); }
}
&:nth-child(3) .ranking {
&:nth-child(3) .ranking { background: rgb(211, 163, 136);
background: rgb(211, 163, 136); border-radius: 50%;
border-radius: 50%; border: 10rpx solid rgb(235, 201, 190);
border: 10rpx solid rgb(235, 201, 190); }
}
.content {
.content { flex: 1;
flex: 1; width: 0;
width: 0; padding: 0 20rpx;
padding: 0 20rpx; display: flex;
display: flex; align-items: center;
align-items: center;
.head-img {
.head-img { width: 90rpx;
width: 90rpx; height: 90rpx;
height: 90rpx; display: flex;
display: flex; align-items: center;
align-items: center; justify-content: center;
justify-content: center; border-radius: 50%;
border-radius: 50%; overflow: hidden;
overflow: hidden;
image {
image { width: 100%;
width: 100%; height: 100%;
height: 100%; }
} }
}
.nickname {
.nickname { color: #333;
color: #333; margin: 0 20rpx;
margin: 0 20rpx; font-size: 28rpx;
font-size: 28rpx; }
} }
} }
} }
} </style>
</style>

View File

@@ -1,5 +1,4 @@
<template> <template>
<page-meta :page-style="themeColor"></page-meta>
<view :style="themeColor"> <view :style="themeColor">
<mescroll-uni ref="mescroll" @getData="getData" top="20" class="member-point" :size="8" v-if="storeToken"> <mescroll-uni ref="mescroll" @getData="getData" top="20" class="member-point" :size="8" v-if="storeToken">
<view class="goods_list" slot="list"> <view class="goods_list" slot="list">

View File

@@ -1,5 +1,4 @@
<template> <template>
<page-meta :page-style="themeColor"></page-meta>
<view :style="themeColor"> <view :style="themeColor">
<view class="team-cate" v-if="storeToken && levelNum > 1"> <view class="team-cate" v-if="storeToken && levelNum > 1">
<block v-for="(item, index) in levelList" :key="index"> <block v-for="(item, index) in levelList" :key="index">

View File

@@ -1,6 +1,5 @@
<template> <template>
<page-meta :page-style="themeColor"></page-meta> <view class="container" :style="themeColor">
<view class="container">
<view class="bank-account-wrap" @click="goAccount()"> <view class="bank-account-wrap" @click="goAccount()">
<view class="tx-wrap" v-if="bankAccountInfo.withdraw_type && !isBalance"> <view class="tx-wrap" v-if="bankAccountInfo.withdraw_type && !isBalance">
<text class="tx-to">提现到</text> <text class="tx-to">提现到</text>

View File

@@ -1,5 +1,4 @@
<template> <template>
<page-meta :page-style="themeColor"></page-meta>
<view :style="themeColor"> <view :style="themeColor">
<mescroll-uni @getData="getData" class="member-point"> <mescroll-uni @getData="getData" class="member-point">
<view slot="list"> <view slot="list">

View File

@@ -1,5 +1,4 @@
<template> <template>
<page-meta :page-style="themeColor"></page-meta>
<view :style="themeColor"> <view :style="themeColor">
<view class="money-wrap"> <view class="money-wrap">
<text>-{{ detail.money }}</text> <text>-{{ detail.money }}</text>

View File

@@ -1,6 +1,5 @@
<template> <template>
<page-meta :page-style="themeColor"></page-meta> <view class="content" :style="themeColor">
<view class="content">
<view class="head-wrap"> <view class="head-wrap">
<!-- 搜索区域 --> <!-- 搜索区域 -->
<view class="search-wrap uni-flex uni-row" style="margin-bottom: 20rpx;"> <view class="search-wrap uni-flex uni-row" style="margin-bottom: 20rpx;">

View File

@@ -1,5 +1,4 @@
<template> <template>
<page-meta :page-style="themeColor"></page-meta>
<view :style="themeColor"> <view :style="themeColor">
<view class="category-page-wrap category-template-1" style="height: calc(-56px + 100vh);"> <view class="category-page-wrap category-template-1" style="height: calc(-56px + 100vh);">

View File

@@ -1,5 +1,4 @@
<template> <template>
<page-meta :page-style="themeColor"></page-meta>
<view :style="themeColor"> <view :style="themeColor">
<view scroll-y="true" class="goods-detail" :class="isIphoneX ? 'active' : ''"> <view scroll-y="true" class="goods-detail" :class="isIphoneX ? 'active' : ''">
<view class="goods-container"> <view class="goods-container">

View File

@@ -1,6 +1,5 @@
<template> <template>
<page-meta :page-style="themeColor"></page-meta> <view class="content" :style="themeColor">
<view class="content">
<view class="head-wrap"> <view class="head-wrap">
<!-- 搜索区域 --> <!-- 搜索区域 -->
<view class="search-wrap uni-flex uni-row"> <view class="search-wrap uni-flex uni-row">

View File

@@ -1,6 +1,5 @@
<template> <template>
<page-meta :page-style="themeColor"></page-meta> <view class="conteiner" :style="themeColor">
<view class="conteiner">
<!-- #ifdef MP-WEIXIN --> <!-- #ifdef MP-WEIXIN -->
<view class="point-navbar" <view class="point-navbar"
:style="{'padding-top': menuButtonBounding.top + 'px', height: menuButtonBounding.height + 'px' }"> :style="{'padding-top': menuButtonBounding.top + 'px', height: menuButtonBounding.height + 'px' }">

View File

@@ -1,6 +1,5 @@
<template> <template>
<page-meta :page-style="themeColor"></page-meta> <view class="order-container" :style="themeColor">
<view class="order-container">
<view class="order-nav" v-if="storeToken"> <view class="order-nav" v-if="storeToken">
<view v-for="(statusItem, statusIndex) in statusList" :key="statusIndex" class="uni-tab-item" :id="statusItem.id" :data-current="statusIndex" @click="ontabtap"> <view v-for="(statusItem, statusIndex) in statusList" :key="statusIndex" class="uni-tab-item" :id="statusItem.id" :data-current="statusIndex" @click="ontabtap">
<text class="uni-tab-item-title" :class="statusItem.status == orderStatus ? 'uni-tab-item-title-active color-base-text' : ''"> <text class="uni-tab-item-title" :class="statusItem.status == orderStatus ? 'uni-tab-item-title-active color-base-text' : ''">

View File

@@ -1,6 +1,5 @@
<template> <template>
<page-meta :page-style="themeColor"></page-meta> <view class="order-container" :style="themeColor" :class="{ 'safe-area': isIphoneX }">
<view class="order-container" :class="{ 'safe-area': isIphoneX }">
<!-- #ifdef MP-WEIXIN --> <!-- #ifdef MP-WEIXIN -->
<view class="payment-navbar" :style="{ <view class="payment-navbar" :style="{
'padding-top': menuButtonBounding.top + 'px', 'padding-top': menuButtonBounding.top + 'px',

View File

@@ -1,93 +1,92 @@
<template> <template>
<page-meta :page-style="themeColor"></page-meta> <view class="container" :style="themeColor">
<view class="container"> <view class="image-wrap">
<view class="image-wrap"> <image :src="$util.img('public/uniapp/pay/pay_success.png')" class="result-image" mode="widthFix"></image>
<image :src="$util.img('public/uniapp/pay/pay_success.png')" class="result-image" mode="widthFix"></image> </view>
</view> <view class="msg">{{ $lang('exchangeSuccess') }}</view>
<view class="msg">{{ $lang('exchangeSuccess') }}</view> <view class="action">
<view class="action"> <view class="btn color-base-border color-base-text" @click="toOrderList()">{{ $lang('see') }}</view>
<view class="btn color-base-border color-base-text" @click="toOrderList()">{{ $lang('see') }}</view> <view class="btn go-home color-base-bg" @click="toIndex">{{ $lang('goHome') }}</view>
<view class="btn go-home color-base-bg" @click="toIndex">{{ $lang('goHome') }}</view> </view>
</view> </view>
</view> </template>
</template>
<script>
<script> export default {
export default { data() {
data() { return {};
return {}; },
}, onShow() {
onShow() { },
}, methods: {
methods: { toOrderList() {
toOrderList() { this.$util.redirectTo('/pages_promotion/point/order_list', {}, 'redirectTo');
this.$util.redirectTo('/pages_promotion/point/order_list', {}, 'redirectTo'); },
}, toIndex() {
toIndex() { this.$util.redirectTo('/pages/index/index');
this.$util.redirectTo('/pages/index/index'); }
} }
} };
}; </script>
</script>
<style lang="scss">
<style lang="scss"> .container {
.container { width: 100vw;
width: 100vw; height: 100vh;
height: 100vh; background: #fff;
background: #fff;
.image-wrap {
.image-wrap { display: flex;
display: flex; justify-content: center;
justify-content: center; padding: 200rpx 0 40rpx 0;
padding: 200rpx 0 40rpx 0;
.result-image {
.result-image { width: 166rpx;
width: 166rpx; }
} }
}
.msg {
.msg { text-align: center;
text-align: center; line-height: 1;
line-height: 1; margin-bottom: 50rpx;
margin-bottom: 50rpx; font-size: $font-size-base;
font-size: $font-size-base; color: #000;
color: #000; }
}
.pay-amount {
.pay-amount { color: #999;
color: #999; text-align: center;
text-align: center; line-height: 1;
line-height: 1; margin-bottom: 30rpx;
margin-bottom: 30rpx; }
}
.action {
.action { width: 90%;
width: 90%; margin: 0 auto;
margin: 0 auto; text-align: center;
text-align: center; margin-top: 150rpx;
margin-top: 150rpx; display: flex;
display: flex; justify-content: space-between;
justify-content: space-between;
.btn {
.btn { width: 310rpx;
width: 310rpx; height: 78rpx;
height: 78rpx; border: 2rpx solid #ffffff;
border: 2rpx solid #ffffff; border-radius: $border-radius;
border-radius: $border-radius; font-size: $font-size-tag;
font-size: $font-size-tag; display: flex;
display: flex; align-items: center;
align-items: center; justify-content: center;
justify-content: center; }
}
.alone {
.alone { margin-left: 0;
margin-left: 0; width: 60%;
width: 60%; }
}
.go-home {
.go-home { color: #fff;
color: #fff; }
} }
} }
} </style>
</style>

View File

@@ -1,55 +1,54 @@
<template> <template>
<page-meta :page-style="themeColor"></page-meta> <view style="padding: 20rpx;" :style="themeColor">
<view style="padding: 20rpx;"> <rich-text :nodes="content"></rich-text>
<rich-text :nodes="content"></rich-text> </view>
</view> </template>
</template>
<script>
<script> import htmlParser from '@/common/js/html-parser';
import htmlParser from '@/common/js/html-parser'; export default {
export default { components: {
components: { },
}, data() {
data() { return {
return { content:'',
content:'', type:'',
type:'', uniacid:0
uniacid:0 };
}; },
}, onLoad(option) {
onLoad(option) { this.type = option.type
this.type = option.type this.uniacid = option.uniacid?option.uniacid:0
this.uniacid = option.uniacid?option.uniacid:0
this.isIphoneX = this.$util.uniappIsIPhoneX()
this.isIphoneX = this.$util.uniappIsIPhoneX() this.getcontent()
this.getcontent() },
}, onShow() {
onShow() {
},
}, methods: {
methods: { getcontent() {
getcontent() { // privacy content
// privacy content var data = {
var data = { type:this.type
type:this.type }
} if(this.uniacid > 0) data.uniacid = this.uniacid
if(this.uniacid > 0) data.uniacid = this.uniacid this.$api.sendRequest({
this.$api.sendRequest({ url: '/api/config/agreement',
url: '/api/config/agreement', data:data,
data:data, success: res => {
success: res => { console.log(res.data.title)
console.log(res.data.title) uni.setNavigationBarTitle({
uni.setNavigationBarTitle({ title:res.data.title
title:res.data.title })
}) this.content = res.data.content
this.content = res.data.content }
} });
}); }
} }
} };
}; </script>
</script>
<style lang="scss">
<style lang="scss">
</style> </style>

View File

@@ -1,6 +1,5 @@
<template> <template>
<page-meta :page-style="themeColor"></page-meta> <view class="page" :style="themeColor">
<view class="page">
<view class="help-title">{{ detail.article_title }}</view> <view class="help-title">{{ detail.article_title }}</view>
<view class="help-meta" v-if="detail.is_show_release_time == 1"> <view class="help-meta" v-if="detail.is_show_release_time == 1">
<text class="help-time">发表时间: {{ $util.timeStampTurnTime(detail.create_time) }}</text> <text class="help-time">发表时间: {{ $util.timeStampTurnTime(detail.create_time) }}</text>

View File

@@ -1,5 +1,4 @@
<template> <template>
<page-meta :page-style="themeColor"></page-meta>
<view :style="themeColor"> <view :style="themeColor">
<mescroll-uni @getData="getData" ref="mescroll"> <mescroll-uni @getData="getData" ref="mescroll">
<block slot="list"> <block slot="list">

View File

@@ -1,5 +1,4 @@
<template> <template>
<page-meta :page-style="themeColor"></page-meta>
<view :style="themeColor"> <view :style="themeColor">
<view class="about w100"> <view class="about w100">
<view class="bg border-top"></view> <view class="bg border-top"></view>
@@ -146,9 +145,9 @@
</uni-popup> </uni-popup>
</view> </view>
<to-top v-if="showTop" @toTop="scrollToTopNative()"></to-top> <to-top v-if="showTop" @toTop="scrollToTopNative()"></to-top>
<hover-nav></hover-nav>
<diy-bottom-nav></diy-bottom-nav>
</view> </view>
<hover-nav></hover-nav>
<diy-bottom-nav></diy-bottom-nav>
</template> </template>
<script> <script>

View File

@@ -1,6 +1,5 @@
<template> <template>
<page-meta :page-style="themeColor"></page-meta> <view :style="themeColor">
<view>
<view class="page" v-if="detail"> <view class="page" v-if="detail">
<view class="form-banner"> <view class="form-banner">
<image :src="$util.img('public/uniapp/form/banner.png')" mode="widthFix"></image> <image :src="$util.img('public/uniapp/form/banner.png')" mode="widthFix"></image>

View File

@@ -1,5 +1,4 @@
<template> <template>
<page-meta :page-style="themeColor"></page-meta>
<view :style="themeColor"> <view :style="themeColor">
<view class="cf-container color-line-border"> <view class="cf-container color-line-border">
<view class="tab"> <view class="tab">

View File

@@ -1,6 +1,5 @@
<template> <template>
<page-meta :page-style="themeColor"></page-meta> <view class="container" :style="themeColor">
<view class="container">
<view class="content"> <view class="content">
<view class="wx-code"> <view class="wx-code">
<image :src="$util.img(path)" /> <image :src="$util.img(path)" />

View File

@@ -1,342 +1,341 @@
<template> <template>
<page-meta :page-style="themeColor"></page-meta> <view class="goods-evaluate" :style="themeColor">
<view class="goods-evaluate"> <view class="evaluate-tab">
<view class="evaluate-tab"> <view v-for="(item, index) in evaluateList" :key="index" :class="evaluateTab == item.value ? 'active-tab' : ''" @click="onEvaluateTab(item.value)">
<view v-for="(item, index) in evaluateList" :key="index" :class="evaluateTab == item.value ? 'active-tab' : ''" @click="onEvaluateTab(item.value)"> {{ item.name }}({{ item.count }})
{{ item.name }}({{ item.count }}) </view>
</view> </view>
</view> <mescroll-uni ref="mescroll" top="100" @getData="getGoodsEvaluate">
<mescroll-uni ref="mescroll" top="100" @getData="getGoodsEvaluate"> <block slot="list">
<block slot="list"> <view class="evaluate-item" v-for="(item, index) in list" :key="index">
<view class="evaluate-item" v-for="(item, index) in list" :key="index"> <view class="evaluator">
<view class="evaluator"> <view>
<view> <view class="evaluator-face">
<view class="evaluator-face"> <image v-if="item.member_headimg" :src="$util.img(item.member_headimg)" @error="imageError(index)" mode="aspectFill" />
<image v-if="item.member_headimg" :src="$util.img(item.member_headimg)" @error="imageError(index)" mode="aspectFill" /> <image v-else :src="$util.getDefaultImage().head" mode="aspectFill" />
<image v-else :src="$util.getDefaultImage().head" mode="aspectFill" /> </view>
</view>
<view class="evaluator-info">
<view class="evaluator-info"> <view class="evaluator-info-left">
<view class="evaluator-info-left"> <view class="evaluator-name using-hidden" v-if="item.member_name.length > 2 && item.is_anonymous == 1">
<view class="evaluator-name using-hidden" v-if="item.member_name.length > 2 && item.is_anonymous == 1"> {{ item.member_name[0] }}***{{ item.member_name[item.member_name.length - 1] }}
{{ item.member_name[0] }}***{{ item.member_name[item.member_name.length - 1] }} </view>
</view> <text class="evaluator-name using-hidden" v-else>{{ item.member_name }}</text>
<text class="evaluator-name using-hidden" v-else>{{ item.member_name }}</text> <view class="evaluator-time color-tip">{{ $util.timeStampTurnTime(item.create_time) }}</view>
<view class="evaluator-time color-tip">{{ $util.timeStampTurnTime(item.create_time) }}</view> </view>
</view> <view class="evaluator-xing"><xiaoStarComponent :starCount="item.scores * 2"></xiaoStarComponent></view>
<view class="evaluator-xing"><xiaoStarComponent :starCount="item.scores * 2"></xiaoStarComponent></view> </view>
</view> </view>
</view> </view>
</view> <view class="cont">{{ item.content }}</view>
<view class="cont">{{ item.content }}</view> <scroll-view scroll-x="true">
<scroll-view scroll-x="true"> <view class="evaluate-img" v-if="item.images">
<view class="evaluate-img" v-if="item.images"> <view class="img-box" v-for="(img, img_index) in item.images" :key="img_index" @click="previewEvaluate(index, img_index, 'images')">
<view class="img-box" v-for="(img, img_index) in item.images" :key="img_index" @click="previewEvaluate(index, img_index, 'images')"> <image :src="$util.img(img)" mode="aspectFill" />
<image :src="$util.img(img)" mode="aspectFill" /> </view>
</view> </view>
</view> </scroll-view>
</scroll-view>
<view v-if="item.explain_first != ''" class="time shop-reply-box">
<view v-if="item.explain_first != ''" class="time shop-reply-box"> <view class="shop-reply">商家回复</view>
<view class="shop-reply">商家回复</view> <view class="cont">{{ item.explain_first }}</view>
<view class="cont">{{ item.explain_first }}</view> </view>
</view>
<template v-if="item.again_content != '' && item.again_is_audit == 1">
<template v-if="item.again_content != '' && item.again_is_audit == 1"> <view class="review-evaluation color-base-text">追加评价</view>
<view class="review-evaluation color-base-text">追加评价</view> <view class="cont">{{ item.again_content }}</view>
<view class="cont">{{ item.again_content }}</view> <scroll-view scroll-x="true">
<scroll-view scroll-x="true"> <view class="evaluate-img" v-if="item.again_images.length > 0">
<view class="evaluate-img" v-if="item.again_images.length > 0"> <view
<view class="img-box"
class="img-box" v-for="(again_img, again_index) in item.again_images"
v-for="(again_img, again_index) in item.again_images" :key="again_index"
:key="again_index" @click="previewEvaluate(index, again_index, 'again_images')"
@click="previewEvaluate(index, again_index, 'again_images')" >
> <image :src="$util.img(again_img)" mode="aspectFill"></image>
<image :src="$util.img(again_img)" mode="aspectFill"></image> </view>
</view> </view>
</view> </scroll-view>
</scroll-view>
<view v-if="item.again_explain != ''" class="time shop-reply-box">
<view v-if="item.again_explain != ''" class="time shop-reply-box"> <view class="shop-reply" v-if="item.again_explain != ''">商家回复</view>
<view class="shop-reply" v-if="item.again_explain != ''">商家回复</view> <view class="cont">{{ item.again_explain }}</view>
<view class="cont">{{ item.again_explain }}</view> </view>
</view> </template>
</template> </view>
</view> <view v-if="list.length == 0"><ns-empty text="暂无商品评价"></ns-empty></view>
<view v-if="list.length == 0"><ns-empty text="暂无商品评价"></ns-empty></view> </block>
</block> </mescroll-uni>
</mescroll-uni> <loading-cover ref="loadingCover"></loading-cover>
<loading-cover ref="loadingCover"></loading-cover> </view>
</view> </template>
</template>
<script>
<script> import xiaoStarComponent from '@/components/xiao-star-component/xiao-star-component.vue';
import xiaoStarComponent from '@/components/xiao-star-component/xiao-star-component.vue'; export default {
export default { components: { xiaoStarComponent },
components: { xiaoStarComponent }, data() {
data() { return {
return { goodsId: 0,
goodsId: 0, list: [],
list: [], evaluateList: [{ name: '全部', value: 0, count: 0 }, { name: '好评', value: 1, count: 0 }, { name: '中评', value: 2, count: 0 }, { name: '差评', value: 3, count: 0 }],
evaluateList: [{ name: '全部', value: 0, count: 0 }, { name: '好评', value: 1, count: 0 }, { name: '中评', value: 2, count: 0 }, { name: '差评', value: 3, count: 0 }], evaluateTab: 0,
evaluateTab: 0, mescroll_type: {}
mescroll_type: {} };
}; },
}, onLoad(data) {
onLoad(data) { this.goodsId = data.goods_id || 0;
this.goodsId = data.goods_id || 0; this.getEvaluateCount();
this.getEvaluateCount(); },
}, onShow() {
onShow() { },
}, methods: {
methods: { getEvaluateCount(mescroll) {
getEvaluateCount(mescroll) { this.$api.sendRequest({
this.$api.sendRequest({ url: '/api/goodsevaluate/getgoodsevaluate',
url: '/api/goodsevaluate/getgoodsevaluate', data: {
data: { goods_id: this.goodsId
goods_id: this.goodsId },
}, success: res => {
success: res => { for (let i = 0; i < this.evaluateList.length; i++) {
for (let i = 0; i < this.evaluateList.length; i++) { if (this.evaluateList[i].value == 0) {
if (this.evaluateList[i].value == 0) { this.evaluateList[i].count = res.data.total;
this.evaluateList[i].count = res.data.total; } else if (this.evaluateList[i].value == 1) {
} else if (this.evaluateList[i].value == 1) { this.evaluateList[i].count = res.data.haoping;
this.evaluateList[i].count = res.data.haoping; } else if (this.evaluateList[i].value == 2) {
} else if (this.evaluateList[i].value == 2) { this.evaluateList[i].count = res.data.zhongping;
this.evaluateList[i].count = res.data.zhongping; } else if (this.evaluateList[i].value == 3) {
} else if (this.evaluateList[i].value == 3) { this.evaluateList[i].count = res.data.chaping;
this.evaluateList[i].count = res.data.chaping; }
} }
} }
} });
}); },
}, getGoodsEvaluate(mescroll) {
getGoodsEvaluate(mescroll) { this.mescroll_type = mescroll;
this.mescroll_type = mescroll; this.$api.sendRequest({
this.$api.sendRequest({ url: '/api/goodsevaluate/page',
url: '/api/goodsevaluate/page', data: {
data: { page: mescroll.num,
page: mescroll.num, page_size: mescroll.size,
page_size: mescroll.size, goods_id: this.goodsId,
goods_id: this.goodsId, explain_type: this.evaluateTab == 0 ? '' : this.evaluateTab
explain_type: this.evaluateTab == 0 ? '' : this.evaluateTab },
}, success: res => {
success: res => { let newArr = [];
let newArr = []; let msg = res.message;
let msg = res.message; if (res.code == 0 && res.data) {
if (res.code == 0 && res.data) { newArr = res.data.list;
newArr = res.data.list; } else {
} else { this.$util.showToast({
this.$util.showToast({ title: msg
title: msg });
}); }
}
for (var i = 0; i < newArr.length; i++) {
for (var i = 0; i < newArr.length; i++) { if (newArr[i].images) newArr[i].images = newArr[i].images.split(',');
if (newArr[i].images) newArr[i].images = newArr[i].images.split(','); if (newArr[i].again_images) newArr[i].again_images = newArr[i].again_images.split(',');
if (newArr[i].again_images) newArr[i].again_images = newArr[i].again_images.split(','); if (newArr[i].is_anonymous == 1) newArr[i].member_name = newArr[i].member_name.replace(newArr[i].member_name.substring(1, newArr[i].member_name.length - 1), '***');
if (newArr[i].is_anonymous == 1) newArr[i].member_name = newArr[i].member_name.replace(newArr[i].member_name.substring(1, newArr[i].member_name.length - 1), '***'); }
} mescroll.endSuccess(newArr.length);
mescroll.endSuccess(newArr.length); //设置列表数据
//设置列表数据 if (mescroll.num == 1) this.list = []; //如果是第一页需手动制空列表
if (mescroll.num == 1) this.list = []; //如果是第一页需手动制空列表 this.list = this.list.concat(newArr); //追加新数据
this.list = this.list.concat(newArr); //追加新数据 if (this.$refs.loadingCover) this.$refs.loadingCover.hide();
if (this.$refs.loadingCover) this.$refs.loadingCover.hide(); },
}, fail: res => {
fail: res => { mescroll.endErr();
mescroll.endErr(); if (this.$refs.loadingCover) this.$refs.loadingCover.hide();
if (this.$refs.loadingCover) this.$refs.loadingCover.hide(); }
} });
}); },
},
// 预览评价图片
// 预览评价图片 previewEvaluate(index, img_index, field) {
previewEvaluate(index, img_index, field) { var paths = [];
var paths = []; for (let i = 0; i < this.list[index][field].length; i++) {
for (let i = 0; i < this.list[index][field].length; i++) { paths.push(this.$util.img(this.list[index][field][i]));
paths.push(this.$util.img(this.list[index][field][i])); }
} uni.previewImage({
uni.previewImage({ current: img_index,
current: img_index, urls: paths
urls: paths });
}); },
},
imageError(index) {
imageError(index) { this.list[index].member_headimg = this.$util.getDefaultImage().head;
this.list[index].member_headimg = this.$util.getDefaultImage().head; this.$forceUpdate();
this.$forceUpdate(); },
}, onEvaluateTab(value) {
onEvaluateTab(value) { this.list = [];
this.list = []; this.evaluateTab = value;
this.evaluateTab = value; this.mescroll_type.num = 1;
this.mescroll_type.num = 1; this.mescroll_type.size = 10;
this.mescroll_type.size = 10; let mescrolls = {
let mescrolls = { num: 1,
num: 1, size: 10
size: 10 };
}; this.getGoodsEvaluate(this.mescroll_type);
this.getGoodsEvaluate(this.mescroll_type); }
} }
} };
}; </script>
</script>
<style lang="scss">
<style lang="scss"> .goods-evaluate {
.goods-evaluate { .evaluate-tab {
.evaluate-tab { display: flex;
display: flex; align-items: center;
align-items: center; background: #fff;
background: #fff; height: 100rpx;
height: 100rpx; padding: 0 $margin-both;
padding: 0 $margin-both;
view {
view { background: #f0f0f0;
background: #f0f0f0; color: #333;
color: #333; border-radius: 30rpx;
border-radius: 30rpx; margin-right: 20rpx;
margin-right: 20rpx; padding: 8rpx 30rpx;
padding: 8rpx 30rpx; font-size: 24rpx;
font-size: 24rpx; }
} .active-tab {
.active-tab { background-color: $base-color;
background-color: $base-color; color: #fff;
color: #fff; }
} }
} .evaluate-item {
.evaluate-item { margin: $margin-updown $margin-both;
margin: $margin-updown $margin-both; padding: $margin-both;
padding: $margin-both; background: #fff;
background: #fff; border-radius: 10rpx;
border-radius: 10rpx;
.evaluator {
.evaluator { & > view {
& > view { display: flex;
display: flex; align-items: center;
align-items: center; }
}
.evaluator-face {
.evaluator-face { width: 79rpx;
width: 79rpx; height: 79rpx;
height: 79rpx; border-radius: 50%;
border-radius: 50%; overflow: hidden;
overflow: hidden;
image {
image { width: 100%;
width: 100%; height: 100%;
height: 100%; }
} }
}
.evaluator-info {
.evaluator-info { width: 85%;
width: 85%; margin-left: 13rpx;
margin-left: 13rpx;
.evaluator-name {
.evaluator-name { color: #303133;
color: #303133; font-size: $font-size-base;
font-size: $font-size-base; line-height: 1;
line-height: 1; width: 250rpx;
width: 250rpx; }
}
.evaluator-time {
.evaluator-time { font-size: $font-size-tag;
font-size: $font-size-tag; // margin-top: 14rpx;
// margin-top: 14rpx; line-height: 1;
line-height: 1; }
} .evaluator-info-left {
.evaluator-info-left { display: flex;
display: flex; align-items: center;
align-items: center; justify-content: space-between;
justify-content: space-between; }
} }
} }
}
.cont {
.cont { text-align: justify;
text-align: justify; display: -webkit-box;
display: -webkit-box; word-break: break-all;
word-break: break-all; font-size: $font-size-base;
font-size: $font-size-base; margin: 26rpx 0 0;
margin: 26rpx 0 0; color: #000000;
color: #000000; line-height: 42rpx;
line-height: 42rpx; }
}
.evaluate-img {
.evaluate-img { display: flex;
display: flex; width: 100%;
width: 100%; flex-wrap: wrap;
flex-wrap: wrap; margin-top: 19rpx;
margin-top: 19rpx;
.img-box {
.img-box { flex-shrink: 0;
flex-shrink: 0; width: 140rpx;
width: 140rpx; height: 140rpx;
height: 140rpx; overflow: hidden;
overflow: hidden; margin: 20rpx 23rpx 0 0;
margin: 20rpx 23rpx 0 0; border-radius: 10rpx;
border-radius: 10rpx;
&:nth-child(4n) {
&:nth-child(4n) { margin-right: 0;
margin-right: 0; }
}
&:nth-child(-n + 4) {
&:nth-child(-n + 4) { margin-top: 0;
margin-top: 0; }
}
image {
image { width: 100%;
width: 100%; height: 100%;
height: 100%; }
} }
} }
}
.time {
.time { font-size: $font-size-tag;
font-size: $font-size-tag; background: #f8f8f8;
background: #f8f8f8; padding: 10rpx 20rpx;
padding: 10rpx 20rpx; border-radius: 6rpx;
border-radius: 6rpx; margin-top: 20rpx;
margin-top: 20rpx;
text {
text { line-height: 42rpx;
line-height: 42rpx; color: $color-tip;
color: $color-tip; }
} }
}
.evaluation-reply {
.evaluation-reply { margin-top: 10rpx;
margin-top: 10rpx; font-size: $font-size-tag;
font-size: $font-size-tag; }
}
.review-evaluation {
.review-evaluation { margin-top: 29rpx;
margin-top: 29rpx; font-size: $font-size-base;
font-size: $font-size-base; line-height: 1;
line-height: 1;
.review-time {
.review-time { overflow: hidden;
overflow: hidden; float: right;
float: right; }
}
& + .cont {
& + .cont { margin: 18rpx 0 0;
margin: 18rpx 0 0; }
} }
} }
} }
}
.shop-reply {
.shop-reply { font-size: $font-size-base;
font-size: $font-size-base; color: #000;
color: #000; line-height: 1;
line-height: 1;
& + .cont {
& + .cont { margin-top: 10rpx !important;
margin-top: 10rpx !important; }
} }
}
.shop-reply-box {
.shop-reply-box { padding: 20rpx !important;
padding: 20rpx !important; }
} </style>
</style>

View File

@@ -1,43 +1,42 @@
<template> <template>
<page-meta :page-style="themeColor"></page-meta> <view class="page" :style="themeColor">
<view class="page"> <view class="closeBox">
<view class="closeBox"> <image :src="$util.img('public/uniapp/goods/not_exist.png')" mode="widthFix"></image>
<image :src="$util.img('public/uniapp/goods/not_exist.png')" mode="widthFix"></image> <text class="close-title">您查看的商品不存在可能已下架或被删除</text>
<text class="close-title">您查看的商品不存在可能已下架或被删除</text> </view>
</view> </view>
</view> </template>
</template>
<script>
<script> export default {
export default { data() {
data() { return {};
return {}; },
}, onShow() {},
onShow() {}, methods: {}
methods: {} };
}; </script>
</script>
<style lang="scss">
<style lang="scss"> .page{
.page{ height: 100vh;
height: 100vh; overflow: hidden;
overflow: hidden; }
} .closeBox {
.closeBox { width: 100%;
width: 100%; display: flex;
display: flex; flex-direction: column;
flex-direction: column; justify-content: center;
justify-content: center; align-items: center;
align-items: center; margin-top: 260rpx;
margin-top: 260rpx; }
} image {
image { width: 400rpx;
width: 400rpx; }
} .close-title {
.close-title { font-size: $font-size-base;
font-size: $font-size-base; color: $color-tip;
color: $color-tip; margin: 55rpx;
margin: 55rpx; letter-spacing: 4rpx;
letter-spacing: 4rpx; }
} </style>
</style>

View File

@@ -1,5 +1,4 @@
<template> <template>
<page-meta :page-style="themeColor"></page-meta>
<view :style="themeColor"> <view :style="themeColor">
<view class="content"> <view class="content">
<view class="cate-search"> <view class="cate-search">

View File

@@ -1,6 +1,5 @@
<template> <template>
<page-meta :page-style="themeColor"></page-meta> <view class="page" :style="themeColor">
<view class="page">
<view class="help-title">{{ detail.title }}</view> <view class="help-title">{{ detail.title }}</view>
<view class="help-content"><rich-text :nodes="content"></rich-text></view> <view class="help-content"><rich-text :nodes="content"></rich-text></view>
<view class="help-meta"> <view class="help-meta">

View File

@@ -1,6 +1,5 @@
<template> <template>
<page-meta :page-style="themeColor"></page-meta> <view class="help" :style="themeColor">
<view class="help">
<block v-if="dataList.length"> <block v-if="dataList.length">
<view class="help-item" v-for="(item, index) in dataList" :key="index"> <view class="help-item" v-for="(item, index) in dataList" :key="index">
<view :class="['item-title', item.child_list.length == 0 ? 'empty' : '']">{{ item.class_name }}</view> <view :class="['item-title', item.child_list.length == 0 ? 'empty' : '']">{{ item.class_name }}</view>

View File

@@ -1,6 +1,5 @@
<template> <template>
<page-meta :page-style="themeColor"></page-meta> <view :style="themeColor + ';' + { backgroundColor: bgColor, minHeight: openBottomNav ? 'calc(100vh - 55px)' : '' }" class="page-img">
<view :style="{ backgroundColor: bgColor, minHeight: openBottomNav ? 'calc(100vh - 55px)' : '' }" class="page-img">
<view class="page-header" v-if="diyData.global && diyData.global.navBarSwitch" :style="{ backgroundImage: bgImg }"> <view class="page-header" v-if="diyData.global && diyData.global.navBarSwitch" :style="{ backgroundImage: bgImg }">
<ns-navbar :title-color="textNavColor" :data="diyData.global" :scrollTop="scrollTop" :isBack="true"/> <ns-navbar :title-color="textNavColor" :data="diyData.global" :scrollTop="scrollTop" :isBack="true"/>
</view> </view>

View File

@@ -1,6 +1,5 @@
<template> <template>
<page-meta :page-style="themeColor"></page-meta> <view class="find" :style="themeColor">
<view class="find">
<view class="iconfont icon-close" @click="navigateBack()"></view> <view class="iconfont icon-close" @click="navigateBack()"></view>
<view class="header-wrap"> <view class="header-wrap">
<block v-if="stepShow == 0"> <block v-if="stepShow == 0">

View File

@@ -1,482 +1,498 @@
<template> <template>
<page-meta :page-style="themeColor"></page-meta> <view :style="themeColor">
<scroll-view scroll-y="false" class="container"> <scroll-view scroll-y="false" class="container">
<view class="header-wrap" :style="{backgroundImage: 'url('+$util.img('public/uniapp/member/head.png')+')'}"> <view class="header-wrap" :style="{ backgroundImage: 'url(' + $util.img('public/uniapp/member/head.png') + ')' }">
<view class="t-b"> <view class="t-b">
<div v-html="$lang('welcomeText')"></div> <div v-html="$lang('welcomeText')"></div>
</view>
</view> </view>
</view> <view class="body-wrap">
<view class="body-wrap"> <view class="form-wrap">
<view class="form-wrap"> <view class="input-wrap" v-show="loginMode == 'mobile'">
<view class="input-wrap" v-show="loginMode == 'mobile'"> <view class="content">
<view class="content"> <!-- <view class="area-code">+86</view> -->
<!-- <view class="area-code">+86</view> --> <input type="number" :placeholder="$lang('mobileInputPlaceholder')"
<input type="number" :placeholder="$lang('mobileInputPlaceholder')" placeholder-class="input-placeholder" class="input" maxlength="11" v-model="formData.mobile" /> placeholder-class="input-placeholder" class="input" maxlength="11"
v-model="formData.mobile" />
</view>
</view> </view>
</view> <view class="input-wrap" v-show="loginMode == 'account'">
<view class="input-wrap" v-show="loginMode == 'account'"> <view class="content">
<view class="content"> <input type="text" :placeholder="$lang('accountInputPlaceholder')"
<input type="text" :placeholder="$lang('accountInputPlaceholder')" placeholder-class="input-placeholder" class="input" v-model="formData.account" /> placeholder-class="input-placeholder" class="input" v-model="formData.account" />
</view>
</view> </view>
</view> <view class="input-wrap" v-show="loginMode == 'account'">
<view class="input-wrap" v-show="loginMode == 'account'"> <view class="content">
<view class="content"> <input type="password" :placeholder="$lang('passwordInputPlaceholder')"
<input type="password" :placeholder="$lang('passwordInputPlaceholder')" placeholder-class="input-placeholder" class="input" v-model="formData.password" /> placeholder-class="input-placeholder" class="input" v-model="formData.password" />
<view class="align-right" v-show="loginMode == 'account'"> <view class="align-right" v-show="loginMode == 'account'">
<text @click="forgetPassword">{{ $lang('forgetPasswordText') }}</text> <text @click="forgetPassword">{{ $lang('forgetPasswordText') }}</text>
</view>
</view>
</view>
<view class="input-wrap" v-show="loginMode == 'mobile'">
<view class="content">
<input type="text" :placeholder="$lang('dynacodeInputPlaceholder')"
placeholder-class="input-placeholder" class="input" v-model="formData.dynacode" />
<view class="dynacode"
:class="dynacodeData.seconds == 120 ? 'color-base-text' : 'color-tip'"
@click="sendMobileCode">{{ dynacodeData.codeText }}</view>
</view> </view>
</view> </view>
</view> </view>
<view class="input-wrap" v-show="loginMode == 'mobile'">
<view class="content"> <view class="btn_view">
<input type="text" :placeholder="$lang('dynacodeInputPlaceholder')" placeholder-class="input-placeholder" class="input" v-model="formData.dynacode" /> <button type="primary" @click="login" class="login-btn color-base-border color-base-bg"
<view class="dynacode" :class="dynacodeData.seconds == 120 ? 'color-base-text' : 'color-tip'" style="background: #2796f2 !important;border: none;">{{ $lang('loginButtonText') }}</button>
@click="sendMobileCode">{{ dynacodeData.codeText }}</view> </view>
</view> <view class="regisiter-agreement"
style="margin: 0 50rpx;padding-top: 40rpx;line-height: 1.5;display: flex;">
<view style="" class="iconfont"
:class="isAgree ? 'icon-fuxuankuang1 color-base-text' : 'icon-fuxuankuang2'"
@click="isAgree = !isAgree"></view>
<view style="text-align: left;margin-left: 10rpx;padding-top: 2rpx;">{{
$lang('registerAgreementText') }} <text @click="tourl('/pages_tool/agreement/contenr?type=0')"
style="color:#4395ff">{{ $lang('privacyPolicyText') }}</text> <text
@click="tourl('/pages_tool/agreement/contenr?type=1')" style="color:#4395ff">{{
$lang('userServiceAgreementText') }}</text></view>
</view> </view>
</view> </view>
<loading-cover ref="loadingCover"></loading-cover>
<view class="btn_view"> <register-reward ref="registerReward"></register-reward>
<button type="primary" @click="login" class="login-btn color-base-border color-base-bg" style="background: #2796f2 !important;border: none;">{{ $lang('loginButtonText') }}</button> </scroll-view>
</view> </view>
<view class="regisiter-agreement" style="margin: 0 50rpx;padding-top: 40rpx;line-height: 1.5;display: flex;">
<view style="" class="iconfont" :class=" isAgree ? 'icon-fuxuankuang1 color-base-text' : 'icon-fuxuankuang2' " @click="isAgree = !isAgree"></view>
<view style="text-align: left;margin-left: 10rpx;padding-top: 2rpx;">{{ $lang('registerAgreementText') }} <text @click="tourl('/pages_tool/agreement/contenr?type=0')" style="color:#4395ff">{{ $lang('privacyPolicyText') }}</text> <text @click="tourl('/pages_tool/agreement/contenr?type=1')" style="color:#4395ff">{{ $lang('userServiceAgreementText') }}</text></view>
</view>
</view>
<loading-cover ref="loadingCover"></loading-cover>
<register-reward ref="registerReward"></register-reward>
</scroll-view>
</template> </template>
<script> <script>
import validate from 'common/js/validate.js'; import validate from 'common/js/validate.js';
import registerReward from '@/components/register-reward/register-reward.vue'; import registerReward from '@/components/register-reward/register-reward.vue';
export default { export default {
data() { data() {
return { return {
isAgree: false, isAgree: false,
// loginMode: 'account', // loginMode: 'account',
loginMode: 'mobile', loginMode: 'mobile',
formData: { formData: {
mobile: '', mobile: '',
account: '', account: '',
password: '', password: '',
vercode: '', vercode: '',
dynacode: '', dynacode: '',
key: '' key: ''
}, },
captcha: { captcha: {
id: '', id: '',
img: '' img: ''
}, },
isSub: false, // 提交防重复 isSub: false, // 提交防重复
back: '', // 返回页 back: '', // 返回页
redirect: 'redirectTo', // 跳转方式 redirect: 'redirectTo', // 跳转方式
dynacodeData: { dynacodeData: {
seconds: 120, seconds: 120,
timer: null, timer: null,
codeText: this.$lang('getDynacode'), codeText: this.$lang('getDynacode'),
isSend: false isSend: false
}, },
registerConfig: { registerConfig: {
register: 'mobile', register: 'mobile',
login: '' login: ''
}, },
captchaConfig: 0, captchaConfig: 0,
authInfo: null authInfo: null
}; };
}, },
components: { components: {
registerReward registerReward
}, },
onLoad(option) { onLoad(option) {
if (option.back) this.back = option.back; if (option.back) this.back = option.back;
this.getRegisterConfig(); this.getRegisterConfig();
// this.getCaptchaConfig(); // this.getCaptchaConfig();
this.authInfo = uni.getStorageSync('authInfo'); this.authInfo = uni.getStorageSync('authInfo');
}, },
onShow() {}, onShow() { },
onReady() { onReady() {
if (this.$refs.loadingCover) this.$refs.loadingCover.hide(); if (this.$refs.loadingCover) this.$refs.loadingCover.hide();
}, },
methods: { methods: {
/** /**
* 获取验证码配置 * 获取验证码配置
*/ */
getCaptchaConfig() { getCaptchaConfig() {
this.$api.sendRequest({ this.$api.sendRequest({
url: '/api/config/getCaptchaConfig', url: '/api/config/getCaptchaConfig',
success: res => { success: res => {
if (res.code >= 0) { if (res.code >= 0) {
this.captchaConfig = res.data.shop_reception_login; this.captchaConfig = res.data.shop_reception_login;
if (this.captchaConfig == 1) this.getCaptcha(); if (this.captchaConfig == 1) this.getCaptcha();
}
} }
});
},
/**
* 获取注册配置
*/
getRegisterConfig() {
this.$api.sendRequest({
url: '/api/register/config',
success: res => {
if (res.code >= 0) {
// this.registerConfig = res.data.value;
// if (this.registerConfig.login.indexOf('mobile') != -1) this.loginMode = 'mobile';
// else this.loginMode = 'account';
}
}
});
},
/**
* 切换登录方式
*/
switchLoginMode() {
this.loginMode = this.loginMode == 'mobile' ? 'account' : 'mobile';
},
/**
* 获取验证码
*/
getCaptcha() {
if (this.captchaConfig == 0) return;
this.$api.sendRequest({
url: '/api/captcha/captcha',
data: {
captcha_id: this.captcha.id
},
success: res => {
if (res.code >= 0) {
this.captcha = res.data;
this.captcha.img = this.captcha.img.replace(/\r\n/g, '');
}
}
});
},
/**
* 去注册
*/
toRegister() {
if (this.back) this.$util.redirectTo('/pages_tool/login/register', {
back: encodeURIComponent(this.back)
});
else this.$util.redirectTo('/pages_tool/login/register');
},
/**
* 忘记密码
*/
forgetPassword() {
if (this.back) this.$util.redirectTo('/pages_tool/login/find', {
back: encodeURIComponent(this.back)
});
else this.$util.redirectTo('/pages_tool/login/find');
},
tourl(url){
this.$util.redirectTo(url);
},
/**
* 登录
*/
login() {
if (!this.isAgree) {
this.$util.showToast({
title: this.$lang('agreeAgreementTip')
});
return false;
} }
if (this.loginMode == 'account') { });
var url = '/api/login/login'; },
/**
* 获取注册配置
*/
getRegisterConfig() {
this.$api.sendRequest({
url: '/api/register/config',
success: res => {
if (res.code >= 0) {
// this.registerConfig = res.data.value;
// if (this.registerConfig.login.indexOf('mobile') != -1) this.loginMode = 'mobile';
// else this.loginMode = 'account';
}
}
});
},
/**
* 切换登录方式
*/
switchLoginMode() {
this.loginMode = this.loginMode == 'mobile' ? 'account' : 'mobile';
},
/**
* 获取验证码
*/
getCaptcha() {
if (this.captchaConfig == 0) return;
this.$api.sendRequest({
url: '/api/captcha/captcha',
data: {
captcha_id: this.captcha.id
},
success: res => {
if (res.code >= 0) {
this.captcha = res.data;
this.captcha.img = this.captcha.img.replace(/\r\n/g, '');
}
}
});
},
/**
* 去注册
*/
toRegister() {
if (this.back) this.$util.redirectTo('/pages_tool/login/register', {
back: encodeURIComponent(this.back)
});
else this.$util.redirectTo('/pages_tool/login/register');
},
/**
* 忘记密码
*/
forgetPassword() {
if (this.back) this.$util.redirectTo('/pages_tool/login/find', {
back: encodeURIComponent(this.back)
});
else this.$util.redirectTo('/pages_tool/login/find');
},
tourl(url) {
this.$util.redirectTo(url);
},
/**
* 登录
*/
login() {
if (!this.isAgree) {
this.$util.showToast({
title: this.$lang('agreeAgreementTip')
});
return false;
}
if (this.loginMode == 'account') {
var url = '/api/login/login';
data = {
username: this.formData.account,
password: this.formData.password
};
} else {
var url = '/api/login/mobile',
data = { data = {
username: this.formData.account, mobile: this.formData.mobile,
password: this.formData.password key: this.formData.key,
code: this.formData.dynacode
}; };
} else { }
var url = '/api/login/mobile', if (this.captcha.id != '') {
data = { data.captcha_id = this.captcha.id;
mobile: this.formData.mobile, data.captcha_code = this.formData.vercode;
key: this.formData.key, }
code: this.formData.dynacode if (this.authInfo) Object.assign(data, this.authInfo);
}; if (uni.getStorageSync('source_member')) data.source_member = uni.getStorageSync('source_member');
}
if (this.captcha.id != '') {
data.captcha_id = this.captcha.id;
data.captcha_code = this.formData.vercode;
}
if (this.authInfo) Object.assign(data, this.authInfo);
if (uni.getStorageSync('source_member')) data.source_member = uni.getStorageSync('source_member');
if (this.verify(data)) { if (this.verify(data)) {
if (this.isSub) return; if (this.isSub) return;
this.isSub = true; this.isSub = true;
this.$api.sendRequest({ this.$api.sendRequest({
url, url,
data, data,
success: res => { success: res => {
if (res.code >= 0) { if (res.code >= 0) {
var can_receive_registergift = res.data.can_receive_registergift; var can_receive_registergift = res.data.can_receive_registergift;
this.$store.commit('setToken', res.data.token); this.$store.commit('setToken', res.data.token);
this.$store.dispatch('getCartNumber'); this.$store.dispatch('getCartNumber');
this.getMemberInfo(() => { this.getMemberInfo(() => {
if (can_receive_registergift == 1) { if (can_receive_registergift == 1) {
this.$util.showToast({ this.$util.showToast({
title: this.$lang('loginSuccessTip') title: this.$lang('loginSuccessTip')
}); });
let back = this.back ? this.back : '/pages/member/index'; let back = this.back ? this.back : '/pages/member/index';
if(this.$refs.registerReward) this.$refs.registerReward.open(back); if (this.$refs.registerReward) this.$refs.registerReward.open(back);
} else {
if (this.back != '') {
this.$util.redirectTo(decodeURIComponent(this.back), {}, 'reLaunch');
} else { } else {
if (this.back != '') { this.$util.redirectTo('/pages/member/index', {}, 'reLaunch');
this.$util.redirectTo(decodeURIComponent(this.back), {}, 'reLaunch');
} else {
this.$util.redirectTo('/pages/member/index', {}, 'reLaunch');
}
} }
}); }
} else { });
this.isSub = false; } else {
this.getCaptcha();
this.$util.showToast({
title: res.message
});
}
},
fail: res => {
this.isSub = false; this.isSub = false;
this.getCaptcha(); this.getCaptcha();
}
});
}
},
/**
* 登录验证
* @param {Object} data
*/
verify(data) {
let rule = [];
// 手机号验证
if (this.loginMode == 'mobile') {
rule = [{
name: 'mobile',
checkType: 'required',
errorMsg: this.$lang('enterMobileTip')
}, {
name: 'mobile',
checkType: 'phoneno',
errorMsg: this.$lang('enterCorrectMobileTip')
}];
if (this.captchaConfig == 1) {
if (this.captcha.id != '') rule.push({
name: 'captcha_code',
checkType: 'required',
errorMsg: this.$lang('captchaPlaceholder')
});
}
rule.push({
name: 'code',
checkType: 'required',
errorMsg: this.$lang('dynacodePlaceholder')
});
}
// 账号验证
if (this.loginMode == 'account') {
rule = [{
name: 'username',
checkType: 'required',
errorMsg: this.$lang('accountPlaceholder')
},
{
name: 'password',
checkType: 'required',
errorMsg: this.$lang('passwordPlaceholder')
}
];
if (this.captchaConfig == 1) {
if (this.captcha.id != '') rule.push({
name: 'captcha_code',
checkType: 'required',
errorMsg: this.$lang('captchaPlaceholder')
});
}
}
var checkRes = validate.check(data, rule);
if (checkRes) {
return true;
} else {
this.$util.showToast({
title: validate.error
});
return false;
}
},
mobileAuthLogin(e) {
if (e.detail.errMsg == 'getPhoneNumber:ok') {
var data = {
iv: e.detail.iv,
encryptedData: e.detail.encryptedData
};
if (Object.keys(this.authInfo).length) {
Object.assign(data, this.authInfo);
if (this.authInfo.nickName) data.nickname = this.authInfo.nickName;
if (this.authInfo.avatarUrl) data.headimg = this.authInfo.avatarUrl;
}
if (uni.getStorageSync('source_member')) data.source_member = uni.getStorageSync('source_member');
if (this.isSub) return;
this.isSub = true;
this.$api.sendRequest({
url: '/api/tripartite/mobileauth',
data,
success: res => {
if (res.code >= 0) {
var can_receive_registergift = res.data.can_receive_registergift;
this.$store.commit('setToken', res.data.token);
this.$store.dispatch('getCartNumber');
this.getMemberInfo(() => {
if (can_receive_registergift == 1) {
let back = this.back ? this.back : '/pages/member/index';
if(this.$refs.registerReward) this.$refs.registerReward.open(back);
} else {
if (this.back != '') {
this.$util.redirectTo(decodeURIComponent(this.back), {}, this.redirect);
} else {
this.$util.redirectTo('/pages/member/index', {}, this.redirect);
}
}
})
} else {
this.isSub = false;
this.$util.showToast({
title: res.message
});
}
},
fail: res => {
this.isSub = false;
this.$util.showToast({
title: this.$lang('requestFailTip')
});
}
});
}
},
/**
* 发送手机动态码
*/
sendMobileCode() {
if (this.dynacodeData.seconds != 120 || this.dynacodeData.isSend) return;
var data = {
mobile: this.formData.mobile,
captcha_id: this.captcha.id,
captcha_code: this.formData.vercode
};
var rule = [{
name: 'mobile',
checkType: 'required',
errorMsg: '请输入手机号'
}, {
name: 'mobile',
checkType: 'phoneno',
errorMsg: '请输入正确的手机号'
}];
if (this.captchaConfig == 1) {
rule.push({
name: 'captcha_code',
checkType: 'required',
errorMsg: this.$lang('enterCaptchaTip')
});
}
var checkRes = validate.check(data, rule);
if (!checkRes) {
this.$util.showToast({
title: validate.error
});
return;
}
this.dynacodeData.isSend = true;
this.dynacodeData.timer = setInterval(() => {
this.dynacodeData.seconds--;
this.dynacodeData.codeText = this.dynacodeData.seconds + 's后可重新获取';
}, 1000);
this.$api.sendRequest({
url: '/api/login/mobileCode',
data: data,
success: res => {
if (res.code >= 0) {
this.formData.key = res.data.key;
} else {
this.refreshDynacodeData();
this.$util.showToast({ this.$util.showToast({
title: res.message title: res.message
}); });
} }
}, },
fail: () => { fail: res => {
this.$util.showToast({ this.isSub = false;
title: 'request:fail' this.getCaptcha();
});
this.refreshDynacodeData();
}
});
},
refreshDynacodeData() {
this.getCaptcha();
clearInterval(this.dynacodeData.timer);
this.dynacodeData = {
seconds: 120,
timer: null,
codeText: '获取动态码',
isSend: false
};
},
getMemberInfo(callback) {
this.$api.sendRequest({
url: '/api/member/info',
success: (res) => {
if (res.code >= 0) {
// 登录成功,存储会员信息
this.$store.commit('setMemberInfo', res.data);
if (callback) callback();
}
} }
}); });
} }
}, },
watch: { /**
'dynacodeData.seconds': { * 登录验证
handler(newValue, oldValue) { * @param {Object} data
if (newValue == 0) { */
verify(data) {
let rule = [];
// 手机号验证
if (this.loginMode == 'mobile') {
rule = [{
name: 'mobile',
checkType: 'required',
errorMsg: this.$lang('enterMobileTip')
}, {
name: 'mobile',
checkType: 'phoneno',
errorMsg: this.$lang('enterCorrectMobileTip')
}];
if (this.captchaConfig == 1) {
if (this.captcha.id != '') rule.push({
name: 'captcha_code',
checkType: 'required',
errorMsg: this.$lang('captchaPlaceholder')
});
}
rule.push({
name: 'code',
checkType: 'required',
errorMsg: this.$lang('dynacodePlaceholder')
});
}
// 账号验证
if (this.loginMode == 'account') {
rule = [{
name: 'username',
checkType: 'required',
errorMsg: this.$lang('accountPlaceholder')
},
{
name: 'password',
checkType: 'required',
errorMsg: this.$lang('passwordPlaceholder')
}
];
if (this.captchaConfig == 1) {
if (this.captcha.id != '') rule.push({
name: 'captcha_code',
checkType: 'required',
errorMsg: this.$lang('captchaPlaceholder')
});
}
}
var checkRes = validate.check(data, rule);
if (checkRes) {
return true;
} else {
this.$util.showToast({
title: validate.error
});
return false;
}
},
mobileAuthLogin(e) {
if (e.detail.errMsg == 'getPhoneNumber:ok') {
var data = {
iv: e.detail.iv,
encryptedData: e.detail.encryptedData
};
if (Object.keys(this.authInfo).length) {
Object.assign(data, this.authInfo);
if (this.authInfo.nickName) data.nickname = this.authInfo.nickName;
if (this.authInfo.avatarUrl) data.headimg = this.authInfo.avatarUrl;
}
if (uni.getStorageSync('source_member')) data.source_member = uni.getStorageSync('source_member');
if (this.isSub) return;
this.isSub = true;
this.$api.sendRequest({
url: '/api/tripartite/mobileauth',
data,
success: res => {
if (res.code >= 0) {
var can_receive_registergift = res.data.can_receive_registergift;
this.$store.commit('setToken', res.data.token);
this.$store.dispatch('getCartNumber');
this.getMemberInfo(() => {
if (can_receive_registergift == 1) {
let back = this.back ? this.back : '/pages/member/index';
if (this.$refs.registerReward) this.$refs.registerReward.open(back);
} else {
if (this.back != '') {
this.$util.redirectTo(decodeURIComponent(this.back), {}, this.redirect);
} else {
this.$util.redirectTo('/pages/member/index', {}, this.redirect);
}
}
})
} else {
this.isSub = false;
this.$util.showToast({
title: res.message
});
}
},
fail: res => {
this.isSub = false;
this.$util.showToast({
title: this.$lang('requestFailTip')
});
}
});
}
},
/**
* 发送手机动态码
*/
sendMobileCode() {
if (this.dynacodeData.seconds != 120 || this.dynacodeData.isSend) return;
var data = {
mobile: this.formData.mobile,
captcha_id: this.captcha.id,
captcha_code: this.formData.vercode
};
var rule = [{
name: 'mobile',
checkType: 'required',
errorMsg: '请输入手机号'
}, {
name: 'mobile',
checkType: 'phoneno',
errorMsg: '请输入正确的手机号'
}];
if (this.captchaConfig == 1) {
rule.push({
name: 'captcha_code',
checkType: 'required',
errorMsg: this.$lang('enterCaptchaTip')
});
}
var checkRes = validate.check(data, rule);
if (!checkRes) {
this.$util.showToast({
title: validate.error
});
return;
}
this.dynacodeData.isSend = true;
this.dynacodeData.timer = setInterval(() => {
this.dynacodeData.seconds--;
this.dynacodeData.codeText = this.dynacodeData.seconds + 's后可重新获取';
}, 1000);
this.$api.sendRequest({
url: '/api/login/mobileCode',
data: data,
success: res => {
if (res.code >= 0) {
this.formData.key = res.data.key;
} else {
this.refreshDynacodeData(); this.refreshDynacodeData();
this.$util.showToast({
title: res.message
});
} }
}, },
immediate: true, fail: () => {
deep: true this.$util.showToast({
} title: 'request:fail'
});
this.refreshDynacodeData();
}
});
},
refreshDynacodeData() {
this.getCaptcha();
clearInterval(this.dynacodeData.timer);
this.dynacodeData = {
seconds: 120,
timer: null,
codeText: '获取动态码',
isSend: false
};
},
getMemberInfo(callback) {
this.$api.sendRequest({
url: '/api/member/info',
success: (res) => {
if (res.code >= 0) {
// 登录成功,存储会员信息
this.$store.commit('setMemberInfo', res.data);
if (callback) callback();
}
}
});
} }
}; },
watch: {
'dynacodeData.seconds': {
handler(newValue, oldValue) {
if (newValue == 0) {
this.refreshDynacodeData();
}
},
immediate: true,
deep: true
}
}
};
</script> </script>
<style lang="scss"> <style lang="scss">
@import './public/css/common.scss'; @import './public/css/common.scss';
.color-base-text{
color:#2796f2 !important .color-base-text {
} color: #2796f2 !important
}
</style> </style>
<style lang="scss" scoped> <style lang="scss" scoped>
/deep/ .reward-popup .uni-popup__wrapper-box { /deep/ .reward-popup .uni-popup__wrapper-box {
background: none !important; background: none !important;
max-width: unset !important; max-width: unset !important;
max-height: unset !important; max-height: unset !important;
overflow: unset !important; overflow: unset !important;
} }
/deep/ uni-toast .uni-simple-toast__text { /deep/ uni-toast .uni-simple-toast__text {
background: red !important; background: red !important;
} }
</style> </style>

View File

@@ -1,5 +1,4 @@
<template> <template>
<page-meta :page-style="themeColor"></page-meta>
<view :style="themeColor"> <view :style="themeColor">
<mescroll-uni ref="mescroll" @getData="getData" v-if="storeToken"> <mescroll-uni ref="mescroll" @getData="getData" v-if="storeToken">
<block slot="list"> <block slot="list">

View File

@@ -1,6 +1,5 @@
<template> <template>
<page-meta :page-style="themeColor"></page-meta> <view class="account-list-content" :style="themeColor">
<view class="account-list-content">
<view class="edit-item"> <view class="edit-item">
<text class="tit">{{ $lang('name') }}</text> <text class="tit">{{ $lang('name') }}</text>
<input class="desc uni-input" type="text" maxlength="30" placeholder="请输入真实姓名" name="name" v-model="formData.realname" /> <input class="desc uni-input" type="text" maxlength="30" placeholder="请输入真实姓名" name="name" v-model="formData.realname" />

View File

@@ -1,5 +1,4 @@
<template> <template>
<page-meta :page-style="themeColor"></page-meta>
<view :style="themeColor"> <view :style="themeColor">
<mescroll-uni ref="mescroll" @getData="getListData" v-if="storeToken"> <mescroll-uni ref="mescroll" @getData="getListData" v-if="storeToken">
<block slot="list"> <block slot="list">

View File

@@ -1,6 +1,5 @@
<template> <template>
<page-meta :page-style="themeColor"></page-meta> <view class="address-edit-content" :style="themeColor">
<view class="address-edit-content">
<view class="edit-wrap"> <view class="edit-wrap">
<view class="tip">地址信息</view> <view class="tip">地址信息</view>
<view class="edit-item"> <view class="edit-item">

View File

@@ -1,6 +1,5 @@
<template> <template>
<page-meta :page-style="themeColor"></page-meta> <view class="container" :style="themeColor">
<view class="container">
<view class="bank-account-wrap" @click="goAccount()"> <view class="bank-account-wrap" @click="goAccount()">
<view class="tx-wrap" v-if="bankAccountInfo.withdraw_type"> <view class="tx-wrap" v-if="bankAccountInfo.withdraw_type">
<text class="tx-to">提现到</text> <text class="tx-to">提现到</text>

View File

@@ -1,6 +1,5 @@
<template> <template>
<page-meta :page-style="themeColor"></page-meta> <view class="container" :style="themeColor">
<view class="container">
<view class="assets-wrap"> <view class="assets-wrap">
<view class="assets-block"> <view class="assets-block">
<view class="assets-tips"><text>风险提示确认申请后您的资产将被清空且不可找回!</text></view> <view class="assets-tips"><text>风险提示确认申请后您的资产将被清空且不可找回!</text></view>

View File

@@ -1,6 +1,5 @@
<template> <template>
<page-meta :page-style="themeColor"></page-meta> <view class="balance" :style="themeColor">
<view class="balance">
<!-- #ifdef MP-WEIXIN --> <!-- #ifdef MP-WEIXIN -->
<view class="custom-navbar" :style="{ <view class="custom-navbar" :style="{
'padding-top': menuButtonBounding.top + 'px', 'padding-top': menuButtonBounding.top + 'px',

View File

@@ -1,5 +1,4 @@
<template> <template>
<page-meta :page-style="themeColor"></page-meta>
<view :style="themeColor"> <view :style="themeColor">
<!-- <scroll-view id="tab-bar" class="order-nav" :scroll-x="true" :show-scrollbar="false" :scroll-into-view="scrollInto"> <!-- <scroll-view id="tab-bar" class="order-nav" :scroll-x="true" :show-scrollbar="false" :scroll-into-view="scrollInto">
<view v-for="(statusItem, statusIndex) in statusList" :key="statusIndex" class="uni-tab-item" :id="statusItem.id" :data-current="statusIndex" @click="ontabtap"> <view v-for="(statusItem, statusIndex) in statusList" :key="statusIndex" class="uni-tab-item" :id="statusItem.id" :data-current="statusIndex" @click="ontabtap">

View File

@@ -1,6 +1,5 @@
<template> <template>
<page-meta :page-style="themeColor"></page-meta> <view class="container" :style="themeColor">
<view class="container">
<view class="agreement-box"> <view class="agreement-box">
<view class="agreement-intro"> <view class="agreement-intro">
<view class="align-center agreement-title">{{ agreement.title }}</view> <view class="align-center agreement-title">{{ agreement.title }}</view>

View File

@@ -1,6 +1,5 @@
<template> <template>
<page-meta :page-style="themeColor"></page-meta> <view class="container" :style="themeColor">
<view class="container">
<view class="cancel-wrap"> <view class="cancel-wrap">
<view class="cancel-img"><image :src="$util.img('public/uniapp/member/refuse.png')"></image></view> <view class="cancel-img"><image :src="$util.img('public/uniapp/member/refuse.png')"></image></view>
<view class="cancel-title">您的申请已拒绝</view> <view class="cancel-title">您的申请已拒绝</view>

View File

@@ -1,6 +1,5 @@
<template> <template>
<page-meta :page-style="themeColor"></page-meta> <view class="container" :style="themeColor">
<view class="container">
<view class="cancelstatus-wrap"> <view class="cancelstatus-wrap">
<view class="cancelstatus-block"> <view class="cancelstatus-block">
<view class="cancelstatus-box"> <view class="cancelstatus-box">

View File

@@ -1,6 +1,5 @@
<template> <template>
<page-meta :page-style="themeColor"></page-meta> <view class="container" :style="themeColor">
<view class="container">
<view class="cancel-wrap"> <view class="cancel-wrap">
<view class="cancel-img"> <view class="cancel-img">
<image :src="$util.img('public/uniapp/member/success.png')"></image> <image :src="$util.img('public/uniapp/member/success.png')"></image>

View File

@@ -1,6 +1,5 @@
<template> <template>
<page-meta :page-style="themeColor"></page-meta> <view class="member-level" :style="themeColor">
<view class="member-level">
<view class="level-top"> <view class="level-top">
<image :src="$util.img('public/uniapp/level/card-top-bg.png')"></image> <image :src="$util.img('public/uniapp/level/card-top-bg.png')"></image>
</view> </view>

View File

@@ -1,6 +1,5 @@
<template> <template>
<page-meta :page-style="themeColor"></page-meta> <view class="page" :style="themeColor">
<view class="page">
<view class="agreement-title">{{ title }}</view> <view class="agreement-title">{{ title }}</view>
<view class="agreement-content"><rich-text :nodes="content"></rich-text></view> <view class="agreement-content"><rich-text :nodes="content"></rich-text></view>
</view> </view>

View File

@@ -1,6 +1,5 @@
<template> <template>
<page-meta :page-style="themeColor"></page-meta> <view class="member-level" :style="themeColor">
<view class="member-level">
<block v-if="levelList.length"> <block v-if="levelList.length">
<view class="level-top"> <view class="level-top">
<image :src="$util.img('public/uniapp/level/card-top-bg.png')"></image> <image :src="$util.img('public/uniapp/level/card-top-bg.png')"></image>

View File

@@ -1,5 +1,4 @@
<template> <template>
<page-meta :page-style="themeColor"></page-meta>
<view :style="themeColor"> <view :style="themeColor">
<mescroll-uni ref="mescroll" @getData="getData" class="member-point" :size="8" @listenRefresh="listenRefresh" v-if="storeToken"> <mescroll-uni ref="mescroll" @getData="getData" class="member-point" :size="8" @listenRefresh="listenRefresh" v-if="storeToken">
<view class="goods_list" slot="list"> <view class="goods_list" slot="list">

View File

@@ -1,6 +1,5 @@
<template> <template>
<page-meta :page-style="themeColor"></page-meta> <view class="contact" :style="themeColor">
<view class="contact">
<image :src="$util.img('public/uniapp/member/contact_service.png')" mode="widthFix"></image> <image :src="$util.img('public/uniapp/member/contact_service.png')" mode="widthFix"></image>
<!--<ns-contact><button type="primary">联系客服</button></ns-contact>--> <!--<ns-contact><button type="primary">联系客服</button></ns-contact>-->
</view> </view>

View File

@@ -1,6 +1,5 @@
<template> <template>
<page-meta :page-style="themeColor"></page-meta> <view :style="themeColor" :class="isIphoneX ? 'iphone-x' : ''">
<view :class="isIphoneX ? 'iphone-x' : ''">
<view class="cf-container color-line-border" v-if="storeToken"> <view class="cf-container color-line-border" v-if="storeToken">
<view class="tab"> <view class="tab">
<view @click="changeState(1)"><text :class="state == 1 ? 'color-base-text active color-base-border-bottom' : ''">未使用</text></view> <view @click="changeState(1)"><text :class="state == 1 ? 'color-base-text active color-base-border-bottom' : ''">未使用</text></view>

View File

@@ -1,6 +1,5 @@
<template> <template>
<page-meta :page-style="themeColor"></page-meta> <view class="container" :style="themeColor">
<view class="container">
<view class="head-wrap" v-if="storeToken"> <view class="head-wrap" v-if="storeToken">
<text @click="manageFootprint">{{ manage ? '完成' : '管理' }}</text> <text @click="manageFootprint">{{ manage ? '完成' : '管理' }}</text>
</view> </view>

View File

@@ -1,6 +1,5 @@
<template> <template>
<page-meta :page-style="themeColor"></page-meta> <view :style="themeColor + ';' + { backgroundColor: bgColor, minHeight: openBottomNav ? 'calc(100vh - 55px)' : '' }" class="page-img">
<view :style="{ backgroundColor: bgColor, minHeight: openBottomNav ? 'calc(100vh - 55px)' : '' }" class="page-img">
<view class="page-header" v-if="diyData.global && diyData.global.navBarSwitch" <view class="page-header" v-if="diyData.global && diyData.global.navBarSwitch"
:style="{ backgroundImage: bgImg }"> :style="{ backgroundImage: bgImg }">
<ns-navbar :title-color="textNavColor" :data="diyData.global" :scrollTop="scrollTop" :isBack="true" /> <ns-navbar :title-color="textNavColor" :data="diyData.global" :scrollTop="scrollTop" :isBack="true" />

View File

@@ -1,5 +1,4 @@
<template> <template>
<page-meta :page-style="themeColor"></page-meta>
<view :style="themeColor"> <view :style="themeColor">
<view v-if="indent == 'all' && memberInfo" class="info-wrap"> <view v-if="indent == 'all' && memberInfo" class="info-wrap">
<!-- 头像@click="headImage" --> <!-- 头像@click="headImage" -->

View File

@@ -1,5 +1,4 @@
<template> <template>
<page-meta :page-style="themeColor"></page-meta>
<view :style="themeColor"> <view :style="themeColor">
<template v-if="memberInfo"> <template v-if="memberInfo">
<!-- 修改用户名 --> <!-- 修改用户名 -->

View File

@@ -1,5 +1,4 @@
<template> <template>
<page-meta :page-style="themeColor"></page-meta>
<view :style="themeColor"> <view :style="themeColor">
<view v-if="info" style="background-color: #fff;"> <view v-if="info" style="background-color: #fff;">

View File

@@ -1,6 +1,5 @@
<template> <template>
<page-meta :page-style="themeColor"></page-meta> <view :style="themeColor" class="member-level">
<view class="member-level">
<view class="level-top"> <view class="level-top">
<image :src="$util.img('public/uniapp/level/level-top-bg.png')"></image> <image :src="$util.img('public/uniapp/level/level-top-bg.png')"></image>
</view> </view>

View File

@@ -1,275 +1,274 @@
<template> <template>
<page-meta :page-style="themeColor"></page-meta> <view :style="themeColor" class="member-level">
<view class="member-level"> <view class="grow-explain">
<view class="grow-explain"> <view class="explain-title">
<view class="explain-title"> <image :src="$util.img('public/uniapp/level/growth_that_left.png')" mode="aspectFit"></image>
<image :src="$util.img('public/uniapp/level/growth_that_left.png')" mode="aspectFit"></image> 成长值说明
成长值说明 <image :src="$util.img('public/uniapp/level/growth_that_right.png')" mode="aspectFit"></image>
<image :src="$util.img('public/uniapp/level/growth_that_right.png')" mode="aspectFit"></image> </view>
</view> <view class="explain-table">
<view class="explain-table"> <view class="explain-tr">
<view class="explain-tr"> <text class="explain-th">等级</text>
<text class="explain-th">等级</text> <text class="explain-th">成长值</text>
<text class="explain-th">成长值</text> </view>
</view> <view class="explain-tr" v-for="(item, index) in levelList" :key="index">
<view class="explain-tr" v-for="(item, index) in levelList" :key="index"> <text class="explain-td">{{ item.level_name }}</text>
<text class="explain-td">{{ item.level_name }}</text> <text class="explain-td">{{ item.growth }}</text>
<text class="explain-td">{{ item.growth }}</text> </view>
</view> </view>
</view> </view>
</view> <view class="grow-value">
<view class="grow-value"> <view class="title">
<view class="title"> <image :src="$util.img('public/uniapp/level/explain.png')" mode="aspectFit"></image>
<image :src="$util.img('public/uniapp/level/explain.png')" mode="aspectFit"></image> <text>什么是成长值</text>
<text>什么是成长值</text> </view>
</view> <view class="content color-tip">成长值是消费者在店铺成为会员后通过消费计算出来的值成长值决定会员等级会员等级越高所享受的会员权益和会员礼包就越多</view>
<view class="content color-tip">成长值是消费者在店铺成为会员后通过消费计算出来的值成长值决定会员等级会员等级越高所享受的会员权益和会员礼包就越多</view> </view>
</view> <view class="acquisition-grow">
<view class="acquisition-grow"> <view class="title">
<view class="title"> <image :src="$util.img('public/uniapp/level/explain.png')" mode="aspectFit"></image>
<image :src="$util.img('public/uniapp/level/explain.png')" mode="aspectFit"></image> <text>如何获得成长值</text>
<text>如何获得成长值</text> </view>
</view> <view class="content color-tip">
<view class="content color-tip"> <text>1注册会员送x成长值</text>
<text>1注册会员送x成长值</text> <text>2会员充值到余额送x成长值</text>
<text>2会员充值到余额送x成长值</text> <text>3会员签到送x成长值</text>
<text>3会员签到送x成长值</text> <text>4会员消费x元交易完成即可获得x个成长值</text>
<text>4会员消费x元交易完成即可获得x个成长值</text> </view>
</view> </view>
</view>
<to-top v-if="showTop" @toTop="scrollToTopNative()"></to-top>
<to-top v-if="showTop" @toTop="scrollToTopNative()"></to-top> <loading-cover ref="loadingCover"></loading-cover>
<loading-cover ref="loadingCover"></loading-cover> </view>
</view> </template>
</template>
<script>
<script> import nsProgress from '@/pages_tool/components/ns-progress/ns-progress.vue';
import nsProgress from '@/pages_tool/components/ns-progress/ns-progress.vue'; import toTop from '@/components/toTop/toTop.vue';
import toTop from '@/components/toTop/toTop.vue'; import scroll from '@/common/js/scroll-view.js';
import scroll from '@/common/js/scroll-view.js';
export default {
export default { components: {
components: { nsProgress,
nsProgress, toTop
toTop },
}, mixins: [scroll],
mixins: [scroll], data() {
data() { return {
return { curIndex: 0,
curIndex: 0, descIndex: 0,
descIndex: 0, isDescAnimating: false,
isDescAnimating: false, scaleX: (634 / 540).toFixed(4),
scaleX: (634 / 540).toFixed(4), scaleY: (378 / 330).toFixed(4),
scaleY: (378 / 330).toFixed(4), swiperConfig: {
swiperConfig: { //type==1时的默认参数
//type==1时的默认参数 indicatorDots: false,
indicatorDots: false, indicatorColor: 'rgba(255, 255, 255, .4)',
indicatorColor: 'rgba(255, 255, 255, .4)', indicatorActiveColor: 'rgba(255, 255, 255, 1)',
indicatorActiveColor: 'rgba(255, 255, 255, 1)', interval: 3000,
interval: 3000, duration: 300,
duration: 300, circular: false,
circular: false, previousMargin: '58rpx',
previousMargin: '58rpx', nextMargin: '58rpx'
nextMargin: '58rpx' },
}, levelList: [{
levelList: [{ needGrowth: 0,
needGrowth: 0, growth: 0
growth: 0 }],
}], levelId: 0,
levelId: 0, growth: 0,
growth: 0,
nowIndex: 0, //我当前所在等级的index
nowIndex: 0, //我当前所在等级的index rule: [] //成长值规则
rule: [] //成长值规则 };
}; },
}, computed: {
computed: { listLen() {
listLen() { return this.levelList.length;
return this.levelList.length; },
}, },
}, onLoad() {
onLoad() { //会员等级
//会员等级 this.getLevelList();
this.getLevelList(); this.getLevelRule();
this.getLevelRule(); },
}, onShow() {},
onShow() {}, filters: {
filters: { rate(index, list, growth) {
rate(index, list, growth) { let nowGrowth = Number(growth);
let nowGrowth = Number(growth); let minGrouth = Number(list[index].growth);
let minGrouth = Number(list[index].growth); if (index == list.length - 1) {
if (index == list.length - 1) { return nowGrowth > minGrouth ? 100 : 0;
return nowGrowth > minGrouth ? 100 : 0; } else {
} else { let maxGrouth = Number(list[index + 1].growth);
let maxGrouth = Number(list[index + 1].growth); let num2 = nowGrowth - minGrouth;
let num2 = nowGrowth - minGrouth; let num1 = maxGrouth - minGrouth;
let num1 = maxGrouth - minGrouth; let num = Math.floor((num2 / num1) * 100);
let num = Math.floor((num2 / num1) * 100); return num > 100 ? 100 : num;
return num > 100 ? 100 : num; }
} }
} },
}, methods: {
methods: { swiperChange(e) {
swiperChange(e) { let that = this;
let that = this; this.curIndex = e.detail.current;
this.curIndex = e.detail.current; this.isDescAnimating = true;
this.isDescAnimating = true; let timer = setTimeout(function() {
let timer = setTimeout(function() { that.descIndex = e.detail.current;
that.descIndex = e.detail.current; clearTimeout(timer);
clearTimeout(timer); }, 150);
}, 150); },
}, animationfinish(e) {
animationfinish(e) { this.isDescAnimating = false;
this.isDescAnimating = false; },
}, getBannerDetail(index) {
getBannerDetail(index) { uni.showLoading({
uni.showLoading({ title: '将前往详情页面',
title: '将前往详情页面', duration: 2000,
duration: 2000, mask: true
mask: true });
}); },
}, getLevelList() {
getLevelList() { this.$api.sendRequest({
this.$api.sendRequest({ url: '/api/memberlevel/lists',
url: '/api/memberlevel/lists', success: res => {
success: res => { if (res.data && res.code == 0) {
if (res.data && res.code == 0) { this.levelList = res.data;
this.levelList = res.data; this.levelId = this.memberInfo.member_level;
this.levelId = this.memberInfo.member_level; this.growth = this.memberInfo.growth;
this.growth = this.memberInfo.growth; for (let i = 0; i < this.levelList.length; i++) {
for (let i = 0; i < this.levelList.length; i++) { if (this.levelList[i].level_id == this.levelId) {
if (this.levelList[i].level_id == this.levelId) { this.curIndex = i;
this.curIndex = i; this.descIndex = i;
this.descIndex = i; this.nowIndex = i;
this.nowIndex = i; break;
break; }
} }
} this.levelList.forEach((v, i) => {
this.levelList.forEach((v, i) => { let rate = 0;
let rate = 0; if (i != this.levelList.length - 1) {
if (i != this.levelList.length - 1) { v.needGrowth = Number(this.levelList[i + 1].growth) - Number(this.growth); //距离下一阶段需要多少成长值
v.needGrowth = Number(this.levelList[i + 1].growth) - Number(this.growth); //距离下一阶段需要多少成长值
if (v.needGrowth <= 0) {
if (v.needGrowth <= 0) { rate = 100;
rate = 100; } else {
} else { rate = (this.growth / this.levelList[i + 1].growth).toFixed(2) * 100;
rate = (this.growth / this.levelList[i + 1].growth).toFixed(2) * 100; }
} } else {
} else { v.needGrowth = Number(this.levelList[i].growth) - Number(this.growth); //距离下一阶段需要多少成长值
v.needGrowth = Number(this.levelList[i].growth) - Number(this.growth); //距离下一阶段需要多少成长值 if (v.needGrowth <= 0) {
if (v.needGrowth <= 0) { rate = 100;
rate = 100; } else {
} else { rate = (this.growth / this.levelList[i].growth).toFixed(2) * 100;
rate = (this.growth / this.levelList[i].growth).toFixed(2) * 100; }
} }
} v.rate = rate;
v.rate = rate; });
});
this.levelList.forEach(v => {
this.levelList.forEach(v => { if (v.consume_discount) {
if (v.consume_discount) { v.consume_discount = (v.consume_discount / 10).toFixed(2);
v.consume_discount = (v.consume_discount / 10).toFixed(2); }
} });
}); if (this.$refs.loadingCover) this.$refs.loadingCover.hide();
if (this.$refs.loadingCover) this.$refs.loadingCover.hide(); } else {
} else { this.$util.showToast({
this.$util.showToast({ title: res.message
title: res.message });
}); if (this.$refs.loadingCover) this.$refs.loadingCover.hide();
if (this.$refs.loadingCover) this.$refs.loadingCover.hide(); }
} }
} });
}); },
}, getLevelRule() {
getLevelRule() { this.$api.sendRequest({
this.$api.sendRequest({ url: '/api/member/accountrule',
url: '/api/member/accountrule', success: res => {
success: res => { if (res.code == 0 && res.data && res.data.growth) {
if (res.code == 0 && res.data && res.data.growth) { this.rule = res.data.growth;
this.rule = res.data.growth; }
} }
} });
}); }
} }
} };
}; </script>
</script>
<style lang="scss">
<style lang="scss"> page {
page { background-color: #fff;
background-color: #fff; }
}
.grow-explain {
.grow-explain { padding: 30rpx;
padding: 30rpx; margin-top: 30rpx;
margin-top: 30rpx;
.explain-title {
.explain-title { display: flex;
display: flex; align-items: center;
align-items: center; justify-content: center;
justify-content: center; line-height: 1;
line-height: 1;
image {
image { margin: 0 20rpx;
margin: 0 20rpx; width: 54rpx;
width: 54rpx; height: 18rpx;
height: 18rpx; }
}
margin-bottom: 40rpx;
margin-bottom: 40rpx; }
}
.explain-tr {
.explain-tr { display: flex;
display: flex; }
}
.explain-th {
.explain-th { padding: 10rpx 30rpx;
padding: 10rpx 30rpx;
&~.explain-th {
&~.explain-th { border-left: 4rpx solid #fff;
border-left: 4rpx solid #fff; }
}
flex: 1;
flex: 1; background-color: #f6f1e4;
background-color: #f6f1e4; }
}
.explain-td {
.explain-td { padding: 10rpx 30rpx;
padding: 10rpx 30rpx;
&~.explain-td {
&~.explain-td { border-left: 4rpx solid #fff;
border-left: 4rpx solid #fff; }
}
height: 60rpx;
height: 60rpx; line-height: 60rpx;
line-height: 60rpx; flex: 1;
flex: 1; background-color: #fcfbf7;
background-color: #fcfbf7; }
} }
}
.grow-value,
.grow-value, .acquisition-grow {
.acquisition-grow { padding: 0 30rpx 30rpx;
padding: 0 30rpx 30rpx;
.title {
.title { display: flex;
display: flex; align-items: center;
align-items: center;
image {
image { width: 30rpx;
width: 30rpx; height: 30rpx;
height: 30rpx; margin-right: 10rpx;
margin-right: 10rpx; }
} }
}
.content {
.content { font-size: 24rpx;
font-size: 24rpx; margin-left: 40rpx;
margin-left: 40rpx;
text {
text { display: block;
display: block; }
} }
} }
}
</style> </style>

View File

@@ -1,6 +1,5 @@
<template> <template>
<page-meta :page-style="themeColor"></page-meta> <view :style="themeColor" class="nc-modify-content">
<view class="nc-modify-content">
<view class="modify"> <view class="modify">
<view> <view>
<image v-if="newImg == ''" :src="memberImg ? $util.img(memberImg) : $util.getDefaultImage().head" @error="memberImg = $util.getDefaultImage().head" mode="aspectFill"/> <image v-if="newImg == ''" :src="memberImg ? $util.img(memberImg) : $util.getDefaultImage().head" @error="memberImg = $util.getDefaultImage().head" mode="aspectFill"/>

View File

@@ -1,6 +1,5 @@
<template> <template>
<page-meta :page-style="themeColor"></page-meta> <view :style="themeColor" class="container">
<view class="container">
<view class="tips" v-if="step != 0">请输入6位支付密码建议不要使用重复或连续数字</view> <view class="tips" v-if="step != 0">请输入6位支付密码建议不要使用重复或连续数字</view>
<view class="tips" v-else>验证码已发送至{{ memberInfo.mobile | mobile }}请在下方输入4位数字验证码</view> <view class="tips" v-else>验证码已发送至{{ memberInfo.mobile | mobile }}请在下方输入4位数字验证码</view>
<view class="password-wrap"> <view class="password-wrap">

View File

@@ -1,6 +1,5 @@
<template> <template>
<page-meta :page-style="themeColor"></page-meta> <view :style="themeColor" class="point">
<view class="point">
<!-- #ifdef MP-WEIXIN --> <!-- #ifdef MP-WEIXIN -->
<view class="custom-navbar" :style="{ <view class="custom-navbar" :style="{
'padding-top': menuButtonBounding.top + 'px', 'padding-top': menuButtonBounding.top + 'px',

View File

@@ -1,5 +1,4 @@
<template> <template>
<page-meta :page-style="themeColor"></page-meta>
<view :style="themeColor"> <view :style="themeColor">
<!-- <view class="tab color-bg"> <!-- <view class="tab color-bg">
<view class="tab-left"> <view class="tab-left">

View File

@@ -1,5 +1,4 @@
<template> <template>
<page-meta :page-style="themeColor"></page-meta>
<view :style="themeColor"> <view :style="themeColor">
<mescroll-uni @getData="getData" class="member-point"> <mescroll-uni @getData="getData" class="member-point">
<view slot="list"> <view slot="list">

View File

@@ -1,5 +1,4 @@
<template> <template>
<page-meta :page-style="themeColor"></page-meta>
<view :style="themeColor"> <view :style="themeColor">
<view class="money-wrap"> <view class="money-wrap">
<text>-{{ detail.apply_money }}</text> <text>-{{ detail.apply_money }}</text>

View File

@@ -1,6 +1,5 @@
<template> <template>
<page-meta :page-style="themeColor"></page-meta> <view :style="themeColor" class="page">
<view class="page">
<view class="notice-title">{{ detail.title }}</view> <view class="notice-title">{{ detail.title }}</view>
<view class="notice-meta"> <view class="notice-meta">
<text class="notice-time">发表时间: {{ $util.timeStampTurnTime(detail.create_time) }}</text> <text class="notice-time">发表时间: {{ $util.timeStampTurnTime(detail.create_time) }}</text>

View File

@@ -1,5 +1,4 @@
<template> <template>
<page-meta :page-style="themeColor"></page-meta>
<view :style="themeColor"> <view :style="themeColor">
<mescroll-uni @getData="getData" ref="mescroll"> <mescroll-uni @getData="getData" ref="mescroll">
<block slot="list"> <block slot="list">

View File

@@ -1,6 +1,5 @@
<template> <template>
<page-meta :page-style="themeColor"></page-meta> <view :style="themeColor" class="activist-container">
<view class="activist-container">
<mescroll-uni ref="mescroll" @getData="getListData"> <mescroll-uni ref="mescroll" @getData="getListData">
<block slot="list"> <block slot="list">
<view class="container"> <view class="container">

View File

@@ -1,5 +1,4 @@
<template> <template>
<page-meta :page-style="themeColor"></page-meta>
<view :style="themeColor"> <view :style="themeColor">
<loading-cover ref="loadingCover"></loading-cover> <loading-cover ref="loadingCover"></loading-cover>
</view> </view>

View File

@@ -1,5 +1,4 @@
<template> <template>
<page-meta :page-style="themeColor"></page-meta>
<view :style="themeColor"> <view :style="themeColor">
<view> <view>
<view class="page"> <view class="page">

View File

@@ -1,5 +1,4 @@
<template> <template>
<page-meta :page-style="themeColor"></page-meta>
<view :style="themeColor"> <view :style="themeColor">
<scroll-view class="order-nav" :scroll-x="true" :show-scrollbar="false"> <scroll-view class="order-nav" :scroll-x="true" :show-scrollbar="false">
<view v-for="(packageItem, packageIndex) in packageList" :key="packageIndex" class="uni-tab-item" @click="ontabtap(packageIndex)"> <view v-for="(packageItem, packageIndex) in packageList" :key="packageIndex" class="uni-tab-item" @click="ontabtap(packageIndex)">

View File

@@ -1,5 +1,4 @@
<template> <template>
<page-meta :page-style="themeColor"></page-meta>
<view :style="themeColor"> <view :style="themeColor">
<view> <view>
<scroll-view scroll-y="true" class="refund-container"> <scroll-view scroll-y="true" class="refund-container">

View File

@@ -1,5 +1,4 @@
<template> <template>
<page-meta :page-style="themeColor"></page-meta>
<view :style="themeColor"> <view :style="themeColor">
<view> <view>
<scroll-view scroll-y="true" class="refund-container"> <scroll-view scroll-y="true" class="refund-container">

View File

@@ -1,5 +1,4 @@
<template> <template>
<page-meta :page-style="themeColor"></page-meta>
<view :style="themeColor"> <view :style="themeColor">
<scroll-view scroll-y="true" class="detail-container" :class="{ 'safe-area': isIphoneX }" v-if="detail"> <scroll-view scroll-y="true" class="detail-container" :class="{ 'safe-area': isIphoneX }" v-if="detail">
<view v-show="action == ''"> <view v-show="action == ''">

View File

@@ -1,6 +1,5 @@
<template> <template>
<page-meta :page-style="themeColor"></page-meta> <view class="goods-select" :style="themeColor">
<view class="goods-select">
<view class="top"> <view class="top">
<text class="color-base-text">{{refund_data.length}}</text>件商品 <text class="color-base-text">{{refund_data.length}}</text>件商品
</view> </view>

View File

@@ -1,5 +1,4 @@
<template> <template>
<page-meta :page-style="themeColor"></page-meta>
<view :style="themeColor"> <view :style="themeColor">
<view> <view>
<view class="refund-option"> <view class="refund-option">

View File

@@ -1,6 +1,5 @@
<template> <template>
<page-meta :page-style="themeColor"></page-meta> <view class="cashier" :style="themeColor">
<view class="cashier">
<block v-if="payInfo"> <block v-if="payInfo">
<block v-if="payInfo.pay_status == 0"> <block v-if="payInfo.pay_status == 0">
<text class="content">{{ payInfo.pay_body }}</text> <text class="content">{{ payInfo.pay_body }}</text>
@@ -31,11 +30,11 @@
</template> </template>
<script> <script>
import { Weixin } from 'common/js/wx-jssdk.js'; import { Weixin } from 'common/js/wx-jssdk.js';
import nsLogin from '@/components/ns-login/ns-login.vue'; import nsLogin from '@/components/ns-login/ns-login.vue';
import nsEmpty from '@/components/ns-empty/ns-empty.vue'; import nsEmpty from '@/components/ns-empty/ns-empty.vue';
export default { export default {
components: { nsLogin, nsEmpty }, components: { nsLogin, nsEmpty },
data() { data() {
return { return {

View File

@@ -1,21 +1,22 @@
<template> <template>
<page-meta :page-style="themeColor"></page-meta> <view :style="themeColor">
<scroll-view scroll-y="true" class="pay-container"> <scroll-view scroll-y="true" class="pay-container">
<view class="payment-amount"> <view class="payment-amount">
<text class="amount-tit">{{ $lang('paymentAmount') }}</text> <text class="amount-tit">{{ $lang('paymentAmount') }}</text>
<view class="amount-num"> <view class="amount-num">
{{ $lang('common.currencySymbol') }} {{ $lang('common.currencySymbol') }}
<text>{{ payInfo.pay_money }}</text> <text>{{ payInfo.pay_money }}</text>
</view>
<view class="payment-name">{{ payInfo.pay_body }}</view>
</view> </view>
<view class="payment-name">{{ payInfo.pay_body }}</view>
</view>
<loading-cover ref="loadingCover"></loading-cover> <loading-cover ref="loadingCover"></loading-cover>
</scroll-view> </scroll-view>
</view>
</template> </template>
<script> <script>
export default { export default {
components: {}, components: {},
data() { data() {
@@ -71,38 +72,45 @@ export default {
width: 100vw; width: 100vw;
height: 100vh; height: 100vh;
} }
@mixin flex-column { @mixin flex-column {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
} }
@mixin flex-row { @mixin flex-row {
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: space-between; justify-content: space-between;
} }
.payment-amount { .payment-amount {
@include flex-column; @include flex-column;
margin: $margin-updown $margin-both; margin: $margin-updown $margin-both;
border-radius: 8rpx; border-radius: 8rpx;
padding: 20rpx 0 58rpx 0; padding: 20rpx 0 58rpx 0;
background-color: #fff; background-color: #fff;
.amount-tit { .amount-tit {
font-size: $font-size-base; font-size: $font-size-base;
color: #838383; color: #838383;
line-height: 1; line-height: 1;
margin-top: 44rpx; margin-top: 44rpx;
} }
.amount-num { .amount-num {
color: #000; color: #000;
margin-top: 36rpx; margin-top: 36rpx;
line-height: 1; line-height: 1;
text { text {
font-size: $font-size-toolbar; font-size: $font-size-toolbar;
color: #000; color: #000;
} }
} }
.amount-desc { .amount-desc {
font-size: $font-size-tag; font-size: $font-size-tag;
color: #838383; color: #838383;
@@ -111,6 +119,7 @@ export default {
box-sizing: border-box; box-sizing: border-box;
text-align: center; text-align: center;
line-height: 1; line-height: 1;
text { text {
width: 100%; width: 100%;
display: block; display: block;
@@ -119,6 +128,7 @@ export default {
white-space: nowrap; white-space: nowrap;
} }
} }
.payment-name { .payment-name {
width: 90%; width: 90%;
overflow: hidden; overflow: hidden;

View File

@@ -1,6 +1,5 @@
<template> <template>
<page-meta :page-style="themeColor"></page-meta> <view class="container" :style="themeColor">
<view class="container">
<template v-if="payInfo.pay_status != undefined"> <template v-if="payInfo.pay_status != undefined">
<view class="result-box"> <view class="result-box">
<template v-if="payInfo.pay_status"> <template v-if="payInfo.pay_status">

View File

@@ -1,94 +1,93 @@
<template> <template>
<page-meta :page-style="themeColor"></page-meta> <view class="launch-mask" v-if="show == true" :style="themeColor">
<view class="launch-mask" v-if="show == true"> <view class="mask-img">
<view class="mask-img"> <image :src="$util.img('public/uniapp/pay/invite_friends_share.png')" mode="aspectFit"></image>
<image :src="$util.img('public/uniapp/pay/invite_friends_share.png')" mode="aspectFit"></image> </view>
</view> <view class="mask-word">点击右上角跳转到浏览器打开</view>
<view class="mask-word">点击右上角跳转到浏览器打开</view> </view>
</view> </template>
</template> <script>
<script>
export default {
export default { name: 'wx_pay',
name: 'wx_pay', data() {
data() { return {
return { show : true,
show : true, wx_alipay : "",
wx_alipay : "", out_trade_no : ""
out_trade_no : "" };
}; },
}, onLoad(options) {
onLoad(options) { this.wx_alipay = options.wx_alipay || '';
this.wx_alipay = options.wx_alipay || ''; this.out_trade_no = options.out_trade_no || '';
this.out_trade_no = options.out_trade_no || ''; if(!this.$util.isWeiXin() && this.wx_alipay){
if(!this.$util.isWeiXin() && this.wx_alipay){ this.show = false;
this.show = false; location.href = this.wx_alipay;
location.href = this.wx_alipay; }
} this.checkPayStatus();
this.checkPayStatus(); },
}, methods: {
methods: { getPayInfo(out_trade_no) {
getPayInfo(out_trade_no) { this.$api.sendRequest({
this.$api.sendRequest({ url: '/api/pay/info',
url: '/api/pay/info', data: {
data: { out_trade_no
out_trade_no },
}, success: res => {
success: res => { if (res.code >= 0 && res.data) {
if (res.code >= 0 && res.data) { this.checkPayStatus();
this.checkPayStatus(); }
} }
} });
}); },
}, checkPayStatus() {
checkPayStatus() { var that = this;
var that = this; var timer = setInterval(() => {
var timer = setInterval(() => { that.$api.sendRequest({
that.$api.sendRequest({ url: '/api/pay/status',
url: '/api/pay/status', data: { out_trade_no: that.out_trade_no },
data: { out_trade_no: that.out_trade_no }, success: res => {
success: res => { if (res.code == 0) {
if (res.code == 0) { if (res.data.pay_status == 2) {
if (res.data.pay_status == 2) { clearInterval(timer);
clearInterval(timer); that.$util.redirectTo('/pages_tool/pay/result', { code: that.out_trade_no }, '', 'redirectTo');
that.$util.redirectTo('/pages_tool/pay/result', { code: that.out_trade_no }, '', 'redirectTo'); }
} } else {
} else { clearInterval(timer);
clearInterval(timer); }
} }
} });
}); }, 1000);
}, 1000); },
}, },
}, };
}; </script>
</script>
<style lang="scss">
<style lang="scss"> .launch-mask{
.launch-mask{ position:fixed;
position:fixed; top:0px;
top:0px; left: 0px;
left: 0px; width:100%;
width:100%; height: 100%;
height: 100%; background:rgba(0,0,0,0.8);
background:rgba(0,0,0,0.8); .mask-img{
.mask-img{ text-align: right;
text-align: right; margin:10% 10px 10px 30px;
margin:10% 10px 10px 30px; image{
image{ width: 50px;
width: 50px; height:117px;
height:117px; margin-right:9%
margin-right:9% }
} }
} .mask-word{
.mask-word{ color: #fff;
color: #fff; text-align: center;
text-align: center; font-weight: bold;
font-weight: bold; font-size: 18px;
font-size: 18px; text{
text{ color:#FF0036 !important
color:#FF0036 !important }
} }
} }
} </style>
</style>

View File

@@ -1,6 +1,5 @@
<template> <template>
<page-meta :page-style="themeColor"></page-meta> <view class="page" :style="themeColor">
<view class="page">
<view> <view>
<!-- <view class="recharge-title">充值</view> <!-- <view class="recharge-title">充值</view>

View File

@@ -1,6 +1,5 @@
<template> <template>
<page-meta :page-style="themeColor"></page-meta> <view class="order-container" :style="themeColor">
<view class="order-container">
<mescroll-uni ref="mescroll" @getData="getListData"> <mescroll-uni ref="mescroll" @getData="getListData">
<block slot="list"> <block slot="list">
<block v-if="orderList.length > 0"> <block v-if="orderList.length > 0">

View File

@@ -1,5 +1,4 @@
<template> <template>
<page-meta :page-style="themeColor"></page-meta>
<view :style="themeColor"> <view :style="themeColor">
<view class="closeBox"> <view class="closeBox">
<image :src="$util.img('public/uniapp/store/storeclose.png')" mode="widthFix"></image> <image :src="$util.img('public/uniapp/store/storeclose.png')" mode="widthFix"></image>

Some files were not shown because too many files have changed in this diff Show More