【前端模版】更新移动端模版文件

This commit is contained in:
evoxwht 2022-05-05 12:09:54 +08:00
parent 450f36659d
commit cd17dd5d57
7 changed files with 1922 additions and 1852 deletions

View File

@ -1,14 +1,14 @@
{
"version" : "1",
"prompt" : "template",
"title" : "服务协议与隐私政策",
"message" : "\t请务必审慎阅读、充分理解“服务协议与 隐私政策”各条款,包括但不限于:为了 向你提供即时通讯、内容分享等服务,我 们需要收集你的设备信息、操作日志等个 人信息。你可以在“设置”中查看、变更、删除个人信息并管理你的授权。<br/>
你可以阅读 <a href=\"/pages/columnGoods/static/yszc.html\">《服务协议与隐私政策》</a>了解详细信息。如你同意,请点击“我同意”开始接受我们的服务。",
"title" : "用户协议与隐私政策",
"message" : "\t请务必审慎阅读、充分理解“用户协议与 隐私政策”各条款,包括但不限于:为了 向你提供即时通讯、内容分享等服务,我 们需要收集你的设备信息、操作日志等个 人信息。你可以在“设置”中查看、变更、删除个人信息并管理你的授权。<br/>
你可以阅读 <a href=\"/pages/columnGoods/static/yhxy.html\">《用户协议》</a>与 <a href=\"/pages/columnGoods/static/yszc.html\">《隐私政策》</a>了解详细信息。如你同意,请点击“我同意”开始接受我们的服务。",
"buttonAccept" : "同意并接受",
"buttonRefuse" : "暂不同意",
"second" : {
"title" : "确认提示",
"message" : "进入应用前,你需先同意<a href=\"pages/columnGoods/static/yszc.html\">《服务协议与隐私政策》</a>,否则将退出应用。",
"message" : "进入应用前,你需先同意<a href=\"pages/columnGoods/static/yhxy.html\">《用户协议》</a>与<a href=\"pages/columnGoods/static/yszc.html\">《隐私政策》</a>,否则将退出应用。",
"buttonAccept" : "同意并继续",
"buttonRefuse" : "退出应用"
},

View File

@ -209,6 +209,15 @@ export function spreadOrder(data) {
return request.post('spread/order', data);
}
/**
*
* 事业部/推广订单
* @param object data
*/
export function divisionOrder(data) {
return request.post('division/order', data);
}
/*
* 获取推广人排行
* */

View File

@ -3,7 +3,7 @@
"appid" : "__UNI__A3F1ED4",
"description" : "CRMEB标准版",
"versionName" : "1.0.0",
"versionCode" : 107,
"versionCode" : 100,
"transformPx" : false,
/* 5+App特有相关 */
"app-plus" : {
@ -17,12 +17,10 @@
},
/* 模块配置 */
"modules" : {
"OAuth" : {},
"Geolocation" : {},
"Payment" : {},
"Share" : {},
"VideoPlayer" : {},
"Maps" : {}
"OAuth" : {}
},
"safearea" : {
"bottom" : {
@ -79,13 +77,13 @@
},
"weixin" : {
"__platform__" : [ "ios", "android" ],
"appid" : "wx277a269f3d736d67",
"appid" : "",
"UniversalLinks" : "https://bzapp.crmeb.net/uni-universallinks/__UNI__A3F1ED4/"
}
},
"share" : {
"weixin" : {
"appid" : "wx277a269f3d736d67",
"appid" : "",
"UniversalLinks" : "https://bzapp.crmeb.net/uni-universallinks/__UNI__A3F1ED4/"
}
},
@ -99,8 +97,8 @@
"oauth" : {
"apple" : {},
"weixin" : {
"appid" : "wx277a269f3d736d67",
"appsecret" : "bd08741a055c2ecac5826ff1c048464b",
"appid" : "",
"appsecret" : "",
"UniversalLinks" : "https://bzapp.crmeb.net/uni-universallinks/__UNI__A3F1ED4/"
}
},

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,267 +1,287 @@
<template>
<view :style="colorStyle">
<view class="promoter-order">
<view class='promoterHeader bg-color'>
<view class='headerCon acea-row row-between-wrapper'>
<view>
<view class='name'>累积推广订单</view>
<view><text class='num'>{{count || 0}}</text>单</view>
</view>
<view class='iconfont icon-2'></view>
</view>
</view>
<view class='list' v-if="recordList.length>0">
<block v-for="(item,index) in recordList" :key="index">
<view class='item'>
<view class='title acea-row row-column row-center'>
<view class='data'>{{item.time}}</view>
<view>本月累计推广订单:{{item.count || 0}}单</view>
</view>
<view class='listn'>
<block v-for="(child,indexn) in item.child" :key="indexn">
<view class='itenm'>
<view class='top acea-row row-between-wrapper'>
<view class='pictxt acea-row row-between-wrapper'>
<view class='pictrue'>
<image :src='child.avatar'></image>
</view>
<view class='text line1'>{{child.nickname}}</view>
</view>
<view class='money' v-if="child.type == 'brokerage'">返佣:<text
class='font-color'>¥{{child.number}}</text></view>
<view class='money' v-else>暂未返佣:<text
class='font-color'>¥{{child.number}}</text></view>
</view>
<view class='bottom'>
<view><text class='name'>订单编号:</text>{{child.order_id}}</view>
<view v-if="child.type == 'brokerage'"><text
class='name'>返佣时间:</text>{{child.time}}</view>
<view v-else><text class='name'>下单时间:</text>{{child.time}}</view>
<view class="more" v-if="child.children && child.children.length" @click="open(child)">
{{child.open?"收起":"更多"}}
<text class="iconfont" :class="child.open?'icon-xiangshang':'icon-xiangxia'"></text>
</view>
</view>
<view class="more-record" v-if="child.open">
<view class="more-record-list" v-for="(sp,indexs) in child.children" :key="indexs">
<view class="more-record-box">
<view><text class='name'>单号:</text>{{sp.order_id}}</view>
<view class='money' v-if="sp.type == 'brokerage'">返佣:<text
class='font-color'>¥{{sp.number}}</text></view>
<view class='money' v-else>暂未返佣:<text
class='font-color'>¥{{sp.number}}</text></view>
</view>
</view>
</view>
</view>
</block>
</view>
</view>
</block>
</view>
<view v-if="recordList.length == 0">
<emptyPage title="暂无推广订单~"></emptyPage>
</view>
</view>
<!-- #ifdef MP -->
<!-- <authorize @onLoadFun="onLoadFun" :isAuto="isAuto" :isShowAuth="isShowAuth" @authColse="authColse"></authorize> -->
<!-- #endif -->
<!-- #ifndef MP -->
<home></home>
<!-- #endif -->
</view>
</template>
<script>
import {
spreadOrder
} from '@/api/user.js';
import {
toLogin
} from '@/libs/login.js';
import {
mapGetters
} from "vuex";
// #ifdef MP
import authorize from '@/components/Authorize';
// #endif
import emptyPage from '@/components/emptyPage.vue'
import home from '@/components/home';
import colors from '@/mixins/color.js';
export default {
components: {
// #ifdef MP
authorize,
// #endif
emptyPage,
home
},
mixins: [colors],
data() {
return {
page: 1,
limit: 5,
status: false,
recordList: [],
times: [],
recordCount: 0,
count: 0,
isAuto: false, //没有授权的不会自动授权
isShowAuth: false //是否隐藏授权
};
},
computed: mapGetters(['isLogin']),
onLoad() {
if (this.isLogin) {
this.getRecordOrderList();
} else {
toLogin();
}
},
methods: {
open(item){
item.open = !item.open
},
onLoadFun() {
this.getRecordOrderList();
},
// 授权关闭
authColse: function(e) {
this.isShowAuth = e
},
getRecordOrderList: function() {
let that = this;
let page = that.page;
let limit = that.limit;
let status = that.status;
if (status == true) return;
spreadOrder({
page: page,
limit: limit
}).then(res => {
for (let i = 0; i < res.data.time.length; i++) {
if (!this.times.includes(res.data.time[i].time)) {
this.times.push(res.data.time[i].time)
this.recordList.push({
time: res.data.time[i].time,
count: res.data.time[i].count,
child: []
})
}
}
console.log(this.recordList, this.times.length)
for (let x = 0; x < this.times.length; x++) {
for (let j = 0; j < res.data.list.length; j++) {
if (this.times[x] === res.data.list[j].time_key) {
res.data.list[j].open = false
this.recordList[x].child.push(res.data.list[j])
}
}
}
console.log(this.recordList)
that.count = res.data.count || 0;
that.status = res.data.list.length < 5;
that.page += 1;
});
}
},
onReachBottom: function() {
this.getRecordOrderList();
}
}
</script>
<style scoped lang="scss">
.promoter-order .list .item .title {
height: 133rpx;
padding: 0 30rpx;
font-size: 26rpx;
color: #999;
}
.promoter-order .list .item .title .data {
font-size: 28rpx;
color: #282828;
margin-bottom: 5rpx;
}
.promoter-order .list .item .listn .itenm {
background-color: #fff;
// margin: 0 $uni-index-margin-row;
border-radius: 8rpx;
.more-record{
color: #999;
font-size: 24rpx;
.more-record-list{
padding: 20rpx 30rpx;
border-top: 1px solid #f2f2f2;
.more-record-box{
display: flex;
justify-content: space-between;
}
}
}
}
.promoter-order .list .item .listn .itenm~.itenm {
margin-top: 12rpx;
}
.promoter-order .list .item .listn .itenm .top {
margin-left: 30rpx;
padding-right: 30rpx;
border-bottom: 1rpx solid #eee;
height: 100rpx;
}
.promoter-order .list .item .listn .itenm .top .pictxt {
width: 320rpx;
}
.promoter-order .list .item .listn .itenm .top .pictxt .text {
width: 230rpx;
font-size: 30rpx;
color: #282828;
}
.promoter-order .list .item .listn .itenm .top .pictxt .pictrue {
width: 66rpx;
height: 66rpx;
}
.promoter-order .list .item .listn .itenm .top .pictxt .pictrue image {
width: 100%;
height: 100%;
border-radius: 50%;
border: 3rpx solid #fff;
box-sizing: border-box;
box-shadow: 0 0 15rpx #aaa;
}
.promoter-order .list .item .listn .itenm .top .money {
font-size: 28rpx;
}
.promoter-order .list .item .listn .itenm .bottom {
padding: 20rpx 30rpx;
font-size: 28rpx;
color: #666;
line-height: 1.6;
position: relative;
.more {
font-size: 24rpx;
position: absolute;
right: 12rpx;
bottom: 24rpx;
.iconfont {
font-size: 22rpx;
margin-left: 5rpx;
}
}
}
.promoter-order .list .item .listn .itenm .bottom .name {
color: #999;
}
<template>
<view :style="colorStyle">
<view class="promoter-order">
<view class='promoterHeader bg-color'>
<view class='headerCon acea-row row-between-wrapper'>
<view>
<view class='name'>累积推广订单</view>
<view><text class='num'>{{count || 0}}</text>单</view>
</view>
<view class='iconfont icon-2'></view>
</view>
</view>
<view class='list' v-if="recordList.length>0">
<block v-for="(item,index) in recordList" :key="index">
<view class='item'>
<view class='title acea-row row-column row-center'>
<view class='data'>{{item.time}}</view>
<view>本月累计推广订单:{{item.count || 0}}单</view>
</view>
<view class='listn'>
<block v-for="(child,indexn) in item.child" :key="indexn">
<view class='itenm'>
<view class='top acea-row row-between-wrapper'>
<view class='pictxt acea-row row-between-wrapper'>
<view class='pictrue'>
<image :src='child.avatar'></image>
</view>
<view class='text line1'>{{child.nickname}}</view>
</view>
<view class='money' v-if="child.type == 'brokerage'">返佣:<text
class='font-color'>¥{{child.number}}</text></view>
<view class='money' v-else>暂未返佣:<text
class='font-color'>¥{{child.number}}</text></view>
</view>
<view class='bottom'>
<view><text class='name'>订单编号:</text>{{child.order_id}}</view>
<view v-if="child.type == 'brokerage'"><text
class='name'>返佣时间:</text>{{child.time}}</view>
<view v-else><text class='name'>下单时间:</text>{{child.time}}</view>
<view class="more" v-if="child.children && child.children.length"
@click="open(child)">
{{child.open?"收起":"更多"}}
<text class="iconfont"
:class="child.open?'icon-xiangshang':'icon-xiangxia'"></text>
</view>
</view>
<view class="more-record" v-if="child.open">
<view class="more-record-list" v-for="(sp,indexs) in child.children"
:key="indexs">
<view class="more-record-box">
<view><text class='name'>单号:</text>{{sp.order_id}}</view>
<view class='money' v-if="sp.type == 'brokerage'">返佣:<text
class='font-color'>¥{{sp.number}}</text></view>
<view class='money' v-else>暂未返佣:<text
class='font-color'>¥{{sp.number}}</text></view>
</view>
</view>
</view>
</view>
</block>
</view>
</view>
</block>
</view>
<view v-if="recordList.length == 0">
<emptyPage title="暂无推广订单~"></emptyPage>
</view>
</view>
<!-- #ifdef MP -->
<!-- <authorize @onLoadFun="onLoadFun" :isAuto="isAuto" :isShowAuth="isShowAuth" @authColse="authColse"></authorize> -->
<!-- #endif -->
<!-- #ifndef MP -->
<home></home>
<!-- #endif -->
</view>
</template>
<script>
import {
spreadOrder,
divisionOrder
} from '@/api/user.js';
import {
toLogin
} from '@/libs/login.js';
import {
mapGetters
} from "vuex";
// #ifdef MP
import authorize from '@/components/Authorize';
// #endif
import emptyPage from '@/components/emptyPage.vue'
import home from '@/components/home';
import colors from '@/mixins/color.js';
export default {
components: {
// #ifdef MP
authorize,
// #endif
emptyPage,
home
},
mixins: [colors],
data() {
return {
page: 1,
limit: 5,
status: false,
recordList: [],
times: [],
recordCount: 0,
count: 0,
orderType: 0,
isAuto: false, //没有授权的不会自动授权
isShowAuth: false //是否隐藏授权
};
},
computed: mapGetters(['isLogin']),
onLoad(options) {
if (this.isLogin) {
this.orderType = options.type || 0
this.getRecordOrderList(options.type);
} else {
toLogin();
}
},
methods: {
open(item) {
item.open = !item.open
},
onLoadFun() {
this.getRecordOrderList();
},
// 授权关闭
authColse: function(e) {
this.isShowAuth = e
},
getRecordOrderList() {
let that = this;
let page = that.page;
let limit = that.limit;
let status = that.status;
if (status == true) return;
let fun
if (this.orderType) {
fun = divisionOrder
uni.setNavigationBarTitle({
title: '推广订单列表'
})
} else {
fun = spreadOrder
}
console.log(fun)
fun({
page: page,
limit: limit
}).then(res => {
for (let i = 0; i < res.data.time.length; i++) {
if (!this.times.includes(res.data.time[i].time)) {
this.times.push(res.data.time[i].time)
this.recordList.push({
time: res.data.time[i].time,
count: res.data.time[i].count,
child: []
})
}
}
console.log(this.recordList, this.times.length)
for (let x = 0; x < this.times.length; x++) {
for (let j = 0; j < res.data.list.length; j++) {
if (this.times[x] === res.data.list[j].time_key) {
res.data.list[j].open = false
this.recordList[x].child.push(res.data.list[j])
}
}
}
console.log(this.recordList)
that.count = res.data.count || 0;
that.status = res.data.list.length < 5;
that.page += 1;
});
}
},
onReachBottom() {
this.getRecordOrderList();
}
}
</script>
<style scoped lang="scss">
.promoter-order .list .item .title {
height: 133rpx;
padding: 0 30rpx;
font-size: 26rpx;
color: #999;
}
.promoter-order .list .item .title .data {
font-size: 28rpx;
color: #282828;
margin-bottom: 5rpx;
}
.promoter-order .list .item .listn .itenm {
background-color: #fff;
// margin: 0 $uni-index-margin-row;
border-radius: 8rpx;
.more-record {
color: #999;
font-size: 24rpx;
.more-record-list {
padding: 20rpx 30rpx;
border-top: 1px solid #f2f2f2;
.more-record-box {
display: flex;
justify-content: space-between;
}
}
}
}
.promoter-order .list .item .listn .itenm~.itenm {
margin-top: 12rpx;
}
.promoter-order .list .item .listn .itenm .top {
margin-left: 30rpx;
padding-right: 30rpx;
border-bottom: 1rpx solid #eee;
height: 100rpx;
}
.promoter-order .list .item .listn .itenm .top .pictxt {
width: 320rpx;
}
.promoter-order .list .item .listn .itenm .top .pictxt .text {
width: 230rpx;
font-size: 30rpx;
color: #282828;
}
.promoter-order .list .item .listn .itenm .top .pictxt .pictrue {
width: 66rpx;
height: 66rpx;
}
.promoter-order .list .item .listn .itenm .top .pictxt .pictrue image {
width: 100%;
height: 100%;
border-radius: 50%;
border: 3rpx solid #fff;
box-sizing: border-box;
box-shadow: 0 0 15rpx #aaa;
}
.promoter-order .list .item .listn .itenm .top .money {
font-size: 28rpx;
}
.promoter-order .list .item .listn .itenm .bottom {
padding: 20rpx 30rpx;
font-size: 28rpx;
color: #666;
line-height: 1.6;
position: relative;
.more {
font-size: 24rpx;
position: absolute;
right: 12rpx;
bottom: 24rpx;
.iconfont {
font-size: 22rpx;
margin-left: 5rpx;
}
}
}
.promoter-order .list .item .listn .itenm .bottom .name {
color: #999;
}
</style>

File diff suppressed because one or more lines are too long