Commit d34c842ac3918d53dffea62e23142a682e113595

Authored by wangfan
1 parent 1d4081ff

seller-Invitation

@import "../manager-invitation/tpls.wxss";
.pages{
font-size: 200rpx;
background-size: 100%;
font-size: 34rpx;
}
... ...
// pages/book/b_sms.js
import App from '../../utils/api';
import bcm from '../../utils/bookCommon';
const {regeneratorRuntime} = global
const tpls = {
SMS_154587043: '${guest},您好!${seller_name}已为您预订${date}的桌位:${region_room_name};地址:${seller_addr},电话:${seller_phone}\n客户经理${cusman},期待您的光临!',
SMS_162733710: '尊敬的贵宾,您好!${reserve_date}的用餐,为您安排在${seller_name_addr_room}房间,${cusman}期待您的光临,预祝就餐愉快!',
SMS_163050401: '尊敬的贵宾,您好!\n ${seller_name}已为您安排${date}的用餐,房间:${region_room_name}; \n地址:${seller_addr}; \n电话:${seller_phone} \n预祝用餐愉快,${cusman}期待您的光临!',
};
module.exports ={
tpls:tpls,
getTableName(tables){
let bao = [], san = [];
tables.forEach(t => {
if (t.tid == 2) {
bao.push(t.name);
} else {
san.push(t.name);
}
})
let str = '';
if (bao.length > 0) {
str = '包厢(' + bao.join('、') + ')';
}
if (san.length > 0) {
str += san.join('、');
}
str = str.substr(0, 20);
if (str.indexOf('(') > -1 && str.indexOf(')') < 0) {
str = str.substr(0, 19) + ')';
}
return str;
},
getTableNameOne(tables){
let bao = [];
tables.forEach(t => {
bao.push(t.name);
})
return bao.join('、');
},
getTableNameShort(tables){//短桌位
let str=tables[0].name;
if(tables.length>1){
str+='等'+tables.length+'个';
}
return str;
},
async getTplMsg(bookInfo,tplcode='SMS_163050401'){
let smsData = {}
let txa=['早上','中午','晚上']
let tx=await bcm.getTimeSpaceIndexData(bookInfo.rdate);
switch (tplcode) {
//尊敬的贵宾,您好!(4月6日)(中午)的用餐,为您安排在(好又多复兴路店)(202)房间,(王丽娜)期待您的光临,预祝就餐愉快!
case 'SMS_162733710':
smsData = {
reserve_date: util.unixtoTime(bookInfo.rdate,'MM月DD日')
.replace(/0(\d)/g,function($0,$1){
return $1;
})+' '+txa[tx.timeIndex],
seller_name_addr_room: this.sc.seller.selleralias+this.getTableNameShort(bookInfo.tables).substr(0, 20),
cusman: (bookInfo.cusman || bookInfo.seller.sellername).substr(0, 20),
}
break;
case 'SMS_163050401':
smsData = {
seller_name: bookInfo.seller.sellername.substr(0, 20),
date: bookInfo.rdateStr.replace('日','日'+txa[tx.timeIndex]),
region_room_name: this.getTableNameOne(bookInfo.tables).substr(0, 20),
seller_addr: (bookInfo.seller.real_address || bookInfo.seller.map_address).substr(0, 20),
seller_phone: bookInfo.seller.phone.substr(0, 20),
cusman: (bookInfo.cusman||'').substr(0, 20),
}
break;
default:
let guest = '';
if (bookInfo.sex == 3) {
guest = '贵宾'
} else {
guest = bookInfo.rname.substr(0, 1) + (bookInfo.sex == 1 ? '先生' : '女士')
}
smsData = {
guest: guest,
seller_name: bookInfo.seller.sellername.substr(0, 20),
date: bookInfo.rdateStr,
region_room_name: this.getTableName(bookInfo.tables),
reserve_pnum: (bookInfo.pnum || bookInfo.pnum_str) + '人',
seller_addr: (bookInfo.seller.real_address || bookInfo.seller.map_address).substr(0, 20),
seller_phone: bookInfo.seller.phone.substr(0, 20),
cusman: (bookInfo.cusman || bookInfo.seller.sellername).substr(0, 20),
cusman_phone: (bookInfo.cusman_phone || bookInfo.seller.phone).substr(0, 20),
code: bookInfo.code,
}
break;
}
let tpl = this.tpls[tplcode];
this.smsData = smsData;
tpl = tpl.replace(/\${([^}]+)}/ig, function ($0, $1) {
//console.log($0, $1);
return smsData[$1];
})
return tpl
},
}
\ No newline at end of file
... ...
// pages/customer/detail_owner.js
var mta=require('mta-wechat-analysis')
var mta = require('mta-wechat-analysis')
import util from '../../utils/util';
import App from '../../utils/api';
import TP from '../../utils/tpls';
const {regeneratorRuntime} = global
import ST from '../book/b_sms_tpls';
Page({
/**
* 页面的初始数据
*/
data: {
detail:null,
invite_name:''
},
id:null,
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
this.id=options.id;
let invite_names=wx.getStorageSync('invite_names') ||{};
let invite_name=invite_names[options.id];
if(invite_name){
this.setData({
invite_name:invite_name
})
}
mta.Page.init({
"appID":"500667280",
"eventID":"500667287",
"statPullDownFresh":true,
"statShareApp":true,
"statReachBottom":true,
"lauchOpts":options, //渠道分析
});
/**
* 页面的初始数据
*/
data: {
detail: null,
height: 667,
current: 0,
tpls: [],
seller: {
name: '',
room: '',
date: '',
addr: ''
},
options: {tplid: ''},
hasOwner: true,//是否为发起人
animation: 'animation',
},
id: null,
msgTpl:'',
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
this.id=options.id
let param={
options:options,
hasOwner:options.hasSellerShare==1,//是否为发起人
}
param.tpls=[TP.tpls(options.tplid)]
this.setData(param)
mta.Page.init({
"appID": "500667280",
"eventID": "500667287",
"statPullDownFresh": true,
"statShareApp": true,
"statReachBottom": true,
"lauchOpts": options, //渠道分析
});
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () {
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () {
},
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
this.getDetail();
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
this.getDetail();
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {
/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {
},
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {
},
},
/**
* 用户点击右上角分享
*/
onShareAppMessage: function () {
return this.shareSetting();
},
getDetail(fouce=false){
App.Reserve.Detail({
openid: getApp().openid,
rid: this.id
},fouce).then(res => {
this.setData({
detail:this.formatDatail(res.data)
})
})
},
formatDatail(detail){
detail.rdateStr=util.unixtoTime(detail.ddate,'YYYY/MM/DD 星期WW HH:II');
detail.tableFirst=detail.tables[0].name;
if(detail.tables.length>1){
detail.tableSubInfo='等'+(detail.tables.length)+'个'
+(detail.tables[0].tid==2?'包间':'');
}
if(detail.sex!=3){
detail.rnameStr=detail.rname.substr(0,1)+(detail.sex==1?'先生':'女士')
}else{
detail.rnameStr=detail.rname
}
detail.eatStr='邀请您共进晚餐';
let hi=util.unixtoTime(detail.ddate,'HHII');
if(hi<'10:00'){
detail.eatStr='邀请您共进早餐';
}else if(hi<'15:00'){
detail.eatStr='邀请您共进午餐';
/**
* 用户点击右上角分享
*/
onShareAppMessage: function () {
return this.shareSetting();
},
getDetail(fouce = false){
App.Reserve.Detail({
openid: getApp().openid,
rid: this.data.options.id
}, fouce).then(res => {
let tables=[];
res.data.tables.forEach(t=>{
tables.push(t.name);
})
this.setData({
detail: this.formatDatail(res.data),
seller:{
name:res.data.seller.sellername,
room:tables.join('、'),
date:util.unixtoTime(res.data.ddate,this.data.tpls[this.data.current].timeStr),
addr:res.data.seller.real_address||res.data.seller.map_address,
image:res.data.image_url,
hasOwner:true,
}
})
App.Reserve.SellerInfo({seller_id:res.data.seller.id}).then(async sc=>{
this.msgTpl=await ST.getTplMsg(res.data,sc.data.setting.template_code)
console.log('this.msgTpl',this.msgTpl);
})
})
},
formatDatail(detail){
detail.rdateStr = util.unixtoTime(detail.ddate, 'YYYY/MM/DD 星期WW HH:II');
detail.tableFirst = detail.tables[0].name;
if (detail.tables.length > 1) {
detail.tableSubInfo = '等' + (detail.tables.length) + '个'
+ (detail.tables[0].tid == 2 ? '包间' : '');
}
if (detail.sex != 3) {
detail.rnameStr = detail.rname.substr(0, 1) + (detail.sex == 1 ? '先生' : '女士')
} else {
detail.rnameStr = detail.rname
}
detail.eatStr = '邀请您共进晚餐';
let hi = util.unixtoTime(detail.ddate, 'HHII');
if (hi < '10:00') {
detail.eatStr = '邀请您共进早餐';
} else if (hi < '15:00') {
detail.eatStr = '邀请您共进午餐';
}
// if(!detail.cusman){
// detail.cusman='vking';
// detail.cusman_phone='15877556369';
// detail.cusman_account='wx:vking';
// }
let ns=new Date()/1000
detail.hasCancel=detail.status==4
detail.hasOvered=false
if(!detail.hasCancel){
detail.hasOvered=ns>detail.ddate || detail.status>=2
}
return detail;
},
showManager(){
if(this.data.detail.cusman_phone || this.data.detail.cusman_account){
this.selectComponent('#manager').show();
}
// if(!detail.cusman){
// detail.cusman='vking';
// detail.cusman_phone='15877556369';
// detail.cusman_account='wx:vking';
// }
let ns = new Date() / 1000
detail.hasCancel = detail.status == 4
detail.hasOvered = false
if (!detail.hasCancel) {
detail.hasOvered = ns > detail.ddate || detail.status >= 2
}
return detail;
},
showManager(){
if (this.data.detail.cusman_phone || this.data.detail.cusman_account) {
this.selectComponent('#manager').show();
}
},
lookLocation:function(){
wx.openLocation({
latitude:Number(this.data.detail.seller.lat),
longitude:Number(this.data.detail.seller.long),
scale:17,
address:this.data.detail.seller.map_address,
success:function (res) {
console.log(res)
}
})
},
userinfo(){
if(!this.data.detail.hasCanSuccess){
let userInfo=util.cache('userInfo');
if(userInfo){
userInfo=JSON.stringify({
openid: getApp().openid,
avatar: userInfo.avatarUrl,
nickname: userInfo.nickName,
gender: userInfo.gender
})
}
App.Reserve.SetRelaSuccess({
rid:this.id,
openid:getApp().openid,
is_agree:1,
userinfo:userInfo
}).then(res=>{
App.Reserve.Detail({
openid: getApp().openid,
rid: this.id
},'clear')
wx.navigateTo({
//id={{detail.id}}&rdate={{detail.rdate}}
url:'remind?id='+this.id+'&rdate='+this.data.detail.rdate,
});
})
}else{
// wx.navigateTo({
// url:'invite?id='+this.id,
// });
}
},
setUserInfoSuccess(){
util.toast('授权成功,可以继续转发','none');
},
toast(){
util.toast('本区域暂无配送人员','none');
},
reserveCancel(){
lookLocation: function () {
wx.openLocation({
latitude: Number(this.data.detail.seller.lat),
longitude: Number(this.data.detail.seller.long),
scale: 17,
address: this.data.detail.seller.map_address,
success: function (res) {
console.log(res)
}
})
},
userinfo(){
if (!this.data.detail.hasCanSuccess) {
let userInfo = util.cache('userInfo');
if (userInfo) {
userInfo = JSON.stringify({
... ... @@ -180,50 +172,101 @@ Page({
App.Reserve.SetRelaSuccess({
rid: this.id,
openid: getApp().openid,
cancel: 'cancel',
is_agree: 0,
is_agree: 1,
userinfo: userInfo
}).then(res => {
this.getDetail(true);
App.Reserve.Detail({
openid: getApp().openid,
rid: this.id
}, 'clear')
wx.navigateTo({
//id={{detail.id}}&rdate={{detail.rdate}}
url: 'remind?id=' + this.id + '&rdate=' + this.data.detail.rdate,
});
})
},
shareSetting(){
console.log('this.topicVal',this.topicVal)
if(this.topicVal && this.data.detail.openid==getApp().openid){
App.Reserve.SetTopicFromShare({
rid:this.id,
topic:this.topicVal
})
}
let nickname="";
try{
nickname=util.cache('userInfo').nickName;
}catch(e){}
return {
//title: (nickname||'')+'给你发了一个邀请,点击查看',
title: '你收到一个邀请函,点击查看',
path: '/pages/customer/index?id='+this.id+'&fromid='+getApp().openid+'&invite_name='+nickname+'&hasInvitation=1',
imageUrl:util.cgi('App.Reserve.MakePic&rid=')+this.id,
}
},
} else {
// wx.navigateTo({
// url:'invite?id='+this.id,
// });
}
},
setUserInfoSuccess(){
util.toast('授权成功,可以继续转发', 'none');
},
toast(){
util.toast('本区域暂无配送人员', 'none');
},
reserveCancel(){
let userInfo = util.cache('userInfo');
if (userInfo) {
userInfo = JSON.stringify({
openid: getApp().openid,
avatar: userInfo.avatarUrl,
nickname: userInfo.nickName,
gender: userInfo.gender
})
}
App.Reserve.SetRelaSuccess({
rid: this.id,
openid: getApp().openid,
cancel: 'cancel',
is_agree: 0,
userinfo: userInfo
}).then(res => {
this.getDetail(true);
})
},
shareSetting(){
console.log('this.topicVal', this.topicVal)
if (this.topicVal && this.data.detail.openid == getApp().openid) {
App.Reserve.SetTopicFromShare({
rid: this.id,
topic: this.topicVal
})
}
let nickname = "";
try {
nickname = util.cache('userInfo').nickName;
} catch (e) {
}
return {
//title: (nickname||'')+'给你发了一个邀请,点击查看',
title: '你收到一个邀请函,点击查看',
path: '/pages/customer/index?id=' + this.id + '&fromid=' + getApp().openid + '&invite_name=' + nickname + '&hasInvitation=1',
imageUrl: util.cgi('App.Reserve.MakePic&rid=') + this.id,
}
},
cookbook(){
if(this.data.detail.order && this.data.detail.order.cookbooklist.length>0){
if (this.data.detail.order && this.data.detail.order.cookbooklist.length > 0) {
wx.navigateTo({
url:util.http_build_query({rid:this.id,oid:this.data.detail.order.id,identity:1},'/pack-cookbook/pages/success')
url: util.http_build_query({
rid: this.id,
oid: this.data.detail.order.id,
identity: 1
}, '/pack-cookbook/pages/success')
});
}else{
} else {
App.Advance.CreateOrder({
rid:this.id,
openid:getApp().openid,
}).then(res=>{
if(res.ret!=200){
return util.toast(res.msg,'none')
rid: this.id,
openid: getApp().openid,
}).then(res => {
if (res.ret != 200) {
return util.toast(res.msg, 'none')
}
wx.navigateTo({
url:util.http_build_query({rid:this.id,oid:res.data.id,identity:1,sid:res.data.sellerid},'/pack-cookbook/pages/index')
url: util.http_build_query({
rid: this.id,
oid: res.data.id,
identity: 1,
sid: res.data.sellerid
}, '/pack-cookbook/pages/index')
});
})
}
},
sendmsg(){
wx.setClipboardData({
data: this.msgTpl
})
},
})
... ...
<!--pages/customer/detail_owner.wxml-->
<nav hasHome backgroundColor="rgba(0,0,0,0)" color="#ffffff"></nav>
<view class="pages">
<view class="flex-vc" style="position: relative;">
<view class="invit-logo">
<image src="http://qn.colorcun.com/custom/lite-yd-cook/image/detail_owner_invitation-1-1.png"></image>
</view>
<view class="seller flex-vc">
<view class="title">餐厅</view>
<view class="content name">{{detail.seller.sellername}}</view>
<view class="title">包间</view>
<view class="content">{{detail.tableFirst}}{{detail.tableSubInfo}}</view>
<view class="title">时间</view>
<view class="content">{{detail.rdateStr}}</view>
<view class="title">地址</view>
<view class="content flex-cc" bindtap="lookLocation" style="align-items: flex-start;width:80%;">
<image src="http://qn.colorcun.com/manager-invitation/wx/address.png" class="invit-addr"></image>
<view class="addr">{{detail.seller.real_address||detail.seller.map_address}}</view>
</view>
</view>
<import src="../tpl/invitation"></import>
<nav backgroundColor="rgba(0,0,0,0)" hasHome style="position: fixed;z-index: 1;"></nav>
<view class="pages bg-{{options.tplid}} flex-vc" style="height:{{height}}px;" wx:if="{{options.tplid}}">
<template is="tpl-{{options.tplid}}" data="{{seller,options,hasOwner,animation}}"></template>
<view class="opt-view flex-vc">
<block wx:if="{{!detail.hasOvered && !detail.hasCancel}}">
<userinfo-share class="button-none flex-vc" binduserinfo="setUserInfoSuccess" catchtap="catchtap">
<view class="buts-share animation"></view>
</userinfo-share>
</block>
<block wx:elif="{{detail.hasCancel}}">
<view class="opt-view-tip Medium">订座已取消</view>
</block>
<block wx:else="">
<view class="opt-view-tip Medium">订座已完成</view>
</block>
</view>
<block wx:if="{{!detail.hasOvered && !detail.hasCancel}}">
<view class="opt-button" wx:if="{{detail.seller.is_open_order==1 || detail.seller.is_open_wine==1}}">
<view class="opt flex-cc">
<userinfo class="button-none flex-vc" binduserinfo="toast" wx:if="{{detail.seller.is_open_wine==1}}">
<image class="buts" src="http://qn.colorcun.com/custom/lite-yd-cook/image/detail_owner_invitation-2.png"></image>
</userinfo>
<formids class="button-none flex-vc" bindclick="cookbook" wx:if="{{detail.seller.is_open_order==1}}">
<image class="buts" src="http://qn.colorcun.com/custom/lite-yd-cook/image/detail_owner_invitation-3.png"></image>
</formids>
</view>
</view>
</block>
</view>
<view class="opt-view flex-vc">
<block wx:if="{{!detail.hasOvered && !detail.hasCancel}}">
<view class="opt-view-tip">发邀请函给朋友,获知朋友反馈</view>
<userinfo-share class="button-none flex-vc" binduserinfo="setUserInfoSuccess">
<view class="buts-share"></view>
</userinfo-share>
</block>
<block wx:elif="{{detail.hasCancel}}">
<view class="icon">
<icon type="info" size="47" color="#C9C9C9"/>
</view>
<view class="opt-view-tip Medium">订座已取消</view>
</block>
<block wx:else="">
<view class="icon">
<icon type="success" size="47" color="#C8B16D"/>
<view class="bottom flex-lr" wx:if="{{!detail.hasOvered && !detail.hasCancel}}">
<formids bindclick="sendmsg" class="sendmsg">
短信通知
</formids>
<formids bindclick="cookbook" class="diancan" wx:if="{{detail.seller.is_open_order==1}}">
<view class="buts-text flex-cc">
<image src="http://qn.colorcun.com/manager-invitation/wx2/%E6%8F%90%E5%89%8D%E7%82%B9%E9%A4%90.png" class="icon"></image>
提前点餐
</view>
<view class="opt-view-tip Medium">订座已完成</view>
</formids>
<block wx:if="{{detail.seller.is_open_wine==1}}">
<view class="vline" ></view>
<formids bindclick="toast" class="jiushui">
<view class="buts-text flex-cc">
<image src="http://qn.colorcun.com/manager-invitation/wx2/%E8%87%AA%E5%B8%A6%E9%85%92%E6%B0%B4.png" class="icon"></image>
自带酒水
</view>
</formids>
</block>
</view>
<!--//商务-->
<template name="tpl-1">
<view class="flex-vc shangwu" bindtap="{{options.rid?'goEditor':''}}">
<template is="tpl-shangwu" data="{{...seller,options}}"></template>
</view>
</template>
<!--//温馨-->
<template name="tpl-2">
<template is="tpl-wenxin" data="{{...seller,options}}"></template>
</template>
... ...
/* pages/customer/detail_customer.wxss */
@import "../manager-invitation/tpls.wxss";
.pages{
color:#FFFFFF;
background: url("http://qn.colorcun.com/custom/lite-yd/image/invit-bg.png") #353334;
background-size: 100%;
overflow-y: auto;
position: fixed;
top:0;
bottom: 0;
left:0;
right:0;
font-size: 34rpx;
}
image{
width: 100%;
height: 100%;
}
.invit-logo{
width: 400rpx;
height: 170rpx;
margin-top: 156rpx;
}
.avatar{
width: 88rpx;
height: 88rpx;
border-radius: 50%;
margin-top: 50rpx;
margin-bottom: 22rpx;
overflow: hidden;
}
.invit{
font-size: 26rpx;
color:#FDFCFD;
}
.hr-one{
margin-top: 50rpx;
margin-bottom: 54rpx;
height: 2rpx;
background-color: #999999;
width: 90%;
}
.seller{
margin-top: 80rpx;
}
.seller .title{
font-size: 28rpx;
color:#999999;
margin-bottom: 18rpx;
height: 40rpx;
line-height: 40rpx;
}
.seller .content{
margin-bottom: 40rpx;
font-size: 36rpx;
line-height: 50rpx;
height: 50rpx;
}
.invit-addr{
width: 20rpx;
height: 20rpx;
margin-right: 18rpx;
}
.opt-button{
margin-top: 0rpx;
width: 100%;
.buts-share{
background-image: url("http://qn.colorcun.com/manager-invitation/wx2/%E5%8F%91%E9%82%80%E8%AF%B7%E5%87%BD.png");
}
.opt-view{
.bottom{
position: fixed;
bottom: 40rpx;
bottom: 0;
height: 90rpx;
line-height: 90rpx;
border-top: 2rpx solid #ECD9B7;
background-color: #ECD9B7;
width: 100%;
font-size: 30rpx;
}
.opt{
width: 90%;
margin: 0 auto;
.bottom .sendmsg{
background-color: #262628;
color: #ECD9B7;
min-width: 25%;
}
.opt .buts{
width: 288rpx;
height: 80rpx;
}
.buts-share{
width: 560rpx;
height: 86rpx;
margin: 0 auto;
background-image: url("http://qn.colorcun.com/custom/lite-yd-cook/image/detail_owner_invitation-5.png");
background-size: 100%;
background-repeat: no-repeat;
background-position: center center;
animation-name: butAnimation;
animation-duration: 0.7s;
animation-iteration-count:9999;
}
.opt-view-tip{
font-size: 26rpx;
color: #999999;
margin-bottom: 20rpx;
}
@keyframes butAnimation
{
50% {background-size:90%;}
}
@-webkit-keyframes butAnimation
{
50% {background-size:90%;}
.bottom .diancan{
text-align: center;
color: #794F28;
height: 90rpx;
line-height: 90rpx;
min-width: 33%;
width: 70%;
}
.seller .content .addr{
font-size: 32rpx;
line-height: 40rpx;
.bottom .jiushui{
text-align: center;
color: #794F28;
height: 90rpx;
line-height: 90rpx;
min-width: 33%;
width: 70%;
}
.bottom .diancan .icon{
width: 40rpx;
height: 34rpx;
margin-right: 40rpx;
}
.bottom .jiushui .icon{
width: 32rpx;
height: 38rpx;
margin-right: 40rpx;
}
.buts-text{
height: 90rpx;
line-height: 90rpx;
}
.vline{
background-color: #D3BF9C;
width: 6rpx;
height: 66rpx;
min-width: 6rpx;
}
.invit-addr{
width: 22rpx;
height: 28rpx;
margin-right: 18rpx;
min-width: 22rpx;
margin-top:6rpx ;
.opt-view-tip{
font-size: 30rpx;
color:#ccc;
}
\ No newline at end of file
... ...
... ... @@ -31,7 +31,7 @@
"list": []
},
"miniprogram": {
"current": 49,
"current": 40,
"list": [
{
"id": 0,
... ... @@ -341,7 +341,7 @@
"id": 40,
"name": "邀请Ren pages/customer/index ",
"pathName": "pages/customer/detail_owner_invitation",
"query": "id=6173&fromid=test&hasInvitation=1&hasSellerShare=1",
"query": "id=6173&fromid=test&hasInvitation=1&hasSellerShare=1&tplid=1",
"scene": null
},
{
... ...