细节修改加安装保修

version/0412
fanfan 10 months ago
parent 1df9675a4f
commit 412a5f211b
  1. 211
      pages.json
  2. 20
      pages/activity/newGoods.vue
  3. 4
      pages/activity/newPeople.vue
  4. 4
      pages/activity/presaleRule.vue
  5. 189
      pages/goods/list.vue
  6. 38
      pages/index/index.vue
  7. 897
      pages/invite/index.vue
  8. 7
      pages/news/coupon/index.vue
  9. 2
      pages/news/recycling/detail.vue
  10. 320
      pages/news/recycling/index.vue
  11. 23
      pages/news/user/vip.vue
  12. 2
      pages/news3/vipPrice.vue
  13. 234
      pages/serve/install.vue
  14. BIN
      static/install/install_footer.png
  15. BIN
      static/install/install_hedaer.png
  16. BIN
      static/install/install_name.png

@ -71,6 +71,13 @@
}
}
},
{
"path": "pages/serve/install",
"style": {
"enablePullDownRefresh": false,
"navigationBarTitleText": "安装报修"
}
},
{
"path": "pages/member/index",
"style": {
@ -94,12 +101,12 @@
"navigationBarBackgroundColor": "#FF4A49",
"navigationBarTextStyle": "white"
}
},{
}, {
"path": "pages/invite/list",
"style": {
"navigationBarTitleText": "邀请记录"
}
},{
}, {
"path": "pages/invite/rule",
"style": {
"navigationBarTitleText": "邀请规则"
@ -114,7 +121,7 @@
{
"path": "pages/search/index",
"style": {
"navigationStyle":"default",
"navigationStyle": "default",
"navigationBarTitleText": "商品搜索"
}
},
@ -344,8 +351,7 @@
"enablePullDownRefresh": false
}
}
, {
}, {
"path": "pages/invoice/indexset",
"style": {
"navigationBarTitleText": "发票助手",
@ -687,26 +693,26 @@
"navigationBarTitleText": "确认订单",
"enablePullDownRefresh": false
}
},{
}, {
"path": "recycling/recoveryList",
"style": {
"navigationBarTitleText": "回收订单",
"enablePullDownRefresh": false
}
},{
}, {
"path": "recycling/orderList",
"style": {
"navigationBarTitleText": "服务订单",
"enablePullDownRefresh": true
}
},{
}, {
"path": "recycling/orderDetail",
"style": {
"navigationBarTitleText": "订单详情",
"navigationStyle": "custom",
"enablePullDownRefresh": false
}
},{
}, {
"path": "recycling/pay",
"style": {
"navigationBarTitleText": "支付方式",
@ -733,8 +739,7 @@
},
{
"root": "pages/goods/",
"pages": [
{
"pages": [{
"path": "list",
"style": {
"navigationBarTitleText": "商品列表",
@ -752,8 +757,7 @@
},
{
"root": "pages/bargain/",
"pages": [
{
"pages": [{
"path": "index",
"style": {
"navigationBarTitleText": "砍价会场"
@ -775,8 +779,7 @@
},
{
"root": "pages/groupon/",
"pages": [
{
"pages": [{
"path": "index",
"style": {
"navigationBarTitleText": "拼团活动"
@ -800,92 +803,93 @@
]
},
{
"root":"pages/order/",
"pages":[{
"path": "refund/refund",
"style": {
"navigationBarTitleText": "申请退款",
"enablePullDownRefresh": false
}
"root": "pages/order/",
"pages": [{
"path": "refund/refund",
"style": {
"navigationBarTitleText": "申请退款",
"enablePullDownRefresh": false
}
}, {
"path": "refund/index",
"style": {
"navigationBarTitleText": "申请售后",
"enablePullDownRefresh": false
}
}, {
"path": "refund/index",
"style": {
"navigationBarTitleText": "申请售后",
"enablePullDownRefresh": false
}
}, {
"path": "refund/freight",
"style": {
"navigationBarTitleText": "退货运费",
"enablePullDownRefresh": false
}
}, {
"path": "refund/freight",
"style": {
"navigationBarTitleText": "退货运费",
"enablePullDownRefresh": false
}
}, {
"path": "refund/refund1",
"style": {
"navigationBarTitleText": "申请退款",
"enablePullDownRefresh": false
}
}, {
"path": "refund/refund1",
"style": {
"navigationBarTitleText": "申请退款",
"enablePullDownRefresh": false
}
}, {
"path": "refund/refundDetail",
"style": {
"navigationBarTitleText": "退货退款详情",
"navigationStyle": "custom",
"enablePullDownRefresh": false
}
}, {
"path": "refund/refundDetail",
"style": {
"navigationBarTitleText": "退货退款详情",
"navigationStyle": "custom",
"enablePullDownRefresh": false
}
}, {
"path": "refund/refundDetail1",
"style": {
"navigationBarTitleText": "退货退款详情",
"navigationStyle": "custom",
"enablePullDownRefresh": false
}
}, {
"path": "refund/refundDetail1",
"style": {
"navigationBarTitleText": "退货退款详情",
"navigationStyle": "custom",
"enablePullDownRefresh": false
}
},{
"path": "center",
"style": {
"navigationBarTitleText": "订单中心",
"enablePullDownRefresh": true
}
},
{
"path": "index",
"style": {
"navigationBarTitleText": "我的订单",
"enablePullDownRefresh": true
}
},
{
"path": "detail",
"style": {
"navigationStyle": "custom"
// "navigationBarTitleText": "订单详情",
// "navigationBarTextStyle": "black",
// "navigationBarBackgroundColor": "#ffaaff"
}
},
{
"path": "express/index",
"style": {
"navigationBarTitleText": "物流跟踪"
}
},
{
"path": "extract/check",
"style": {
"navigationBarTitleText": "订单自提核销"
}
},
{
"path": "comment/index",
"style": {
"navigationBarTitleText": "订单评价"
}, {
"path": "center",
"style": {
"navigationBarTitleText": "订单中心",
"enablePullDownRefresh": true
}
},
{
"path": "index",
"style": {
"navigationBarTitleText": "我的订单",
"enablePullDownRefresh": true
}
},
{
"path": "detail",
"style": {
"navigationStyle": "custom"
// "navigationBarTitleText": "订单详情",
// "navigationBarTextStyle": "black",
// "navigationBarBackgroundColor": "#ffaaff"
}
},
{
"path": "express/index",
"style": {
"navigationBarTitleText": "物流跟踪"
}
},
{
"path": "extract/check",
"style": {
"navigationBarTitleText": "订单自提核销"
}
},
{
"path": "comment/index",
"style": {
"navigationBarTitleText": "订单评价"
}
}
}]
]
},
{
"root": "pages/activity/",
@ -894,7 +898,7 @@
"style": {
"navigationBarTitleText": "预售专区",
"enablePullDownRefresh": false
}
},
{
@ -971,7 +975,7 @@
"navigationBarTextStyle": "black",
"navigationBarTitleText": "物流问题"
}
},{
}, {
"path": "setting",
"style": {
// "enablePullDownRefresh": true,
@ -979,9 +983,9 @@
"navigationBarTextStyle": "black",
"navigationBarTitleText": "设置"
}
},{
}, {
"path": "text",
"style": {
"style": {
"navigationStyle": "default",
"navigationBarTextStyle": "black",
"navigationBarTitleText": "协议"
@ -1043,8 +1047,7 @@
},
{
"root": "pages/news3/",
"pages": [
{
"pages": [{
"path": "fenxiao",
"style": {
"navigationStyle": "default",
@ -1052,7 +1055,7 @@
"navigationBarTitleText": "分销订单"
}
},
{
"path": "fenxiaoDetails",
"style": {
@ -1132,7 +1135,7 @@
"navigationBarTextStyle": "black",
"navigationBarTitleText": "商品发货"
}
},{
}, {
"path": "addressList",
"style": {
// "enablePullDownRefresh": true,
@ -1204,8 +1207,8 @@
"navigationBarTitleText": "会员价"
}
}
]
}
],

@ -40,8 +40,7 @@
<view class="lookBtn" @click="backtop">
再挑挑看<u-icon name="arrow-upward" color="#242424" size="30"></u-icon>
</view>
<view class="lookJie">
本活动最终解释权为xxxxxx公司所有
<view class="lookJie" v-html="content">
</view>
</view>
@ -50,6 +49,7 @@
<script>
import * as Api from '@/api/activity'
import * as help from '@/api/help'
import {
getEmptyPaginateObj,
getMoreListData
@ -64,7 +64,8 @@
},
backgroundImg: '',
list: []
list: [],
content: ''
}
},
/**
@ -73,9 +74,22 @@
onLoad(options) {
this.getCarouselList()
this.getBrandList()
this.getCarousel()
},
methods: {
//
getCarousel(type) {
const app = this;
help.getAgreement({
type: 'copyright'
})
.then(result => {
let content = result.data.detail.content || '';
this.content = content
})
.finally(() => app.isLoading = false)
},
//
getBrandList() {
const app = this;

@ -30,7 +30,7 @@
<view scroll-x class="b">
<view class="">
<view class="item" v-for="(item, index) in LeftList" :key="index" @click="goDetail(item.goods_id)">
<image :src="item.goods_image"></image>
<image :src="item.goods_image" mode="widthFix"></image>
<view class="title">
<text>自营</text>{{item.goods_name}}
</view>
@ -44,7 +44,7 @@
</view>
<view class="">
<view class="item" v-for="(item, index) in RightList" :key="index" @click="goDetail(item.goods_id)">
<image :src="item.goods_image"></image>
<image :src="item.goods_image" mode="widthFix"></image>
<view class="title">
<text>自营</text>{{item.goods_name}}
</view>

@ -40,7 +40,7 @@
const app = this;
let rule=''
if (app.type == 4) {
rule = 'presale_rule'
rule = 'new_people'
}
if (app.type == 5) {
rule = 'presale_rule'
@ -49,7 +49,7 @@
rule = 'rank_rule'
}
if (app.type == 7) {
rule = 'rank_rule'
rule = 'coupon'
}
Api.getAgreement({
type: rule

@ -7,49 +7,54 @@
<view class="search">
<search :tips="options.search ? options.search : '搜索商品'" @event="handleSearch" />
</view>
<!-- 切换列表显示方式 -->
<view class="show-view" @click="handleShowView">
<!-- <text class="iconfont icon-view-tile" v-if="showView"></text>
<text class="iconfont icon-view-list" v-else></text> -->
</view>
</view>
<!-- 排序标签 -->
<view class="store-sort">
<view class="sort-item" :class="{ active: sortType === 'all' }" @click="handleSortType('all')">
<text>综合</text>
</view>
<view class="sort-item" :class="{ active: sortType === 'sales' }" @click="handleSortType('sales')">
<text>销量</text>
<view class="goodsType">
<scroll-view class="typeList" scroll-x="true">
<view v-for="(item,index) in banrdType" :key="index" class="typeItem" @click="onChage(item,1)"
:style="{'color':item.id==isBanrdActive?'#F43B21':'#5A5A5A','background':item.id==isBanrdActive?'#FEF6F6':'#F7F8FA','border':item.id==isBanrdActive?'2rpx solid #F22029':'none'}">
{{item.name}}
</view>
</scroll-view>
</view>
<view class="sort-item sort-item-price" :class="{ active: sortType === 'price' }"
@click="handleSortType('price')">
<text>价格</text>
<view class="price-arrow">
<view class="icon up" :class="{ active: sortType === 'price' && !sortPrice }">
<text class="iconfont icon-arrow-up"></text>
<view class="goodsType">
<scroll-view class="typeList" scroll-x="true">
<view v-for="(item,index) in goodsType" :key="index" class="typeItem" @click="onChage(item,2)"
:style="{'color':isActive==item.id?'#F43B21':'#5A5A5A','background':isActive==item.id?'#FEF6F6':'#F7F8FA','border':isActive==item.id?'2rpx solid #F22029':'none'}">
{{item.name}}
</view>
<view class="icon down" :class="{ active: sortType === 'price' && sortPrice }">
<text class="iconfont icon-arrow-down"></text>
</scroll-view>
</view>
<!-- 排序标签 -->
<view class="store-box">
<view class="sort-item" :class="{ active: sortType === 'all' }" @click="handleSortType('all')">
<text>综合</text>
</view>
<view class="sort-item" :class="{ active: sortType === 'sales' }" @click="handleSortType('sales')">
<text>销量</text>
</view>
<view class="sort-item sort-item-price" :class="{ active: sortType === 'price' }"
@click="handleSortType('price')">
<text>价格</text>
<view class="price-arrow">
<view class="icon up" :class="{ active: sortType === 'price' && !sortPrice }">
<text class="iconfont icon-arrow-up"></text>
</view>
<view class="icon down" :class="{ active: sortType === 'price' && sortPrice }">
<text class="iconfont icon-arrow-down"></text>
</view>
</view>
</view>
</view>
<view class="sort-item" :class="{ active: sortType === 'city' }" @click="handleSortType('city')">
<text>同城达</text>
</view>
<view class="show-view btnOpera" @click="handleShowView">
<text class="iconfont icon-view-tile" v-if="showView"></text>
<text class="iconfont icon-view-list" v-else></text>
<view class="sort-item" :class="{ active: sortType === 'city' }" @click="handleSortType('city')">
<text>同城达</text>
</view>
<!-- <view class="show-view btnOpera" @click="handleShowView">
<text class="iconfont icon-view-tile" v-if="showView"></text>
<text class="iconfont icon-view-list" v-else></text>
</view> -->
</view>
</view>
<!-- <view class="goodsType">
<scroll-view class="typeList" scroll-x="true" @scroll="scroll" scroll-left="120">
<view v-for="(item,index) in goodsType" :key="index" class="typeItem"
:style="{'color':item.isActive?'#F43B21':'#5A5A5A','background':item.isActive?'#FEF6F6':'#F7F8FA','border':item.isActive?'2rpx solid #F22029':'none'}">
{{item.name}}
</view>
</scroll-view>
</view> -->
<!-- 商品列表 -->
<view class="goods-list clearfix" :class="['column-' + (showView ? '1' : '2')]">
<view class="goods-item" v-for="(item, index) in list.data" :key="index"
@ -147,21 +152,39 @@
data() {
return {
searchText: '',
banrdType: [{
name: '长虹',
id: 1,
}, {
name: '苹果',
id: 2,
}, {
name: '联想',
id: 3,
}, {
name: '小米',
id: 4,
}, {
name: 'TCL',
id: 5,
}],
isBanrdActive: '',
isActive: '',
goodsType: [{
name: '80英寸',
isActive: true,
id: 1,
}, {
name: '75英寸',
isActive: false,
id: 2,
}, {
name: '70英寸',
isActive: false,
id: 3,
}, {
name: '65英寸',
isActive: false,
id: 4,
}, {
name: '60英寸',
isActive: false,
id: 5,
}, ],
showView: false, // (truefalse)
sortType: 'all', //
@ -198,7 +221,14 @@
},
methods: {
onChage(item, type) {
if (type == 1) {
this.isBanrdActive = item.id
}
if (type == 2) {
this.isActive = item.id
}
},
/**
* 上拉加载的回调 (页面初始化时也会执行一次)
* 其中page.num:当前页 从1开始, page.size:每页数据条数,默认10
@ -329,13 +359,16 @@
<style lang="scss" scoped>
//
.header {
display: flex;
align-items: center;
background-color: #fff;
//
.search {
flex: 1;
width: 100%;
padding: 0 30rpx;
.search-wrapper{
padding: 0;
width: 100%;
}
}
@ -354,46 +387,49 @@
.store-sort {
position: sticky;
top: var(--window-top);
display: flex;
padding: 20rpx 0;
font-size: 28rpx;
background: #fff;
color: #000;
z-index: 99;
.sort-item {
flex-basis: 22%;
.store-box {
display: flex;
justify-content: center;
align-items: center;
height: 50rpx;
&.active {
color: $main-bg;
}
}
padding: 20rpx 0;
font-size: 28rpx;
background: #fff;
.sort-item-price .price-arrow {
margin-left: 20rpx;
font-size: 24rpx;
color: #000;
.sort-item {
flex-basis: 25%;
display: flex;
justify-content: center;
align-items: center;
height: 50rpx;
.icon {
&.active {
color: $main-bg;
}
}
&.up {
margin-bottom: -16rpx;
}
.sort-item-price .price-arrow {
margin-left: 20rpx;
font-size: 24rpx;
color: #000;
.icon {
&.active {
color: $main-bg;
}
&.down {
margin-top: -16rpx;
&.up {
margin-bottom: -16rpx;
}
&.down {
margin-top: -16rpx;
}
}
}
}
}
}
//
@ -601,15 +637,20 @@
.goodsType {
background-color: #fff;
width: 100%;
height: 76rpx;
padding: 0 30rpx;
height: 90rpx;
display: flex;
align-items: center;
.text {
padding-right: 30rpx;
}
.typeList {
margin: 0rpx 0 12rpx 36rpx;
white-space: nowrap;
.typeItem {
margin-left: 8rpx;
margin-right: 20rpx;
display: inline-block;
width: 124rpx;
height: 54rpx;
@ -624,4 +665,4 @@
}
}
}
</style>
</style>

@ -55,7 +55,7 @@
<text>{{item.text}}</text>
</view>
</view>
<view class="gridRows secondRows" :style="{'height': isToggle == false?'160rpx':'auto'}">
<view class="gridRows secondRows" :style="{'height': catagoryList.length>0?'160rpx':'auto'}">
<view class="gridItem" v-for="(item,index) in catagoryList" :key="index"
@click="goJump('/pages/goods/list?categoryId=' + item.category_id)">
<view class="imageC">
@ -234,10 +234,9 @@
</view>
<view class="goodsRecommend">
<view class="">
<view class="goodsItem" v-for="(item,index) in LeftList" @click="goDetails(item)"
:key="index">
<view class="goodsItem" v-for="(item,index) in LeftList" @click="goDetails(item)" :key="index">
<view class="pic">
<image :src="item.goods_image" mode=""></image>
<image :src="item.goods_image" mode="widthFix"></image>
</view>
<view class="goodsInfo">
<view class="title">
@ -258,10 +257,9 @@
</view>
</view>
<view class="">
<view class="goodsItem" v-for="(item,index) in RightList" @click="goDetails(item)"
:key="index">
<view class="goodsItem" v-for="(item,index) in RightList" @click="goDetails(item)" :key="index">
<view class="pic">
<image :src="item.goods_image" mode=""></image>
<image :src="item.goods_image" mode="widthFix"></image>
</view>
<view class="goodsInfo">
<view class="title">
@ -281,7 +279,7 @@
</view>
</view>
</view>
</view>
</view>
</view>
@ -531,7 +529,7 @@
{
image: `${this.$picUrl}/static/index/g4.png?n=` + new Date().getTime(),
text: "安装报修",
path: '/pages/serve/index',
path: '/pages/serve/install',
type: 3
},
{
@ -666,7 +664,7 @@
}).then(res => {
if (res.status == 200) {
this.tabList = res.data.list;
this.catagoryList = res.data.list[0].children||[]
this.catagoryList = res.data.list[0].children || []
if (this.current == 0) {
this.getRankingList(this.tabList[0].category_id)
// this.getNewGoods(this.tabList[0].category_id)
@ -690,7 +688,7 @@
url
})
} else {
uni.switchTab({
uni.navigateTo({
url
})
return;
@ -701,7 +699,7 @@
},
changeGoodsType(index) {
this.tabCurrent = index;
this.catagoryList = this.tabList[index].children||[];
this.catagoryList = this.tabList[index].children || [];
this.getRankingList(this.tabList[index].category_id)
// this.getNewGoods(this.tabList[index].category_id)
this.getNewGoods()
@ -757,8 +755,8 @@
},
getSuggest() {
this.LeftList=[];
this.RightList=[]
this.LeftList = [];
this.RightList = []
//
Api.recommended().then(res => {
let arr = res.data.goodsList
@ -1069,9 +1067,13 @@
display: flex;
height: 80rpx;
align-items: center;
justify-content: space-around;
white-space: nowrap;
width: 100%;
overflow-x: auto;
overflow-y: hidden;
.tabItem {
margin-right: 30rpx;
position: relative;
font-size: 28rpx;
font-family: PingFang SC, PingFang SC;
@ -1202,7 +1204,8 @@
display: flex;
align-items: center;
justify-content: space-between;
text:nth-child(1){
text:nth-child(1) {
font-family: YouSheBiaoTiYuan, YouSheBiaoTiYuan;
font-weight: 700;
font-size: 40rpx;
@ -1211,7 +1214,8 @@
font-style: normal;
text-transform: none;
}
text:nth-child(2){
text:nth-child(2) {
font-family: PingFang SC, PingFang SC;
font-weight: 400;
font-size: 24rpx;

@ -1,436 +1,517 @@
<template>
<view class="invite">
<view class="invite-notice">
<u-notice-bar mode="horizontal" :list="list" color="#fff" bg-color="rgba(255,255,255,0.22)"></u-notice-bar>
</view>
<view class="invite-hd">
<!-- <image :src="$picUrl+'/static/news/invite-bg.png'"></image> -->
<view class="btn" @click="openPage(3)"></view>
<view class="rule" @click="openPage(4)"></view>
</view>
<view class="invite-bd">
<view class="invite-bd-a">
<view class="a">
<view class="l">
累计邀请好友(
<view class="p">{{info.count_people}}</view>
</view>
<view class="l" style="border: none;">
累计现金奖励(
<view class="p">{{info.money}}</view>
</view>
</view>
<view class="b" @click="openPage(1)">
我的邀请<u-icon name="arrow-right"></u-icon>
</view>
<view class="c" @click="openPage(2)">
立即提现<u-icon name="arrow-right"></u-icon>
</view>
</view>
<view class="invite-bd-b">
<image :src="$picUrl+'/static/news/invite-bg2.png'"></image>
<view class="a">
<template>
<view class="invite">
<view class="invite-notice">
<u-notice-bar mode="horizontal" :list="list" color="#fff" bg-color="rgba(255,255,255,0.22)"></u-notice-bar>
</view>
<view class="invite-hd">
<!-- <image :src="$picUrl+'/static/news/invite-bg.png'"></image> -->
<view class="btn" @click="openPage(3)"></view>
<view class="rule" @click="openPage(4)"></view>
</view>
<view class="invite-bd">
<view class="invite-bd-a">
<view class="a">
<view class="l">
可得188积分
累计邀请好友(
<view class="p">{{info.count_people}}</view>
</view>
<view class="l" style="border: none;">
累计现金奖励(
<view class="p">{{info.money}}</view>
</view>
</view>
<view class="b" @click="openPage(1)">
我的邀请<u-icon name="arrow-right"></u-icon>
</view>
<view class="c" @click="openPage(2)">
立即提现<u-icon name="arrow-right"></u-icon>
</view>
</view>
<view class="invite-bd-b">
<image :src="$picUrl+'/static/news/invite-bg2.png'"></image>
<view class="a">
<view class="l">
可得188积分
<!-- 可得{{info.integral}}积分
<br />{{info.coupon_name}} -->
</view>
<br />{{info.coupon_name}} -->
</view>
<view class="l">
可返现3-5%
<!-- 可返现{{info.one_order_rate}}% -->
</view>
可返现3-5%
<!-- 可返现{{info.one_order_rate}}% -->
</view>
<view class="l">
新人首单礼
<!-- {{info.one_order_rate}}{{info.coupon_name}} -->
</view>
</view>
</view>
<view class="invite-bd-c">
<image :src="$picUrl+'/static/news/invite-bg3.png'"></image>
<view class="a">
新人首单礼
<!-- {{info.one_order_rate}}{{info.coupon_name}} -->
</view>
</view>
</view>
<view class="invite-bd-c">
<image :src="$picUrl+'/static/news/invite-bg3.png'"></image>
<view class="a">
<view class="l">
优惠券
<!-- {{info.one_order_rate}}{{info.coupon_name}} -->
</view>
优惠券
<!-- {{info.one_order_rate}}{{info.coupon_name}} -->
</view>
<view class="l">
积分
<!-- {{info.integral}}积分 -->
</view>
积分
<!-- {{info.integral}}积分 -->
</view>
<view class="l">
长期返现
<!-- 首单返{{info.one_order_rate}}% -->
</view>
</view>
</view>
<!-- <view class="invite-bd-d">
<image :src="$picUrl+'/static/news/invite-bg4.png'"></image>
<view class="p" @click="openPage(3)">立即邀请</view>
</view> -->
</view>
<!-- -->
<view class="invite-popup" v-if="isPopup">
<view class="popup" @click="download()">
<image class="bg" :src="qrcode"></image>
<view class="tips">保存海报图</view>
<view class="close">
</view>
</view>
</view>
</view>
</template>
<script>
import { createQrCodeImg } from '@/utils/qrcode'
import * as newFunApi from '@/api/newFun'
export default{
data(){
return{
qrcode: "",
userInfo: {},
backgroundBg: {
"background": "rgba(255,255,255,0.22)"
},
backgroundBg1: {
"background-color": "transparent"
},
isPopup: false,
info: {},
list: ["邀请更多好友,获得更多奖金"]
}
},
onReady() {
this.getList();
},
onShow() {
if(uni.getStorageSync("AccessToken")){
this.userInfo = uni.getStorageSync("userInfo");
// this.qrcode = createQrCodeImg(this.userInfo.user_id, { 'size': 500 });
}else{
this.userInfo = {}
// this.qrcode = ""
}
},
长期返现
<!-- 首单返{{info.one_order_rate}}% -->
</view>
</view>
</view>
<!-- <view class="invite-bd-d">
<image :src="$picUrl+'/static/news/invite-bg4.png'"></image>
<view class="p" @click="openPage(3)">立即邀请</view>
</view> -->
</view>
<!-- -->
<view class="invite-popup" v-if="isPopup">
<view class="popup" @click="download()">
<image class="bg" :src="qrcode"></image>
<view class="tips">保存海报图</view>
<view class="close">
</view>
</view>
</view>
</view>
</template>
<script>
import {
createQrCodeImg
} from '@/utils/qrcode'
import * as newFunApi from '@/api/newFun'
import * as Api from '@/api/help'
export default {
data() {
return {
qrcode: "",
userInfo: {},
backgroundBg: {
"background": "rgba(255,255,255,0.22)"
},
backgroundBg1: {
"background-color": "transparent"
},
isPopup: false,
info: {},
list: []
}
},
onReady() {
this.getList();
this.getCarousel()
},
onShow() {
if (uni.getStorageSync("AccessToken")) {
this.userInfo = uni.getStorageSync("userInfo");
// this.qrcode = createQrCodeImg(this.userInfo.user_id, { 'size': 500 });
} else {
this.userInfo = {}
// this.qrcode = ""
}
},
methods: {
//
getCarousel(type) {
const app = this;
app.list = []
Api.getAgreement({
type: 'invite_notice'
})
.then(result => {
if (result.data.detail.content) {
app.list.push(this.formatRichText(result.data.detail.content))
}
})
.finally(() => app.isLoading = false)
},
formatRichText(value) {
value = value.replace(/\s*/g, ""); //
value = value.replace(/<[^>]+>/g, ""); //html
value = value.replace(/↵/g, ""); //
value = value.replace(/[\r\n]/g, "") //
value = value.replace(/&nbsp;/g, "") //
value = this.convertIdeogramToNormalCharacter(value);
return value
},
convertIdeogramToNormalCharacter(val) {
const arrEntities = {
'lt': '<',
'gt': '>',
'nbsp': ' ',
'amp': '&',
'quot': '"'
};
return val.replace(/&(lt|gt|nbsp|amp|quot);/ig, function(all, t) {
return arrEntities[t];
});
},
//
async InviteUserPoster() {
const {status, data} = await newFunApi.InviteUserPoster({});
if(status == 200){
const {
status,
data
} = await newFunApi.InviteUserPoster({});
if (status == 200) {
console.log(data)
this.qrcode = data.imageUrl
}
},
},
download() {
const app = this
app.isPopup = false;
uni.showLoading({ title: '加载中' })
uni.showLoading({
title: '加载中'
})
//
uni.downloadFile({
url: app.qrcode,
success(res) {
console.log(res)
uni.hideLoading()
//
app.onSaveImage(res.tempFilePath)
},
fail(res) {
console.log('fail', res)
uni.hideLoading()
app.$toast('很抱歉,自动保存失败 请点击图片后长按手动保存', 3000)
}
})
url: app.qrcode,
success(res) {
console.log(res)
uni.hideLoading()
//
app.onSaveImage(res.tempFilePath)
},
fail(res) {
console.log('fail', res)
uni.hideLoading()
app.$toast('很抱歉,自动保存失败 请点击图片后长按手动保存', 3000)
}
})
},
//
onSaveImage(tempFilePath) {
const app = this
// #ifndef H5
uni.saveImageToPhotosAlbum({
filePath: tempFilePath,
success(data) {
app.$success('保存成功')
},
fail(err) {
if (err.errMsg === 'saveImageToPhotosAlbum:fail auth deny') {
app.$toast('请允许访问相册后重试 (右上角菜单 - 设置 - 相册)', 3000)
}
}
})
// #endif
// #ifdef H5
const names = tempFilePath.split('/')
const fileName = names[names.length - 1]
app.fileDownLoadForH5({ name: fileName, blob: tempFilePath })
// #endif
const app = this
// #ifndef H5
uni.saveImageToPhotosAlbum({
filePath: tempFilePath,
success(data) {
app.$success('保存成功')
},
fail(err) {
if (err.errMsg === 'saveImageToPhotosAlbum:fail auth deny') {
app.$toast('请允许访问相册后重试 (右上角菜单 - 设置 - 相册)', 3000)
}
}
})
// #endif
// #ifdef H5
const names = tempFilePath.split('/')
const fileName = names[names.length - 1]
app.fileDownLoadForH5({
name: fileName,
blob: tempFilePath
})
// #endif
},
// H5
// #ifdef H5
fileDownLoadForH5({ name, blob }) {
const linkElement = document.createElement('a')
linkElement.setAttribute('href', blob)
linkElement.setAttribute('downLoad', name)
linkElement.click()
fileDownLoadForH5({
name,
blob
}) {
const linkElement = document.createElement('a')
linkElement.setAttribute('href', blob)
linkElement.setAttribute('downLoad', name)
linkElement.click()
},
// #endif
async getList() {
uni.showLoading({
title: "加载中"
})
const {
status,
data
} = await newFunApi.inviteInit({});
if (status == 200) {
uni.hideLoading();
this.info = data;
console.log(this.info)
}
},
// #endif
async getList() {
uni.showLoading({
title:"加载中"
})
const {status, data} = await newFunApi.inviteInit({});
if(status == 200){
uni.hideLoading();
this.info = data;
console.log(this.info)
}
},
openPage(index){
if(!uni.getStorageSync("AccessToken")){
uni.navigateTo({
url: "/pages/login/index"
})
return ;
}
if(index == 1){
uni.navigateTo({
url: "/pages/invite/list"
})
}else if(index == 2){
uni.navigateTo({
url: "/pages/news/user/withdrawal?balance="+ this.userInfo.pay_money
})
}else if(index == 3){
openPage(index) {
if (!uni.getStorageSync("AccessToken")) {
uni.navigateTo({
url: "/pages/login/index"
})
return;
}
if (index == 1) {
uni.navigateTo({
url: "/pages/invite/list"
})
} else if (index == 2) {
uni.navigateTo({
url: "/pages/news/user/withdrawal?balance=" + this.userInfo.pay_money
})
} else if (index == 3) {
this.isPopup = true;
this.InviteUserPoster();
}else if(index == 4){
this.InviteUserPoster();
} else if (index == 4) {
uni.navigateTo({
url: "/pages/invite/rule"
})
}
},
}
}
</script>
<style lang="scss" scoped>
.invite{
background: url(https://www.royaum.com.cn/static/news/invite-bg.png?t=2) center top no-repeat;
background-size: 100% auto;
&-popup{
width: 100%;
height: 100%;
background-color: rgba(0, 0, 0, 0.6);
position: fixed;
left: 0;
top: 0;
z-index: 55;
.popup{
width: 672rpx;
height: 912rpx;
position: absolute;
left: 50%;
margin-left: -336rpx;
top: 50%;
margin-top: -456rpx;
z-index: 2;
.bg{
width: 672rpx;
height: 100%;
border-radius: 26rpx;
}
.qrcode{
width: 200rpx;
height: 200rpx;
position: absolute;
right: 25rpx;
top: 670rpx;
border: 8rpx solid #FFFFFF;
z-index: 2;
border-radius: 5rpx;
}
.tips{
width: 100%;
height: 30rpx;
position: absolute;
text-align: center;
font-size: 30rpx;
color: #FFFFFF;
left: 0;
bottom: -50rpx;
z-index: 2;
}
.close{
width: 60rpx;
height: 60rpx;
position: absolute;
left: 50%;
bottom: -150rpx;
color: #FFFFFF;
z-index: 2;
}
}
}
&-notice{
// background-color: #FF5554;
}
&-hd{
width: 100%;
text-align: center;
// background-color: #FF5554;
height: 436rpx;
position: relative;
.rule{
width: 130rpx;
height: 50rpx;
position: absolute;
right: 0;
top: 208rpx;
z-index: 2;
}
.btn{
width: 396rpx;
height: 88rpx;
position: absolute;
left: 50%;
margin-left: -205rpx;
bottom:0rpx;
z-index: 2;
}
}
&-bd{
padding: 0 32rpx 60rpx 32rpx;
// background: linear-gradient(181deg, #FF5F55 0%, #FAC39D 100%);
overflow: hidden;
&-a{
width: 100%;
height: 366rpx;
background: #FFFFFF;
border-radius: 12rpx;
margin-top: 40rpx;
.a{
padding: 50rpx 0 30rpx;
overflow: hidden;
display: flex;
align-items: center;
justify-content: center;
text-align: center;
.l{
flex: 1;
border-right: 1px solid #DDDDDD;
font-size: 28rpx;
font-weight: 500;
color: #414141;
.p{
font-size: 54rpx;
font-weight: 500;
color: #FF5251;
margin-top: 20rpx;
}
}
}
.b{
width: 396rpx;
height: 88rpx;
background: linear-gradient(180deg, #FD5B54 0%, #FFC277 100%);
border-radius: 106rpx;
border: 1px solid #FFFFFF;
display: flex;
align-items: center;
justify-content: center;
font-size: 32rpx;
color: #FFFFFF;
margin: 0 auto;
}
.c{
display: flex;
align-items: center;
justify-content: center;
font-size: 24rpx;
color: #FF5251;
margin-top: 20rpx;
}
}
&-b{
width: 100%;
height: 515rpx;
margin-top: 20rpx;
position: relative;
image{
width: 100%;
height: 100%;
}
.a{
width: 100%;
bottom: 40rpx;
padding: 0 25rpx;
box-sizing: border-box;
z-index: 1;
left: 0;
position: absolute;
display: flex;
align-items: center;
justify-content: center;
.l{
flex: 1;
text-align: center;
font-size: 28rpx;
font-weight: 500;
color: #FF4D4C;
}
}
}
&-c{
width: 100%;
height: 375rpx;
margin-top: 20rpx;
position: relative;
image{
width: 100%;
height: 100%;
}
.a{
width: 260rpx;
bottom: -60rpx;
box-sizing: border-box;
z-index: 1;
right: 0;
position: absolute;
display: flex;
flex-wrap: wrap;
.l{
width: 130rpx;
height: 135rpx;
text-align: center;
font-size: 22rpx;
font-weight: 500;
color: #414141;
}
}
}
&-d{
width: 100%;
height: 108rpx;
position: relative;
margin-top: 20rpx;
image{
width: 100%;
height: 100%;
}
.p{
width: 100%;
height: 100%;
position: absolute;
left: 0;
top: 0;
z-index: 2;
text-align: center;
line-height: 105rpx;
font-size: 36rpx;
font-weight: 500;
color: #FF5251;
}
}
}
}
</style>
})
}
},
}
}
</script>
<style lang="scss" scoped>
.invite {
background: url(https://www.royaum.com.cn/static/news/invite-bg.png?t=2) center top no-repeat;
background-size: 100% auto;
&-popup {
width: 100%;
height: 100%;
background-color: rgba(0, 0, 0, 0.6);
position: fixed;
left: 0;
top: 0;
z-index: 55;
.popup {
width: 672rpx;
height: 912rpx;
position: absolute;
left: 50%;
margin-left: -336rpx;
top: 50%;
margin-top: -456rpx;
z-index: 2;
.bg {
width: 672rpx;
height: 100%;
border-radius: 26rpx;
}
.qrcode {
width: 200rpx;
height: 200rpx;
position: absolute;
right: 25rpx;
top: 670rpx;
border: 8rpx solid #FFFFFF;
z-index: 2;
border-radius: 5rpx;
}
.tips {
width: 100%;
height: 30rpx;
position: absolute;
text-align: center;
font-size: 30rpx;
color: #FFFFFF;
left: 0;
bottom: -50rpx;
z-index: 2;
}
.close {
width: 60rpx;
height: 60rpx;
position: absolute;
left: 50%;
bottom: -150rpx;
color: #FFFFFF;
z-index: 2;
}
}
}
&-notice {
// background-color: #FF5554;
}
&-hd {
width: 100%;
text-align: center;
// background-color: #FF5554;
height: 436rpx;
position: relative;
.rule {
width: 130rpx;
height: 50rpx;
position: absolute;
right: 0;
top: 208rpx;
z-index: 2;
}
.btn {
width: 396rpx;
height: 88rpx;
position: absolute;
left: 50%;
margin-left: -205rpx;
bottom: 0rpx;
z-index: 2;
}
}
&-bd {
padding: 0 32rpx 60rpx 32rpx;
// background: linear-gradient(181deg, #FF5F55 0%, #FAC39D 100%);
overflow: hidden;
&-a {
width: 100%;
height: 366rpx;
background: #FFFFFF;
border-radius: 12rpx;
margin-top: 40rpx;
.a {
padding: 50rpx 0 30rpx;
overflow: hidden;
display: flex;
align-items: center;
justify-content: center;
text-align: center;
.l {
flex: 1;
border-right: 1px solid #DDDDDD;
font-size: 28rpx;
font-weight: 500;
color: #414141;
.p {
font-size: 54rpx;
font-weight: 500;
color: #FF5251;
margin-top: 20rpx;
}
}
}
.b {
width: 396rpx;
height: 88rpx;
background: linear-gradient(180deg, #FD5B54 0%, #FFC277 100%);
border-radius: 106rpx;
border: 1px solid #FFFFFF;
display: flex;
align-items: center;
justify-content: center;
font-size: 32rpx;
color: #FFFFFF;
margin: 0 auto;
}
.c {
display: flex;
align-items: center;
justify-content: center;
font-size: 24rpx;
color: #FF5251;
margin-top: 20rpx;
}
}
&-b {
width: 100%;
height: 515rpx;
margin-top: 20rpx;
position: relative;
image {
width: 100%;
height: 100%;
}
.a {
width: 100%;
bottom: 40rpx;
padding: 0 25rpx;
box-sizing: border-box;
z-index: 1;
left: 0;
position: absolute;
display: flex;
align-items: center;
justify-content: center;
.l {
flex: 1;
text-align: center;
font-size: 28rpx;
font-weight: 500;
color: #FF4D4C;
}
}
}
&-c {
width: 100%;
height: 375rpx;
margin-top: 20rpx;
position: relative;
image {
width: 100%;
height: 100%;
}
.a {
width: 260rpx;
bottom: -60rpx;
box-sizing: border-box;
z-index: 1;
right: 0;
position: absolute;
display: flex;
flex-wrap: wrap;
.l {
width: 130rpx;
height: 135rpx;
text-align: center;
font-size: 22rpx;
font-weight: 500;
color: #414141;
}
}
}
&-d {
width: 100%;
height: 108rpx;
position: relative;
margin-top: 20rpx;
image {
width: 100%;
height: 100%;
}
.p {
width: 100%;
height: 100%;
position: absolute;
left: 0;
top: 0;
z-index: 2;
text-align: center;
line-height: 105rpx;
font-size: 36rpx;
font-weight: 500;
color: #FF5251;
}
}
}
}
</style>

@ -65,10 +65,9 @@
},
openPage() {
this.$toast('暂无优惠券规则')
// uni.navigateTo({
// url: '/pages/activity/presaleRule?type=7'
// })
uni.navigateTo({
url: '/pages/activity/presaleRule?type=7'
})
},
tabItem(index) {
this.tabIndex = index;

@ -160,7 +160,7 @@
getCarouselList(type) {
const app = this;
Api.getAgreement({
type: 'presale_rule'
type: 'recycling_services'
})
.then(result => {
let content = result.data.detail.content || '';

@ -7,7 +7,8 @@
<view class="recycling-notice">
<image :src="$picUrl+'/static/news/icon-volume.png'"></image>
<view class="notice">
<u-notice-bar mode="horizontal" :volume-icon="false" bg-color="#fff" color="#212121" :list="list"></u-notice-bar>
<u-notice-bar mode="horizontal" :volume-icon="false" bg-color="#fff" color="#212121" :list="list">
</u-notice-bar>
</view>
</view>
<view class="recycling-bd">
@ -36,7 +37,7 @@
<script>
import * as newFunApi from '@/api/newFun'
// import img from "@/static/news/recycling-bg.png"
import * as Api from '@/api/help'
export default {
data() {
return {
@ -49,29 +50,69 @@
background: '#fff',
},
server_name: "",
list: ['欢迎来到这里!'],
list: [],
list1: [],
list2: [],
}
},
onLoad(o) {
this.tabIndex = o.index?o.index:0
this.tabIndex = o.index ? o.index : 0
this.getList();
this.getCarousel()
},
onPageScroll(e){
if(e.scrollTop <= 44){
onPageScroll(e) {
if (e.scrollTop <= 44) {
this.isScroll = true;
}else{
} else {
this.isScroll = false;
}
},
methods: {
//
getCarousel(type) {
const app = this;
app.list = []
Api.getAgreement({
type: 'serve_notice'
})
.then(result => {
if (result.data.detail.content) {
app.list.push(this.formatRichText(result.data.detail.content))
}
})
.finally(() => app.isLoading = false)
},
formatRichText(value) {
value = value.replace(/\s*/g, ""); //
value = value.replace(/<[^>]+>/g, ""); //html
value = value.replace(/↵/g, ""); //
value = value.replace(/[\r\n]/g, "") //
value = value.replace(/&nbsp;/g, "") //
value = this.convertIdeogramToNormalCharacter(value);
return value
},
convertIdeogramToNormalCharacter(val) {
const arrEntities = {
'lt': '<',
'gt': '>',
'nbsp': ' ',
'amp': '&',
'quot': '"'
};
return val.replace(/&(lt|gt|nbsp|amp|quot);/ig, function(all, t) {
return arrEntities[t];
});
},
/**
* 获取列表
*/
async getList() {
let {status, message, data} = await newFunApi.recoveryCategoryList({});
if(status == 200){
let {
status,
message,
data
} = await newFunApi.recoveryCategoryList({});
if (status == 200) {
this.list1 = data.list
this.getGoodsList();
}
@ -80,21 +121,25 @@
* 获取商品列表
*/
async getGoodsList() {
let {status, message, data} = await newFunApi.recoveryRecoveryList({
let {
status,
message,
data
} = await newFunApi.recoveryRecoveryList({
server_name: this.server_name,
category_id: this.list1.length > 0?this.list1[this.tabIndex].category_id:""
category_id: this.list1.length > 0 ? this.list1[this.tabIndex].category_id : ""
});
if(status == 200){
if (status == 200) {
this.list2 = data.list
}
},
openPage(a) {
uni.setStorageSync("getInfo",a)
uni.setStorageSync("getInfo", a)
uni.navigateTo({
url: "/pages/news/recycling/detail?type=2&id="+a.recovery_id
url: "/pages/news/recycling/detail?type=2&id=" + a.recovery_id
})
},
tabItem(index){
tabItem(index) {
this.tabIndex = index;
this.getGoodsList();
}
@ -103,126 +148,145 @@
</script>
<style lang="scss" scoped>
.recycling{
background: url(https://www.royaum.com.cn/static/news/recycling-bg.png) center top no-repeat;
background-size: 100% auto;
&-hd{
height: 320rpx;
}
&-notice{
border-radius: 30rpx 30rpx 0 0;
background-color: #fff;
display: flex;
align-items: center;
padding: 0 30rpx;
image{
width: 50rpx;
height: 50rpx;
display: block;
.recycling {
background: url(https://www.royaum.com.cn/static/news/recycling-bg.png) center top no-repeat;
background-size: 100% auto;
&-hd {
height: 320rpx;
}
.notice{
width: 500rpx;
flex: 1;
&-notice {
border-radius: 30rpx 30rpx 0 0;
background-color: #fff;
display: flex;
align-items: center;
padding: 0 30rpx;
image {
width: 50rpx;
height: 50rpx;
display: block;
}
.notice {
width: 500rpx;
flex: 1;
}
}
}
&-bd{
padding: 30rpx 0 30rpx 36rpx;
overflow: hidden;
background-color: #fff;
.tab{
width: 100%;
white-space: nowrap;
.item{
width: 165rpx;
display: inline-block;
text-align: center;
font-size: 24rpx;
font-weight: 500;
color: #4F4F4F;
position: relative;
padding-bottom: 30rpx;
image{
width: 60rpx;
height: 60rpx;
display: block;
margin: 0 auto;
margin-bottom: 12rpx;
}
&-on{
color: #FF4949;
&::after{
content: "";
width: 50rpx;
height: 6rpx;
background: #FF4949;
border-radius: 6rpx;
position: absolute;
left: 50%;
bottom: 10rpx;
z-index: 1;
margin-left: -25rpx;
&-bd {
padding: 30rpx 0 30rpx 36rpx;
overflow: hidden;
background-color: #fff;
.tab {
width: 100%;
white-space: nowrap;
.item {
width: 165rpx;
display: inline-block;
text-align: center;
font-size: 24rpx;
font-weight: 500;
color: #4F4F4F;
position: relative;
padding-bottom: 30rpx;
image {
width: 60rpx;
height: 60rpx;
display: block;
margin: 0 auto;
margin-bottom: 12rpx;
}
&-on {
color: #FF4949;
&::after {
content: "";
width: 50rpx;
height: 6rpx;
background: #FF4949;
border-radius: 6rpx;
position: absolute;
left: 50%;
bottom: 10rpx;
z-index: 1;
margin-left: -25rpx;
}
}
}
}
}
.list{
width: 100%;
overflow: hidden;
.item{
padding: 28rpx 0;
overflow: hidden;
display: flex;
border-top: 1px solid #F2F2F2;
&:first-child{
border-top-color: #fff;
}
image{
width: 234rpx;
height: 222rpx;
border-radius: 12rpx;
margin-right: 20rpx;
}
.info{
width: 440rpx;
white-space: nowrap;
.title{
overflow: hidden;
font-size: 28rpx;
text-overflow: ellipsis;
font-weight: 600;
color: #2C2C2C;
}
.desc{
overflow: hidden;
font-size: 28rpx;
text-overflow: ellipsis;
margin-top: 10rpx;
color: #888888;
height: 124rpx;
}
.price{
display: flex;
align-items: center;
justify-content: space-between;
font-size: 24rpx;
font-weight: 400;
color: #888888;
.btn{
width: 140rpx;
line-height: 44rpx;
text-align: center;
background: #FFFFFF;
border-radius: 8rpx;
border: 1rpx solid #FF4949;
.list {
width: 100%;
overflow: hidden;
.item {
padding: 28rpx 0;
overflow: hidden;
display: flex;
border-top: 1px solid #F2F2F2;
&:first-child {
border-top-color: #fff;
}
image {
width: 234rpx;
height: 222rpx;
border-radius: 12rpx;
margin-right: 20rpx;
}
.info {
width: 440rpx;
white-space: nowrap;
.title {
overflow: hidden;
font-size: 28rpx;
text-overflow: ellipsis;
font-weight: 600;
color: #2C2C2C;
}
.desc {
overflow: hidden;
font-size: 28rpx;
text-overflow: ellipsis;
margin-top: 10rpx;
color: #888888;
height: 124rpx;
}
.price {
display: flex;
align-items: center;
justify-content: space-between;
font-size: 24rpx;
font-weight: 400;
color: #FF4949;
}
}
}
color: #888888;
.btn {
width: 140rpx;
line-height: 44rpx;
text-align: center;
background: #FFFFFF;
border-radius: 8rpx;
border: 1rpx solid #FF4949;
font-size: 24rpx;
font-weight: 400;
color: #FF4949;
}
}
}
}
}
}
}
}
</style>
</style>

@ -8,16 +8,17 @@
<u-search style='margin: 0 30rpx;' placeholder="输入用户昵称/姓名/手机号" @search="searchhandle" shape="round"
:show-action="false" height="60" bg-color="#fafafa" v-model="keyword"></u-search>
<view class="store-sort">
<view class="sort-item" :class="{ active: sortType === 'all' }" @click="handleSortType('all')">
<view class="sort-item" :class="{ active: sortType === 'all' }" @click="handleSortType('all','')">
<text>全部</text>
</view>
<view class="sort-item" :class="{ active: sortType === 'no' }" @click="handleSortType('no')">
<view class="sort-item" :class="{ active: sortType === 'no' }" @click="handleSortType('no',0)">
<text>无身份</text>
</view>
<view class="sort-item" :class="{ active: sortType === 'tourist' }" @click="handleSortType('tourist')">
<view class="sort-item" :class="{ active: sortType === 'tourist' }"
@click="handleSortType('tourist',10)">
<text>游客</text>
</view>
<view class="sort-item" :class="{ active: sortType === 'vip' }" @click="handleSortType('vip')">
<view class="sort-item" :class="{ active: sortType === 'vip' }" @click="handleSortType('vip',20)">
<text>会员</text>
</view>
</view>
@ -64,29 +65,31 @@
list: [],
title: '会员管理',
sortType: 'all', //
user_type: '',
};
},
methods: {
//
handleSortType(newSortType) {
handleSortType(newSortType, user_type) {
const app = this
app.user_type = user_type
app.sortType = newSortType
//
this.list = []
this.page = 1;
app.getList()
app.getList(app.user_type)
},
searchhandle() {
this.list = []
this.page = 1;
this.getList()
this.getList(this.user_type)
},
async getList() {
let res = await Vip.getVipList({
page: this.page,
search: this.keyword,
user_type: this.title == '会员管理' ? "10,20" : '30'
user_type: this.user_type,
})
console.log(res, "===")
this.list.push(...res.data.list.data);
@ -131,12 +134,12 @@
title: this.title
});
this.list = []
this.getList()
this.getList(this.user_type)
},
onReachBottom() {
if (this.list.length < this.total) {
this.page++;
this.getList()
this.getList(this.user_type)
}
},
}

@ -2,7 +2,7 @@
<view class="vipInfo">
<view class="msg">
<text>价格区间()</text>
<text>会员加价率%</text>
<text>{{type==0?'会员':'分销'}}加价率%</text>
<text>利润空间(</text>
</view>
<view class="classifyContainer">

@ -0,0 +1,234 @@
<template>
<view class="install">
<view class="install_notice">
尊敬的用户为了方便您<text>下单的产品</text>预约安装售后保修以及咨询官方客服我们将家电手机平板笔记本电脑的主流品牌的预约安装售后保修的<text>官方链接整理如下</text>您只需要对应好品类选择相应的品牌即可直接预约安装售后报修查询官方服务站以及<text>联系官方客服</text>
</view>
<view class="install_content" v-for="(item,index) in list">
<view class="install_name">{{item.name}}</view>
<view class="install_bao">
<view class="install_xiu" v-for="(child,index) in item.children" :key="index" @click="onLookCord">
{{child.name}}
</view>
</view>
</view>
<view class="install_kefu">
<view class="install_cont">
感谢您对我们的信任与支持!如果您的订单有什么疑问或者需要帮助请您在线联系我们的客服人员我司全体工作人员竭诚为您服务!
</view>
</view>
<!-- 核销二维码弹窗 -->
<view class="bigCode" v-if="showQRCodePopup" @click="showQRCodePopup=false">
<view class="cm">
<view class="cm_text">
识别二维码
</view>
<view class="txm">
<image :src="qrcode"
@click="clickImg" mode="" class="codeImg"></image>
</view>
</view>
</view>
</view>
</template>
<script>
import * as newFunApi from '@/api/newFun'
import {
createQrCodeImg
} from '@/utils/qrcode'
export default {
data() {
return {
showQRCodePopup: false,
list: [{
name: '空调报修',
children: [{
name: '空调漏水'
}, {
name: '空调漏水'
}, {
name: '空调外机维修'
}, {
name: '空调漏水'
}, {
name: '空调漏水'
}, {
name: '空调外机维修'
}, {
name: '空调漏水'
}, {
name: '空调漏水'
}, {
name: '空调外机维修'
}]
}, {
name: '电视报修',
children: [{
name: '电视黑屏'
}, {
name: '电视黑屏'
}, {
name: '电视外机维修'
}, {
name: '电视黑屏'
}, {
name: '电视黑屏'
}, {
name: '电视外机维修'
}, {
name: '电视黑屏'
}, {
name: '电视黑屏'
}, {
name: '电视外机维修'
}]
}],
qrcode:''
};
},
onLoad(o) {},
methods: {
onLookCord() {
this.showQRCodePopup = true
let url='https://www.cnblogs.com/majiayin/p/16359337.html'
this.qrcode = createQrCodeImg(url, { 'size': 500 });
},
}
}
</script>
<style lang="scss" scoped>
.install {
overflow: hidden;
margin: 20rpx;
.bigCode {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: rgba(65, 65, 65, 0.46);
display: flex;
align-items: center;
justify-content: center;
.cm {
width: 560rpx;
background: #FFFFFF;
border-radius: 16rpx 16rpx 16rpx 16rpx;
opacity: 1;
padding: 40rpx 0 50rpx 0;
.cm_text {
width: 100%;
height: 42rpx;
font-size: 30rpx;
font-weight: 500;
color: #424242;
line-height: 42rpx;
text-align: center;
}
.txm {
display: flex;
justify-content: center;
margin-top: 30rpx;
.codeImg {
width: 394rpx;
height: 394rpx;
border-radius: 0rpx 0rpx 0rpx 0rpx;
opacity: 1;
}
}
}
}
.install_content {
width: 100%;
// height: 385rpx;
background: #FFFFFF;
border-radius: 10rpx;
margin-top: 25rpx;
.install_name {
height: 80rpx;
background-image: url('/static/install/install_name.png');
background-size: cover;
background-position: center;
font-family: Alibaba PuHuiTi;
font-weight: 400;
font-size: 34rpx;
line-height: 80rpx;
color: #222222;
padding-left: 32rpx;
font-weight: 700;
}
.install_bao {
overflow: hidden;
padding: 25rpx 30rpx 5rpx 30rpx;
display: flex;
justify-content: space-around;
flex-wrap: wrap;
.install_xiu {
font-family: Alibaba PuHuiTi;
font-weight: 400;
font-size: 30rpx;
color: #222222;
padding: 0 32rpx;
height: 70rpx;
background: #FFFFFF;
border-radius: 10rpx;
border: 1rpx solid #CCCCCC;
text-align: center;
line-height: 70rpx;
margin-bottom: 20rpx;
}
}
}
.install_kefu {
width: 100%;
height: 244rpx;
background-image: url('/static/install/install_footer.png');
background-size: cover;
font-family: Alibaba PuHuiTi;
font-weight: 400;
font-size: 28rpx;
color: #222222;
line-height: 48rpx;
margin-bottom: 50rpx;
margin-top: 20rpx;
position: relative;
.install_cont {
position: absolute;
right: 30rpx;
top: 28rpx;
width: 450rpx;
}
}
.install_notice {
width: 100%;
height: 354rpx;
background-image: url('/static/install/install_hedaer.png');
background-size: cover;
font-family: Alibaba PuHuiTi;
font-weight: 400;
font-size: 28rpx;
color: #222222;
padding: 35rpx;
line-height: 48rpx;
text {
font-weight: 700;
}
}
}
</style>

Binary file not shown.

After

Width:  |  Height:  |  Size: 186 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 106 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

Loading…
Cancel
Save