Commit 9da1377f02ef38c299c7abda4629a32b51889f8f

Authored by pengye
1 parent b041dc18

邀请函模板9-17、公共标题

@@ -70,7 +70,8 @@ @@ -70,7 +70,8 @@
70 "pages/reserve/shopHome", 70 "pages/reserve/shopHome",
71 "pages/customer/joinSeller", 71 "pages/customer/joinSeller",
72 "pages/customer/collectSeller", 72 "pages/customer/collectSeller",
73 - "pages/customer/detail_owner_invitation_new" 73 + "pages/customer/detail_owner_invitation_new",
  74 + "pages/customer/detail_owner_invitation9"
74 ], 75 ],
75 "requiredPrivateInfos": [ 76 "requiredPrivateInfos": [
76 "getLocation", 77 "getLocation",
  1 +// components/titleStyle/titleStyle.js
  2 +Component({
  3 + /**
  4 + * 组件的属性列表
  5 + */
  6 + properties: {
  7 + titleStyleType: { //标题类型
  8 + type: String,
  9 + value: '1'
  10 + },
  11 + titleText: { //标题
  12 + type: String,
  13 + value: ''
  14 + },
  15 + isWhite: { //主题色
  16 + type: String,
  17 + value: ''
  18 + },
  19 + },
  20 +
  21 + /**
  22 + * 组件的初始数据
  23 + */
  24 + data: {
  25 + num1: [1, 2, 3, 4, 5, 6, 7, 8],
  26 + num2: [8, 7, 6, 5, 4, 3, 2, 1],
  27 + },
  28 + /**
  29 + * 组件的方法列表
  30 + */
  31 + methods: {
  32 +
  33 + }
  34 +})
  1 +{
  2 + "component": true,
  3 + "usingComponents": {}
  4 +}
  1 +<!--components/titleStyle/titleStyle.wxml-->
  2 +<view class="{{isWhite}}">
  3 + <!-- -->
  4 + <view wx:if="{{titleStyleType == '1'}}" class="topic">
  5 + <block wx:for="{{num1}}" wx:key="index"><text class="text{{item}}"></text></block>
  6 + <text class="texts">{{titleText}}</text>
  7 + <block wx:for="{{num2}}" wx:key="index"><text class="text{{item}}"></text></block>
  8 + </view>
  9 + <view wx:if="{{titleStyleType == '2'}}" class="topic topic2">
  10 + <view class="titleLine2"></view>
  11 + <view class="drop"></view>
  12 + <text class="texts">{{titleText}}</text>
  13 + <view class="drop"></view>
  14 + <view class="titleLine2"></view>
  15 + </view>
  16 + <view wx:if="{{titleStyleType == '3'}}" class="topic topic3">
  17 + <view class="drop"></view>
  18 + <text class="texts">{{titleText}}</text>
  19 + <view class="titleLine3"></view>
  20 + </view>
  21 + <view wx:if="{{titleStyleType == '4'}}" class="topic topic4">
  22 + <view class="drop"></view>
  23 + <text class="texts">{{titleText}}</text>
  24 + </view>
  25 + <view wx:if="{{titleStyleType == '5'}}" class="topic topic5">
  26 + <view class="line1"></view>
  27 + <view class="textBox">
  28 + <view class="drop"></view>
  29 + <text class="texts">{{titleText}}</text>
  30 + <view class="drop"></view>
  31 + </view>
  32 + <view class="line2"></view>
  33 + </view>
  34 + <view wx:if="{{titleStyleType == '6'}}" class="topic topic6">
  35 + <text class="texts">{{titleText}}</text>
  36 + <view class="lineBox">
  37 + <view class="left"></view>
  38 + <view class="line6"></view>
  39 + <view class="right"></view>
  40 + </view>
  41 + </view>
  42 + <view wx:if="{{titleStyleType == '7'}}" class="topic topic7">
  43 + <text class="texts">{{titleText}}>>>></text>
  44 + </view>
  45 + <view wx:if="{{titleStyleType == '8'}}" class="topic topic8">
  46 + <text class="texts">{{titleText}}</text>
  47 + <image src="{{isWhite == 'pearlWhite' ? 'https://nosqn.colorcun.com/triangleWhite.png' : 'https://nosqn.colorcun.com/triangle.png'}}" mode="" />
  48 + <image src="{{isWhite == 'pearlWhite' ? 'https://nosqn.colorcun.com/triangleWhite.png' : 'https://nosqn.colorcun.com/triangle.png'}}" mode="" />
  49 + <image src="{{isWhite == 'pearlWhite' ? 'https://nosqn.colorcun.com/triangleWhite.png' : 'https://nosqn.colorcun.com/triangle.png'}}" mode="" />
  50 + </view>
  51 + <view wx:if="{{titleStyleType == '9'}}" class="topic">
  52 + <text class="texts">{{titleText}}</text>
  53 + </view>
  54 + <view wx:if="{{titleStyleType == '10'}}" class="topic topic10">
  55 + <text class="texts">{{titleText}}</text>
  56 + </view>
  57 + <view wx:if="{{titleStyleType == '11'}}" class="topic topic11">
  58 + <text class="texts">{{titleText}}</text>
  59 + </view>
  60 + <view wx:if="{{titleStyleType == '12'}}" class="topic topic12">
  61 + <text class="texts">{{titleText}}</text>
  62 + </view>
  63 + <view wx:if="{{titleStyleType == '13'}}" class="topic topic10 topic13">
  64 + <text class="texts">{{titleText}}</text>
  65 + </view>
  66 +</view>
  1 +/* components/titleStyle/titleStyle.wxss */
  2 +.topic {
  3 + display: flex;
  4 + justify-content: space-between;
  5 + align-items: center;
  6 + margin: 0 20rpx 40rpx 20rpx;
  7 +}
  8 +
  9 +.topic .text1 {
  10 + width: 2rpx;
  11 + height: 6rpx;
  12 + background: #FFEFC5;
  13 +}
  14 +
  15 +.topic .text2 {
  16 + width: 4rpx;
  17 + height: 6rpx;
  18 + background: #FFEFC5;
  19 +}
  20 +
  21 +.topic .text3 {
  22 + width: 6rpx;
  23 + height: 6rpx;
  24 + background: #FFEFC5;
  25 +}
  26 +
  27 +.topic .text4 {
  28 + width: 10rpx;
  29 + height: 6rpx;
  30 + background: #FFEFC5;
  31 +}
  32 +
  33 +.topic .text5 {
  34 + width: 16rpx;
  35 + height: 6rpx;
  36 + background: #FFEFC5;
  37 +}
  38 +
  39 +.topic .text6 {
  40 + width: 26rpx;
  41 + height: 6rpx;
  42 + background: #FFEFC5;
  43 +}
  44 +
  45 +.topic .text7 {
  46 + width: 42rpx;
  47 + height: 6rpx;
  48 + background: #FFEFC5;
  49 +}
  50 +
  51 +.topic .text8 {
  52 + width: 68rpx;
  53 + height: 6rpx;
  54 + background: #FFEFC5;
  55 +}
  56 +
  57 +.topic .text9 {
  58 + width: 110rpx;
  59 + height: 6rpx;
  60 + background: #FFEFC5;
  61 +}
  62 +
  63 +.topic3 .texts {
  64 + margin: 0 14rpx;
  65 +}
  66 +
  67 +.titleLine2 {
  68 + flex: 1;
  69 + height: 4rpx;
  70 + background: #FFEFC5;
  71 +}
  72 +
  73 +.drop {
  74 + width: 16rpx;
  75 + height: 16rpx;
  76 + border-radius: 50%;
  77 + background: #FFEFC5;
  78 +}
  79 +
  80 +.topic2 .drop {
  81 + margin: 0 14rpx;
  82 +}
  83 +
  84 +.texts {
  85 + font-family: PingFang SC;
  86 + font-weight: 500;
  87 + font-size: 40rpx;
  88 + color: #FFEFC5;
  89 +}
  90 +
  91 +.titleLine3 {
  92 + flex: 1;
  93 + height: 4rpx;
  94 + background: #FFEFC5;
  95 +}
  96 +
  97 +.topic4 {
  98 + justify-content: flex-start;
  99 + padding-bottom: 10rpx;
  100 + border-bottom: 4rpx solid #FFEFC5;
  101 +}
  102 +
  103 +.topic4 .drop {
  104 + margin-right: 10rpx;
  105 +}
  106 +
  107 +.topic5 {
  108 + flex-direction: column;
  109 + position: relative;
  110 + align-items: flex-start;
  111 +}
  112 +
  113 +.topic5 .line1 {
  114 + width: 75%;
  115 + height: 4rpx;
  116 + background: #FFEFC5;
  117 +}
  118 +
  119 +.topic5 .textBox {
  120 + width: 100%;
  121 + display: flex;
  122 + align-items: center;
  123 + justify-content: center;
  124 + padding: 10rpx 0;
  125 +}
  126 +
  127 +.topic5 .line2 {
  128 + width: 75%;
  129 + height: 4rpx;
  130 + position: absolute;
  131 + right: 0;
  132 + bottom: 0;
  133 + background: #FFEFC5;
  134 +}
  135 +
  136 +.topic5 .textBox .texts {
  137 + margin: 0 10rpx;
  138 +}
  139 +
  140 +.topic6 {
  141 + flex-direction: column;
  142 +}
  143 +
  144 +.topic6 .lineBox {
  145 + width: 100%;
  146 + display: flex;
  147 + align-items: center;
  148 +}
  149 +
  150 +.topic6 .line6 {
  151 + width: calc(100% - 32rpx);
  152 + height: 4rpx;
  153 + background: #FFEFC5;
  154 +}
  155 +
  156 +.lineBox .left {
  157 + width: 0;
  158 + height: 0;
  159 + border-right: 16rpx solid #FFEFC5;
  160 + border-bottom: 16rpx solid transparent;
  161 + border-top: 16rpx solid transparent;
  162 +}
  163 +
  164 +.lineBox .right {
  165 + width: 0;
  166 + height: 0;
  167 + border-left: 16rpx solid #FFEFC5;
  168 + border-top: 16rpx solid transparent;
  169 + border-bottom: 16rpx solid transparent;
  170 +}
  171 +
  172 +.topic7 {
  173 + justify-content: flex-start;
  174 + padding-bottom: 10rpx;
  175 + border-bottom: 4rpx solid #FFEFC5;
  176 +}
  177 +
  178 +.topic8 {
  179 + display: flex;
  180 + justify-content: flex-start;
  181 + align-items: center;
  182 +}
  183 +
  184 +.topic8 image {
  185 + width: 20rpx;
  186 + height: 26rpx;
  187 + box-sizing: content-box !important;
  188 + margin-bottom: 0 !important;
  189 + padding: 0 !important;
  190 +}
  191 +
  192 +.topic8 image:nth-of-type(1) {
  193 + margin-left: 14rpx;
  194 +}
  195 +
  196 +.topic10 .texts {
  197 + padding: 10rpx 40rpx;
  198 + background: #FFEFC5;
  199 + border-top-right-radius: 30rpx;
  200 + color: #000;
  201 +}
  202 +
  203 +.topic11 {
  204 + background: url('https://nosqn.colorcun.com/titleStyle11.png') no-repeat;
  205 + background-size: 100% 100%;
  206 + justify-content: center;
  207 + padding: 10rpx 0;
  208 +}
  209 +
  210 +.topic12 {
  211 + background: url('https://nosqn.colorcun.com/titleStyle12.png') no-repeat;
  212 + background-size: 100% 100%;
  213 + justify-content: center;
  214 + padding: 10rpx 0;
  215 +}
  216 +
  217 +.topic11 .texts,
  218 +.topic12 .texts {
  219 + color: #000;
  220 +}
  221 +
  222 +.topic13 {
  223 + border-bottom: 4rpx solid #FFEFC5;
  224 +}
  225 +
  226 +.pearlWhite .topic .text1,
  227 +.pearlWhite .topic .text2,
  228 +.pearlWhite .topic .text3,
  229 +.pearlWhite .topic .text4,
  230 +.pearlWhite .topic .text5,
  231 +.pearlWhite .topic .text6,
  232 +.pearlWhite .topic .text7,
  233 +.pearlWhite .topic .text8,
  234 +.pearlWhite .topic .text9,
  235 +.pearlWhite .drop,
  236 +.pearlWhite .titleLine3,
  237 +.pearlWhite .topic5 .line1,
  238 +.pearlWhite .topic5 .line2,
  239 +.pearlWhite .topic6 .line6,
  240 +.pearlWhite .titleLine2 {
  241 + background: #578C69;
  242 +}
  243 +
  244 +.pearlWhite .topic4,
  245 +.pearlWhite .topic7 {
  246 + border-bottom: 4rpx solid #578C69;
  247 +}
  248 +
  249 +.pearlWhite .lineBox .left {
  250 + border-right: 16rpx solid #578C69;
  251 +}
  252 +
  253 +.pearlWhite .lineBox .right {
  254 + border-left: 16rpx solid #578C69;
  255 +}
  256 +
  257 +.pearlWhite .texts {
  258 + color: #578C69;
  259 +}
  260 +
  261 +.pearlWhite .topic13 .texts {
  262 + color: #fff;
  263 +}
  264 +
  265 +.pearlWhite .topic13 {
  266 + border-bottom: 4rpx solid #abc5b4;
  267 +}
  268 +
  269 +.pearlWhite .topic10 .texts,
  270 +.pearlWhite .topic13 .texts {
  271 + background: #abc5b4;
  272 + color: #fff;
  273 +}
  274 +
  275 +.pearlWhite .topic11 {
  276 + background: url(https://nosqn.colorcun.com/titleStyleWhite1.png) no-repeat;
  277 + background-size: 100% 100%;
  278 + justify-content: center;
  279 + padding: 10rpx 0;
  280 +}
  281 +
  282 +.pearlWhite .topic12 {
  283 + background: url(https://nosqn.colorcun.com/titleStyleWhite2.png) no-repeat;
  284 + background-size: 100% 100%;
  285 + justify-content: center;
  286 + padding: 10rpx 0;
  287 +}
  288 +
  289 +.pearlWhite .topic11 .texts,
  290 +.pearlWhite .topic12 .texts {
  291 + color: #fff;
  292 +}
  1 +// pages/customer/detail_owner_invitation9.js
  2 +var mta = require('mta-wechat-analysis')
  3 +import util from '../../utils/util';
  4 +import App from '../../utils/api';
  5 +import TP from '../../utils/tpls';
  6 +import RS from '../../utils/reserveStatus'
  7 +var plugin = requirePlugin("WechatSI");
  8 +import canvas from "./canvas"
  9 +Page({
  10 + /**
  11 + * 页面的初始数据
  12 + */
  13 + data: {
  14 + options: {
  15 + tplid: ''
  16 + },
  17 + tableNum: 0,
  18 + detail: {},
  19 + staffinfo: {},
  20 + chef: {},
  21 + marketing: {},
  22 + home: {},
  23 + reserve: {},
  24 + signboard: {},
  25 + store: {},
  26 + recharge_data: {},
  27 + coupon_dataList: [],
  28 + current: 0,
  29 + seller: {
  30 + name: '',
  31 + tablesText: '',
  32 + date: '',
  33 + addr: ''
  34 + },
  35 + priceInfo: '',
  36 + scoreInfo: '',
  37 + discount: '',
  38 + certificate: '',
  39 + dataStr: Date.now() * 1 / 1000,
  40 + swich_phone: '0',
  41 + is_comments: '0',
  42 + is_user_comments: false,
  43 + tableinfo: [],
  44 + roomimage: [],
  45 + StyleType: '',
  46 + showMoreTip: true,
  47 + settingUrl: '',
  48 + inviteImgUrl: '',
  49 + themeColor: '',
  50 + screenHeight: '',
  51 + hasValueOrder: false, //商家是否开通提前点餐功能
  52 + hasValueCertificate: false, //商家是否开通优惠券功能
  53 + hasValueRecharge: false, //商家是否开通充值功能
  54 + hasValueBroadcast: false, //商家是否能播报,只有极速版不能播报
  55 + _attentionAnim: {},
  56 + isPlay: '1',
  57 + titleType: '', //标题样式
  58 + num1: [1, 2, 3, 4, 5, 6, 7, 8],
  59 + num2: [8, 7, 6, 5, 4, 3, 2, 1],
  60 + titleType: '', //标题样式
  61 + paymentStatus: '', //定金支付状态 1支付 0未支付
  62 + reserveData: {}, //自定义图文数据
  63 + toastBool: false, //支付定金提示框
  64 + toastText: '', //支付定金提示文字
  65 + paymentId: '', //定金id
  66 + wxml: null,
  67 + imgSrc: '', //canvas图片地址
  68 + },
  69 + tablestr: '',
  70 + urlsValue: [],
  71 + screenHeight: '',
  72 + attentionAnim: {},
  73 + audioCtx: '', //播报
  74 + timers: null, // 动画定时器
  75 + n: 0,
  76 + /**
  77 + * 生命周期函数--监听页面加载
  78 + */
  79 + onLoad(options) {
  80 + this.id = options.id
  81 + let param = {
  82 + options: options,
  83 + hasOwner: options.hasSellerShare == 1, //是否为发起人
  84 + }
  85 + param.tpls = [TP.tpls(options.tplid)]
  86 + console.log(param);
  87 + console.log(options);
  88 + this.setData(param)
  89 + mta.Page.init({
  90 + "appID": "500667280",
  91 + "eventID": "500667287",
  92 + "statPullDownFresh": true,
  93 + "statShareApp": true,
  94 + "statReachBottom": true,
  95 + "lauchOpts": options, //渠道分析
  96 + });
  97 + const systemInfo = wx.getSystemInfoSync();
  98 + this.screenHeight = systemInfo.windowHeight; // 获取屏幕高度
  99 + },
  100 + // 页面滚动事件
  101 + onPageScroll: function (event) {
  102 + const scrollTop = event.scrollTop * 1 + this.screenHeight - 80; // 获取滚动的距离
  103 + if (scrollTop < this.screenHeight) {
  104 + this.setData({
  105 + showMoreTip: true
  106 + });
  107 + } else {
  108 + this.setData({
  109 + showMoreTip: false
  110 + });
  111 + }
  112 + },
  113 + // 点击了解更多会员优惠政策
  114 + gotoFavourableList() {
  115 + let url = util.http_build_query({
  116 + sellerName: this.data.seller.name,
  117 + sellerid: this.data.seller.sid,
  118 + oid: this.data.detail.id,
  119 + types: '1'
  120 + }, '/pack-cookbook/pages/favourableList')
  121 + wx.navigateTo({
  122 + url
  123 + })
  124 + },
  125 + // 去评价
  126 + evaluateFun() {
  127 + let url = util.http_build_query({
  128 + sellerName: this.data.seller.name,
  129 + sellerid: this.data.seller.sid,
  130 + oid: this.data.detail.id,
  131 + types: '1',
  132 + previousPage: '1',
  133 + }, '/pages/pinglun/createOpinion')
  134 + wx.navigateTo({
  135 + url
  136 + })
  137 + },
  138 + /**
  139 + * 用户点击右上角分享
  140 + */
  141 + onShareAppMessage: function () {
  142 + return this.sharesetting();
  143 + },
  144 + /**
  145 + * 监听用户点击分享到朋友圈按钮的操作
  146 + */
  147 + onShareTimeline() {
  148 + return this.sharesetting();
  149 + },
  150 + /**
  151 + * 生命周期函数--监听页面显示
  152 + */
  153 + onShow: function () {
  154 + this.getDetail()
  155 + this.getText()
  156 + this.getPaymentStatus()
  157 + },
  158 + // 复制微信号
  159 + copyWeChat() {
  160 + if (this.data.staffinfo.wechat) {
  161 + wx.setClipboardData({
  162 + data: this.data.staffinfo.wechat,
  163 + success(res) {
  164 + wx.getClipboardData({
  165 + success(res) {
  166 + console.log(res.data) // data
  167 + }
  168 + })
  169 + }
  170 + })
  171 + } else {
  172 + console.log('无微信号')
  173 + }
  174 + },
  175 + // 拨打电话
  176 + call(e) {
  177 + const phone = e.currentTarget.dataset['phone'];
  178 + wx.reportMonitor('1012', 1)
  179 + wx.makePhoneCall({
  180 + phoneNumber: phone
  181 + })
  182 + },
  183 + // 跳转到商家入驻页
  184 + gotoJoinSeller() {
  185 + wx.navigateTo({
  186 + url: '/pages/customer/joinSeller',
  187 + })
  188 + },
  189 + // 导航
  190 + looklocation: function () {
  191 + wx.reportMonitor('1015', 1)
  192 + wx.openLocation({
  193 + latitude: Number(this.data.seller.lat),
  194 + longitude: Number(this.data.seller.long),
  195 + scale: 17,
  196 + address: this.data.seller.addr,
  197 + success: function (res) {
  198 + console.log(res)
  199 + }
  200 + })
  201 + },
  202 + // 获取包间图片列表
  203 + getroomimage(sellerid) {
  204 + App.Tables.GetTablesPhoto({
  205 + sellerid,
  206 + tableids: this.tablestr
  207 + }).then((json) => {
  208 + if (json.ret == 200) {
  209 + this.setData({
  210 + roomimage: json.data
  211 + })
  212 + var urlsArr = [];
  213 + json.data.forEach((v, i) => {
  214 + urlsArr.push(v.url);
  215 + })
  216 + this.urlsValue = urlsArr;
  217 + console.log('urlsArr', urlsArr)
  218 + console.log('roomimage', json.data)
  219 + }
  220 + })
  221 + },
  222 + // 预览包间图片
  223 + lookroom(e) {
  224 + const item = e.currentTarget.dataset['item'];
  225 + wx.previewImage({
  226 + current: item.url, // 当前显示图片的http链接
  227 + urls: this.urlsValue, // 需要预览的图片http链接列表
  228 + })
  229 + },
  230 + // 获取店铺详情
  231 + getDetail() {
  232 + App.Reserve.Detail({
  233 + openid: getApp().openid,
  234 + rid: this.data.options.id
  235 + }).then(res => {
  236 + let tablesText = '', //桌子信息
  237 + deskStr = '',
  238 + tableNum = 0;
  239 + let tableinfo = util.determine(res.data.tableinfo);
  240 + console.log('tableinfo', tableinfo);
  241 + res.data.tables.forEach((t, i) => {
  242 + tableNum += t.table_pnum * 1
  243 + tablesText += t.rname + t.name + (i == (res.data.tables.length - 1) ? '' : '、');
  244 + deskStr += t.name + (i == (res.data.tables.length - 1) ? '' : '、');
  245 + })
  246 + let tabaleids = [];
  247 + res.data.tables.forEach(t => {
  248 + tabaleids.push(t.id);
  249 + })
  250 + this.tablestr = tabaleids.toString();
  251 + let reserev = RS.reserve(res.data)
  252 + let dateSmart = util.unixtoTime(reserev.ddate, 'YYYY-MM-DD 星期WW');
  253 + let yearMonthDay = util.unixtoTime(reserev.ddate, 'YYYY年MM月DD日')
  254 + let yearMonth = util.unixtoTime(reserev.ddate, 'MM月DD日')
  255 + let dateStr = util.unixtoTime(reserev.ddate, 'HH点')
  256 + let dateStrDivide = util.unixtoTime(reserev.ddate, 'II分')
  257 + console.log('dateSmart', dateSmart);
  258 + this.setData({
  259 + detail: this.formatDatail(reserev, dateSmart),
  260 + tableNum,
  261 + tableinfo,
  262 + is_user_comments: res.data.is_user_comments,
  263 + seller: {
  264 + name: reserev.seller.sellername,
  265 + sid: reserev.sid,
  266 + date: dateSmart,
  267 + tablesText,
  268 + addr: reserev.seller.real_address || reserev.seller.map_address,
  269 + image: reserev.image_url,
  270 + hasOwner: true,
  271 + type: reserev.type,
  272 + is_set_ddate: reserev.is_set_ddate,
  273 + hasUpTime: reserev.type == 1 && reserev.hasRunning && reserev.status != 2,
  274 + tel: reserev.seller.seller_tel.split(',')[0],
  275 + soltName: reserev.soltName,
  276 + dateTime: util.unixtoTime(reserev.ddate, 'HH:II'),
  277 + time: util.unixtoTime(reserev.ddate, '星期WW HH:II'),
  278 + lat: reserev.seller.lat,
  279 + long: reserev.seller.long,
  280 + yearMonthDay,
  281 + yearMonth,
  282 + dateStr,
  283 + deskStr,
  284 + dateStrDivide: dateStrDivide == '00分' ? '' : dateStrDivide,
  285 + seller_tel: reserev.seller.seller_tel,
  286 + }
  287 + })
  288 + console.log('reserev reserev', reserev);
  289 + console.log('seller seller', this.data.seller);
  290 + console.log('detail detail', this.data.detail);
  291 + setTimeout(() => {
  292 + this.getstaffinfo(res.data.uid, reserev.sid);
  293 + this.getroomimage(reserev.sid)
  294 + this.getSellerVersionFun(reserev.sid);
  295 + this.painterBtn(reserev.seller.seller_image, reserev.seller.sellername, util.unixtoTime(reserev.ddate, 'MM月DD日'), util.unixtoTime(reserev.ddate, '周WW HH:II'));
  296 + }, 0);
  297 + }).catch(res => {
  298 + console.log(res, '详情请求失败');
  299 + })
  300 + },
  301 + // 获取商家版本,不是超能版或者没有开通对应模块,不显示
  302 + getSellerVersionFun(sellerid) {
  303 + App.SellerVersion.GetSellerVersion({
  304 + sellerid
  305 + }).then((res) => {
  306 + let data = res.data;
  307 + console.log('版本列表', data);
  308 + if (data && data.length > 0) {
  309 + data.sort((a, b) => b.cdate * 1 - a.cdate * 1);
  310 + // 获取店铺当前版本 (cdate最大最后一个充入的 && 当前时间有效 && 当前版本)
  311 + let obj = data.find(item => item.vtype == 1 || item.vtype == 2 || item.vtype == 4);
  312 + console.log('当前版本', {
  313 + ...obj
  314 + });
  315 + // 提前点餐功能:超能版 || 有提前点餐模块
  316 + const hasValueOrder = obj.vtype == '1' || data.some(item => item.vid == '6');
  317 + // 优惠券功能:超能版 || 高级版 || 有优惠券模块
  318 + const hasValueCertificate = obj.vtype == '1' || obj.vtype == '4' || data.some(item => item.vid == '8');
  319 + // 充值功能:超能版 || 有充值模块
  320 + const hasValueRecharge = obj.vtype == '1' || data.some(item => item.vid == '9');
  321 + // 播报功能:超能版 || 标准版 || 标准版首年 || 高级版
  322 + const hasValueBroadcast = obj.vtype == '1' || obj.vid == '4' || obj.vid == '13' || obj.vtype == '4';
  323 + this.setData({
  324 + hasValueOrder,
  325 + hasValueCertificate,
  326 + hasValueRecharge,
  327 + hasValueBroadcast,
  328 + })
  329 + }
  330 + })
  331 + },
  332 + // 通过预订ID查收定金详情
  333 + getPaymentStatus() {
  334 + App.Reserve.GetReserveDepositByRid({
  335 + rid: this.data.options.id
  336 + }).then(res => {
  337 + if (res.ret == 200 && res.data && res.data.length > 0) {
  338 + let data = res.data[0];
  339 + this.setData({
  340 + paymentId: data.id,
  341 + paymentStatus: data.trade_state == 'SUCCESS' ? '1' : '0'
  342 + })
  343 + }
  344 + })
  345 + },
  346 + // 获取自定义图文内容
  347 + getText() {
  348 + App.Reserve.GetReserveImgText({
  349 + rid: this.data.options.id
  350 + }).then(res => {
  351 + if (res.ret == 200 && res.data) {
  352 + let data = res.data;
  353 + let content = util.determine(data.content)
  354 + console.log('contentcontentcontent', content);
  355 + this.setData({
  356 + reserveData: {
  357 + title: data.title || '',
  358 + content,
  359 + }
  360 + })
  361 + }
  362 + })
  363 + },
  364 + // 点击支付定金
  365 + paymentFun() {
  366 + let that = this;
  367 + App.PayOnline.CombineTransactionsByDeposit({
  368 + id: this.data.paymentId,
  369 + openid: getApp().openid,
  370 + }).then(res => {
  371 + if (res.ret == 200) {
  372 + wx.requestPayment({
  373 + timeStamp: res.data.timeStamp + '',
  374 + nonceStr: res.data.nonceStr,
  375 + package: res.data.package,
  376 + signType: res.data.signType,
  377 + paySign: res.data.paySign,
  378 + success(ress) {
  379 + console.log('微信支付结果', ress);
  380 + if (ress.errMsg == 'requestPayment:ok') {
  381 + console.log('支付成功', ress);
  382 + that.setData({
  383 + paymentStatus: '1',
  384 + toastBool: true,
  385 + toastText: '支付成功'
  386 + })
  387 + that.hideToast();
  388 + return
  389 + }
  390 + console.log('支付失败1', ress);
  391 + that.setData({
  392 + toastBool: true,
  393 + toastText: '支付失败,请重新支付'
  394 + })
  395 + that.hideToast();
  396 + },
  397 + fail(ress) {
  398 + console.log('支付失败2', ress);
  399 + that.setData({
  400 + toastBool: true,
  401 + toastText: '支付失败,请重新支付'
  402 + })
  403 + that.hideToast();
  404 + },
  405 + })
  406 + } else {
  407 + wx.showToast({
  408 + title: res.msg,
  409 + icon: 'none',
  410 + })
  411 + }
  412 + })
  413 + },
  414 + // 关闭支付失败或者成功弹框
  415 + hideToast() {
  416 + setTimeout(() => {
  417 + this.setData({
  418 + toastBool: false
  419 + })
  420 + }, 1500)
  421 + },
  422 + // 客户经理获取基本信息
  423 + getstaffinfo(uid, sid) {
  424 + console.log('sellerid', this.data.detail.seller.id);
  425 + App.Activity.GetCustomerActivityBaseinfo({
  426 + sellerid: this.data.detail.seller.id,
  427 + uid
  428 + }).then((json) => {
  429 + if (json.ret == 200) {
  430 + console.log('staffinfostaffinfostaffinfo', json.data)
  431 + this.setData({
  432 + staffinfo: json.data
  433 + })
  434 + this.getSellerTemplateConfFun(sid);
  435 + }
  436 + })
  437 + },
  438 + // 提前点餐
  439 + cookbook() {
  440 + if (this.data.detail.order && this.data.detail.order.cookbooklist.length > 0) {
  441 + let data = {
  442 + rid: this.id,
  443 + oid: this.data.detail.order.id,
  444 + sellerName: this.data.seller.name,
  445 + sid: this.data.seller.sid,
  446 + identity: '1',
  447 + hasSuccess: '1',
  448 + }
  449 + wx.navigateTo({
  450 + url: `/pack-cookbook/pages/success_new?hasSuccess=${data.hasSuccess}&identity=${data.identity}&oid=${data.oid}&rid=${data.rid}&sellerName=${data.sellerName}&sid=${data.sid}`,
  451 + })
  452 + } else {
  453 + App.Advance.CreateOrder({
  454 + rid: this.id,
  455 + openid: getApp().openid,
  456 + }).then(res => {
  457 + if (res.ret != 200) {
  458 + return util.toast(res.msg, 'none')
  459 + }
  460 + wx.navigateTo({
  461 + url: util.http_build_query({
  462 + rid: this.id,
  463 + oid: res.data.id,
  464 + sid: res.data.sellerid,
  465 + sellerName: this.data.seller.name,
  466 + identity: '1',
  467 + }, '/pack-cookbook/pages/index_new')
  468 + });
  469 + })
  470 + }
  471 + },
  472 + // 生成海报
  473 + painterBtn(img, sellerName, date, time) {
  474 + img = img.replace(/^http:/, "https:");
  475 + this.setData({
  476 + wxml: canvas({
  477 + imgUrl: img || 'https://nosqn.colorcun.com/reserve/images/3x/%E6%9A%82%E6%97%A0.png',
  478 + sellerName,
  479 + date,
  480 + time,
  481 + })
  482 + })
  483 + },
  484 + onImgOK(e) {
  485 + this.setData({
  486 + imgSrc: e.detail.path
  487 + })
  488 + console.log('海报生成成功', this.data.imgSrc);
  489 + },
  490 + // 分享
  491 + sharesetting() {
  492 + wx.reportMonitor('1017', 1)
  493 + let parmdata = {
  494 + id: this.id,
  495 + fromid: getApp().openid,
  496 + hasInvitation: 1,
  497 + tplid: this.data.options.tplid
  498 + }
  499 + if (this.data.options.uid) {
  500 + parmdata.uid = this.data.options.uid;
  501 + }
  502 + return {
  503 + title: '我已订好' + this.data.seller.name + ',点击可查看详情并导航到店',
  504 + path: util.http_build_query(parmdata, '/pages/customer/detail_owner_invitation_new'),
  505 + imageUrl: this.data.imgSrc || 'http://nosqn.colorcun.com/reserve/images/3x/%E6%9A%82%E6%97%A0.png',
  506 + }
  507 + },
  508 + // 修改detail数据
  509 + formatDatail(detail, dateSmart) {
  510 + detail.rdateStr = dateSmart;
  511 + detail.tableFirst = detail.tables[0].name;
  512 + if (detail.tables.length > 1) {
  513 + detail.tableSubInfo = '等' + (detail.tables.length) + '个' +
  514 + (detail.tables[0].tid == 2 ? '包间' : '');
  515 + }
  516 + if (detail.rname && detail.sex != 3) {
  517 + detail.rnameStr = detail.rname.substr(0, 1) + (detail.sex == 1 ? '先生' : '女士')
  518 + } else {
  519 + detail.rnameStr = detail.rname
  520 + }
  521 + detail.eatStr = '邀请您共进晚餐';
  522 + let hi = util.unixtoTime(detail.ddate, 'HHII');
  523 + if (hi < '10:00') {
  524 + detail.eatStr = '邀请您共进早餐';
  525 + } else if (hi < '15:00') {
  526 + detail.eatStr = '邀请您共进午餐';
  527 + }
  528 + return detail;
  529 + },
  530 + // 获取商家设置营销信息
  531 + getSellerTemplateConfFun(sid) {
  532 + console.log(sid, 'sidsidsidsid');
  533 + App.Seller.GetSellerTemplateConf({
  534 + sid
  535 + }).then(res => {
  536 + let data = res.data
  537 + console.log('data', data);
  538 + let couponList = []
  539 + let settingUrl, inviteImgUrl, themeColor, StyleType, titleType, home, chef, marketing, coupon, reserve, swich_phone, is_comments, signboard, store;
  540 + chef = util.determine(data.chef);
  541 + reserve = util.determine(data.reserve);
  542 + marketing = util.determine(data.marketing);
  543 + signboard = util.determine(data.signboard);
  544 + store = util.determine(data.store);
  545 + home = util.determine(data.home);
  546 + themeColor = data.lite_class || 'ultramarine';
  547 + StyleType = data.type;
  548 + if (StyleType == '9' || StyleType == '10' || StyleType == '11' || StyleType == '12') {
  549 + inviteImgUrl = 'https://nosqn.colorcun.com/inviteText.png';
  550 + } else {
  551 + inviteImgUrl = 'https://nosqn.colorcun.com/inviteText1.png';
  552 + }
  553 + settingUrl = StyleType == '12' ? 'https://nosqn.colorcun.com/template12.jpg' : 'https://nosqn.colorcun.com/template' + StyleType + '.png';
  554 + titleType = data.title_class;
  555 + swich_phone = reserve && reserve.swich_phone ? reserve.swich_phone : '';
  556 + if (marketing) {
  557 + is_comments = marketing.is_comments ? marketing.is_comments : '';
  558 + coupon = marketing.coupon_data ? util.determine(marketing.coupon_data) : '';
  559 + }
  560 + // is_cash 代金券 is_discount折扣券 is_dish菜品券 只有代金券有几折显示
  561 + if (coupon && util.getType(coupon) == 'object') {
  562 + couponList.push({
  563 + id: coupon.id
  564 + });
  565 + }
  566 + if (coupon && util.getType(coupon) == 'array') {
  567 + if (coupon.length > 0) {
  568 + coupon.forEach(item => {
  569 + couponList.push({
  570 + id: item.id
  571 + })
  572 + })
  573 + }
  574 + }
  575 + let obj = {
  576 + chef,
  577 + reserve,
  578 + marketing,
  579 + signboard,
  580 + store,
  581 + home,
  582 + coupon,
  583 + couponList,
  584 + swich_phone,
  585 + is_comments,
  586 + StyleType,
  587 + titleType,
  588 + themeColor,
  589 + settingUrl,
  590 + inviteImgUrl,
  591 + }
  592 + console.log('获取数据', {
  593 + ...obj
  594 + });
  595 + // 根据券ID获取券详情
  596 + this.getActivityByIdFun(couponList, couponList.length)
  597 + // 根据充值ID获取充值详情
  598 + if (marketing && marketing.is_recharge && marketing.is_recharge == '1' && marketing.recharge_data) {
  599 + this.getRechargeDetail(marketing.recharge_data.id)
  600 + }
  601 + if (store && store.images && store.images.length > 0) store.images = util.determine(store.images);
  602 + if (reserve && reserve.park_info_images && reserve.park_info_images.length > 0) reserve.park_info_images = util.determine(reserve.park_info_images);
  603 + if (signboard && signboard.images && signboard.images.length > 0) signboard.images = util.determine(signboard.images);
  604 + this.setData({
  605 + chef,
  606 + marketing,
  607 + home,
  608 + reserve,
  609 + signboard,
  610 + store,
  611 + swich_phone,
  612 + is_comments,
  613 + StyleType,
  614 + titleType,
  615 + themeColor,
  616 + settingUrl,
  617 + inviteImgUrl,
  618 + })
  619 + // 开启语音播报
  620 + if (reserve && reserve.swich_voice == '1') {
  621 + this.setData({
  622 + isPlay: '1',
  623 + })
  624 + this.textToSpeechFun(reserve.voice_info)
  625 + }
  626 + }).catch(res => {
  627 + console.log('GetSellerTemplateConf请求失败');
  628 + })
  629 + },
  630 + // 再次预订
  631 + secondbook() {
  632 + wx.reportMonitor('1013', 1)
  633 + wx.redirectTo({
  634 + url: '../reserve/detail?id=' + this.data.detail.seller.id
  635 + })
  636 + },
  637 + // 文字转语音的方法
  638 + textToSpeechFun(voice_info) {
  639 + console.log('voice_info', voice_info);
  640 + let that = this;
  641 + let data = this.data;
  642 + let str = data.detail.sex == '1' ? '先生' : data.detail.sex == '2' ? '女士' : '';
  643 + const replacements = {
  644 + "{年月日}": data.seller.yearMonthDay,
  645 + "{月日}": data.seller.yearMonth,
  646 + "{餐段}": data.seller.soltName,
  647 + "{就餐时间}": data.seller.dateStr + data.seller.dateStrDivide,
  648 + "{包间名}": data.seller.deskStr,
  649 + "{区域名+包间名}": data.seller.tablesText,
  650 + "{经理名字}": data.staffinfo.name,
  651 + "{客人姓名}": data.detail.rname + str,
  652 + "{预订日期}": data.seller.yearMonthDay,
  653 + "{桌位}": data.seller.deskStr,
  654 + };
  655 + let newStr = voice_info.replace(/{预订日期}|{桌位}|{年月日}|{月日}|{餐段}|{就餐时间}|{包间名}|{区域名\+包间名}|{经理名字}|{客人姓名}/g, function (matched) {
  656 + return replacements[matched];
  657 + });
  658 + console.log('newStr', newStr);
  659 + plugin.textToSpeech({
  660 + lang: "zh_CN",
  661 + tts: true,
  662 + content: newStr,
  663 + success: function (res) {
  664 + that.filename = res.filename
  665 + that.speech()
  666 + },
  667 + fail: function (res) {
  668 + console.log("fail tts", res)
  669 + }
  670 + })
  671 + },
  672 + // 开启语音播报
  673 + speech() {
  674 + var attentionAnim = wx.createAnimation({
  675 + duration: 1000,
  676 + timingFunction: 'linear',
  677 + })
  678 + this.attentionAnim = attentionAnim
  679 + this.setData({
  680 + _attentionAnim: attentionAnim,
  681 + attentionAnim: attentionAnim.export()
  682 + })
  683 + this.audioCtx = wx.createInnerAudioContext()
  684 + this.audioCtx.src = this.filename
  685 + this.audioCtx.loop = true
  686 + this.audioCtx.play()
  687 + this.audioCtx.onPlay((e) => {
  688 + this.setData({
  689 + isPlay: this.audioCtx.paused ? '2' : '1'
  690 + })
  691 + })
  692 + this.audioCtx.onPause((e) => {
  693 + this.setData({
  694 + isPlay: this.audioCtx.paused ? '2' : '1'
  695 + })
  696 + })
  697 + clearInterval(this.timers)
  698 + this.animation()
  699 + },
  700 + // 持续旋转动画
  701 + animation() {
  702 + let that = this;
  703 + var time = setInterval(function () {
  704 + this.n = this.n + 1;
  705 + let attentionAnim = that.data._attentionAnim
  706 + attentionAnim.rotate(180 * (this.n)).step()
  707 + that.setData({
  708 + attentionAnim: attentionAnim.export(),
  709 + })
  710 + }.bind(this), 1000)
  711 + this.timers = time;
  712 + },
  713 + // 暂停/继续播放
  714 + stopMusic() {
  715 + if (this.data.isPlay == '2') { // 2 暂停状态
  716 + console.log("开始");
  717 + clearInterval(this.timers)
  718 + this.animation()
  719 + this.audioCtx.play() //开始
  720 + return;
  721 + }
  722 + if (this.data.isPlay == '1') { // 1 运行状态
  723 + console.log('暂停');
  724 + if (this.n % 2 != 0) {
  725 + this.n = this.n + 1;
  726 + let attentionAnim = this.data._attentionAnim;
  727 + attentionAnim.rotate(180 * this.n).step();
  728 + this.setData({
  729 + attentionAnim: attentionAnim.export(),
  730 + })
  731 + }
  732 + clearInterval(this.timers)
  733 + this.audioCtx.pause() //暂停
  734 + return;
  735 + }
  736 + },
  737 + // 根据充值ID获取充值详情
  738 + getRechargeDetail(id) {
  739 + App.Activity.GetNewRecharge({
  740 + id
  741 + }).then(res => {
  742 + let detail = res.data
  743 + let exp_date = res.data.exp_date ? JSON.parse(res.data.exp_date) : ''
  744 + let recharge_list = res.data.recharge_list ? JSON.parse(res.data.recharge_list) : ''
  745 + let priceInfo, scoreInfo, certificate;
  746 + detail.recharge_list = recharge_list;
  747 + detail.exp_date = exp_date;
  748 + if (recharge_list.is_price == '1') priceInfo = '会员充值满' + detail.recharge_money + '元赠送' + recharge_list.price + '元余额';
  749 + if (recharge_list.is_score == '1') scoreInfo = '会员充值满' + detail.recharge_money + '元赠送' + recharge_list.score + '积分';
  750 + if (recharge_list.is_coupons == '1' && recharge_list.coupons_names.length > 0) certificate = recharge_list.coupons_names.join('、');
  751 + this.setData({
  752 + recharge_data: detail,
  753 + scoreInfo,
  754 + priceInfo,
  755 + certificate
  756 + })
  757 + })
  758 + },
  759 + // 根据券ID获取券详情
  760 + getActivityByIdFun(ids, length) {
  761 + let coupon_dataList = [];
  762 + ids.forEach(i => {
  763 + App.Activity.GetActivityById({
  764 + id: i.id
  765 + }).then(res => {
  766 + if (res.data.length > 0) {
  767 + let detail = res.data[0];
  768 + detail.stringifyUse = detail.use ? JSON.stringify(detail.use) : '';
  769 + detail.exp_date = detail.exp_date ? util.determine(detail.exp_date) : '';
  770 + detail.use = detail.use ? util.determine(detail.use) : '';
  771 + if ((detail.use && (!detail.use.is_cash || detail.use.is_cash == '1'))) {
  772 + let cash = detail.use.cash * 1;
  773 + let price = detail.price * 1;
  774 + detail.discount = cash != 0 ? ((price / cash) * 10).toFixed(1) : '';
  775 + }
  776 + coupon_dataList.push(detail);
  777 + if (length === ids.length) {
  778 + this.setData({
  779 + coupon_dataList,
  780 + })
  781 + }
  782 + }
  783 + })
  784 + })
  785 + },
  786 + /**
  787 + * 生命周期函数--监听页面隐藏
  788 + */
  789 + onHide() {
  790 + clearInterval(this.timers)
  791 + if (this.audioCtx) {
  792 + this.audioCtx.destroy(); // 释放音频资源
  793 + }
  794 + },
  795 +
  796 + /**
  797 + * 生命周期函数--监听页面卸载
  798 + */
  799 + onUnload() {
  800 +
  801 + },
  802 +
  803 + /**
  804 + * 页面相关事件处理函数--监听用户下拉动作
  805 + */
  806 + onPullDownRefresh() {
  807 +
  808 + },
  809 +
  810 + /**
  811 + * 页面上拉触底事件的处理函数
  812 + */
  813 + onReachBottom() {
  814 +
  815 + },
  816 +})
  1 +{
  2 + "navigationBarBackgroundColor": "#ffffff",
  3 + "navigationBarTextStyle": "white",
  4 + "navigationBarTitleText": "",
  5 + "usingComponents": {
  6 + "painter":"/components/painter/painter",
  7 + "titleStyle":"/components/titleStyle/titleStyle"
  8 + }
  9 + }
  1 +<!--pages/customer/detail_owner_invitation9.wxml-->
  2 +<import src="../tpl/invitation"></import>
  3 +<scroll-view scroll-y class="viewBox viewBox{{StyleType}}">
  4 + <image wx:if="{{hasValueBroadcast && reserve && reserve.swich_voice && reserve.swich_voice=='1'}}" class="musicImg" src="{{isPlay=='1'?'https://qn.colorcun.com/open.svg':'https://qn.colorcun.com/close.svg'}}" bindtap="stopMusic" animation="{{attentionAnim}}" />
  5 + <view class="reservationInfo" style="background: url('{{settingUrl}}') no-repeat;background-size:cover;">
  6 + <view class="infoTop">
  7 + <view class="infoTopName">
  8 + <view class="font28r" wx:if="{{reserve && reserve.swich_slogan == '1' && home && home.slogan}}">{{home.slogan}}</view>
  9 + <view class="name">{{seller.name||reserve.seller_name}}</view>
  10 + </view>
  11 + <view class="imgBox">
  12 + <image class="inviteImg {{StyleType=='13' || StyleType=='14' ||StyleType=='15' ||StyleType=='16' || StyleType=='17'?'inviteImg1':''}}" src="{{inviteImgUrl}}" alt="" srcset="" />
  13 + </view>
  14 + </view>
  15 + <view class="bookInfo">
  16 + <view class="infoItem infoItemOne">
  17 + <view wx:if="{{reserve && reserve.swich_booking=='1' && reserve.book_info}}" class="contentData font28r bookData">{{reserve.book_info}}</view>
  18 + </view>
  19 + <view class="infoItem" wx:if="{{detail && detail.rnameStr && reserve && reserve.swich_customer == '1'}}">
  20 + <view class="label font28r">预订贵宾:</view>
  21 + <view class="contentData font36r">{{detail.rnameStr}}</view>
  22 + </view>
  23 + <view class="infoItem" wx:if="{{seller.date}}">
  24 + <view class="label font28r">用餐日期:</view>
  25 + <view class="contentData font36r">{{seller.date}}</view>
  26 + </view>
  27 + <view class="infoItem" wx:if="{{seller.soltName}}">
  28 + <view class="label font28r">用餐时间:</view>
  29 + <view class="contentData font36r">{{seller.soltName}}<text class="marLeft font36r">{{seller.dateTime}}</text></view>
  30 + </view>
  31 + <view class="infoItem" wx:if="{{seller.tablesText}}">
  32 + <view class="label font28r">用餐位置:</view>
  33 + <view class="contentData font36r">{{seller.tablesText}}</view>
  34 + </view>
  35 + <view wx:if="{{roomimage && roomimage.length>0}}" class="{{roomimage.length=='1'?'pageSpacing':'pageSpacing1'}}">
  36 + <view wx:for="{{roomimage}}" class="imgs" wx:key="index" bindtap="lookroom" data-item="{{item}}">
  37 + <image class="imageStyle" mode="aspectFill" src="{{item.url}}"></image>
  38 + <text>{{item.name}}</text>
  39 + </view>
  40 + </view>
  41 + <view class="welcomeMsg font28r" wx:if="{{reserve && reserve.swich_welcome == '1' && marketing && marketing.wecomle}}">
  42 + {{marketing.wecomle}}
  43 + </view>
  44 + </view>
  45 + <view wx:if="{{titleType == '1'}}" class="separatrixOne">
  46 + <block wx:for="{{num1}}" wx:key="index"><text class="text{{item}}"></text></block>
  47 + <text class="text9"></text>
  48 + <block wx:for="{{num2}}" wx:key="index"><text class="text{{item}}"></text></block>
  49 + </view>
  50 + <view class="centerBox">
  51 + <view class="positioning">
  52 + <view class="positioningName">
  53 + <text class="font24r">地址:</text>
  54 + <text class="font24r positioningText">{{seller.addr || reserve.seller.map_address}}</text>
  55 + <button wx:if="{{seller.addr || reserve.seller.map_address}}" bindtap="looklocation" class="flex-cc font24r mapBtn">导航到店</button>
  56 + </view>
  57 + <text class="font24r" wx:if="{{seller.seller_tel}}">热线:{{seller.seller_tel}}</text>
  58 + </view>
  59 + <block wx:if="{{staffinfo && reserve.swich_manager=='1'}}">
  60 + <view class="handleInfo">
  61 + <image wx:if="{{staffinfo && staffinfo.photo}}" src="{{staffinfo.photo}}" class="headerimg" mode="aspectFill"></image>
  62 + <view class="handle handlePhone">
  63 + <view class="handleName">专属服务:{{staffinfo.name}}</view>
  64 + <view class="handleBlower">服务电话:{{staffinfo.phone}}</view>
  65 + </view>
  66 + <view class="handle">
  67 + <view wx:if="{{staffinfo.wechat}}" class="font22r brownFont" bindtap="copyWeChat">复制微信</view>
  68 + <view wx:if="{{staffinfo.phone}}" data-phone="{{staffinfo.phone}}" class="font22r brownFont" bindtap="call">拨打电话</view>
  69 + </view>
  70 + </view>
  71 + </block>
  72 + </view>
  73 + </view>
  74 + <view class="preferentialCoupon" wx:if="{{hasValueCertificate && marketing && marketing.is_coupon=='1' && coupon_dataList.length>0}}">
  75 + <block wx:for="{{coupon_dataList}}" wx:key="index" wx:for-index="index">
  76 + <view class="preferentialItems" wx:if="{{dataStr<(item.etime*1) && item.status == '1'}}">
  77 + <view class="itemLeft">
  78 + <text wx:if="{{item.discount!='0.00' && (item.use.is_cash=='1' || item.use.is_cash) && item.discount}}" class="discountText font24r">{{item.discount}}折</text>
  79 + <view class="priceText" wx:if="{{item.price}}">
  80 + <view class="icons font40r">¥</view>{{item.price}}
  81 + </view>
  82 + </view>
  83 + <view class="itemRight">
  84 + <view class="btns">
  85 + <text class="font40r">{{item.aname}}</text>
  86 + <navigator url="/pack-activity/pack/buyCoupon?id={{item.id}}&name={{seller.name}}&use={{item.stringifyUse}}&sid={{seller.sid}}&oid={{detail.id}}&types=1&StyleType={{StyleType}}" hover-class="navigator-hover">
  87 + <view class="font24r orderingFood">
  88 + 抢购
  89 + </view>
  90 + </navigator>
  91 + </view>
  92 + <text wx:if="{{item.exp_date.is_week=='1' || item.exp_date.is_week===true}}" class="bottom font24r">{{item.exp_date.week_show?item.exp_date.week_show+'可用':''}}{{item.desc?','+item.desc+'。':'。'}}</text>
  93 + <view wx:if="{{item.exp_date.is_none=='1' || item.exp_date.is_none===true}}" class="bottom font24r">
  94 + 无限制{{item.desc?','+item.desc+'。':'。'}}
  95 + </view>
  96 + <view wx:if="{{item.exp_date.is_birthday=='1' || item.exp_date.is_birthday===true}}" class="bottom font24r">
  97 + 会员生日当天可用{{item.desc?','+item.desc+'。':'。'}}
  98 + </view>
  99 + </view>
  100 + </view>
  101 + </block>
  102 + </view>
  103 + <view wx:if="{{is_comments=='1' && !is_user_comments}}" class="evaluateBox" bindtap="evaluateFun">
  104 + <text wx:if="{{is_comments=='1' && marketing.is_comments_coupon!='1'}}">想<text class="font36r">吐槽</text>?戳这里填写意见!--></text>
  105 + <text wx:if="{{marketing.is_comments_coupon=='1'}}">想<text class="font36r">吐槽</text>?戳这里填写意见反馈赢好礼!</text>
  106 + <image src="https://nosqn.colorcun.com/evaluate2.png" mode="" />
  107 + </view>
  108 + <view class="reserveBox" wx:if="{{reserveData && (reserveData.title || reserveData.content)}}">
  109 + <view class="title font36r" wx:if="{{reserveData.title}}">{{reserveData.title}}</view>
  110 + <block wx:for="{{reserveData.content}}" wx:key="index">
  111 + <image class="items" wx:if="{{item.type =='1'}}" src="{{item.content}}" mode="widthFix" />
  112 + <text class="items font24r" wx:if="{{item.type == '2'}}">{{item.content}}</text>
  113 + </block>
  114 + </view>
  115 + <!-- 餐厅介绍 -->
  116 + <view class="introduce" wx:if="{{store}}">
  117 + <block wx:if="{{titleType}}">
  118 + <titleStyle titleStyleType="{{titleType}}" titleText="餐厅介绍"></titleStyle>
  119 + </block>
  120 + <image wx:if="{{marketing && marketing.logo && (!marketing.is_logo || marketing.is_logo!='0')}}" src="{{marketing.logo?marketing.logo:''}}" mode="widthFix" />
  121 + <view class="labelBox" wx:if="{{store.introduce && (!store.is_introduce || store.is_introduce!='0')}}">
  122 + <text class="texts font32r">{{store.introduce}}
  123 + </text>
  124 + </view>
  125 + <image wx:if="{{home.image && (!home.id_first_image || home.id_first_image!='0')}}" src="{{home.image}}" class="homeImage" mode="widthFix"></image>
  126 + </view>
  127 + <!-- 用餐环境 -->
  128 + <view class="introduce">
  129 + <block wx:if="{{store.images.length>0 && (!store.is_images || store.is_images!='0')}}">
  130 + <block wx:if="{{titleType}}">
  131 + <titleStyle titleStyleType="{{titleType}}" titleText="用餐环境"></titleStyle>
  132 + </block>
  133 + <block wx:for="{{store.images}}" wx:key="arryIndex" wx:for-index="arryIndex">
  134 + <image src="{{item}}" mode="widthFix" />
  135 + </block>
  136 + </block>
  137 + </view>
  138 + <!-- 主厨介绍 -->
  139 + <view class="introduce" wx:if="{{(!chef.is_introduce || chef.is_introduce!='0') || (!chef.is_images || chef.is_images!='0')}}">
  140 + <block wx:if="{{titleType}}">
  141 + <titleStyle titleStyleType="{{titleType}}" titleText="主厨介绍"></titleStyle>
  142 + </block>
  143 + <view class="labelBox" wx:if="{{!chef.is_introduce || chef.is_introduce!='0'}}">
  144 + <text class="texts">{{chef.introduce}}
  145 + </text>
  146 + </view>
  147 + <block wx:if="{{!chef.is_images || chef.is_images!='0'}}">
  148 + <image src="{{chef.image}}" mode="widthFix" />
  149 + </block>
  150 + </view>
  151 + <!-- 特色菜品 -->
  152 + <view class="introduce" wx:if="{{signboard && signboard.swich=='1' && signboard.images && signboard.images.length>0}}">
  153 + <block wx:if="{{titleType}}">
  154 + <titleStyle titleStyleType="{{titleType}}" titleText="特色菜品"></titleStyle>
  155 + </block>
  156 + <block wx:for="{{signboard.images}}" wx:key="arryIndex" wx:for-index="arryIndex">
  157 + <image src="{{item}}" mode="widthFix" />
  158 + </block>
  159 + </view>
  160 + <!-- 停车指引 -->
  161 + <view class="introduce" wx:if="{{reserve && reserve.swich_park=='1' && (reserve.park_info || reserve.park_info_images)}}">
  162 + <block wx:if="{{titleType}}">
  163 + <titleStyle titleStyleType="{{titleType}}" titleText="停车指引"></titleStyle>
  164 + </block>
  165 + <view class="labelBox" wx:if="{{reserve.park_info}}">
  166 + <text class="texts">{{reserve.park_info}}
  167 + </text>
  168 + </view>
  169 + <block wx:for="{{reserve.park_info_images}}" wx:key="arryIndex" wx:for-index="arryIndex">
  170 + <image src="{{item}}" mode="widthFix" />
  171 + </block>
  172 + </view>
  173 + <view class="introduce" wx:if="{{hasValueOrder && detail && detail.seller.is_open_order==1 && marketing && marketing.is_order=='1'}}">
  174 + <block wx:if="{{titleType}}">
  175 + <titleStyle titleStyleType="{{titleType}}" titleText="提前点餐"></titleStyle>
  176 + </block>
  177 + <view class="endStyle">
  178 + <view class="news font32r">
  179 + 现在提前点菜下单,到店时无需等待服务员点餐,直接享受就餐服务^_^
  180 + </view>
  181 + <view wx:if="{{detail && detail.seller.is_open_order==1 && marketing && marketing.is_order=='1'}}" bindtap="cookbook" class="book-item-font flex-cc font30r cook" style="position: relative;">
  182 + 去点餐
  183 + </view>
  184 + </view>
  185 + </view>
  186 + <view class="introduce introduceBottom">
  187 + <block wx:if="{{hasValueRecharge && marketing && marketing.is_recharge=='1' && recharge_data && (is_fix!='1' || (is_fix=='1' && dataStr<(recharge_data.exp_date.fix_edate*1)))}}">
  188 + <block wx:if="{{titleType}}">
  189 + <titleStyle titleStyleType="{{titleType}}" titleText="会员招募"></titleStyle>
  190 + </block>
  191 + <view class="preferentialItems rechargeItems">
  192 + <view class="itemLeft">
  193 + <view class="itemTop font36r">
  194 + {{recharge_data.rname}}
  195 + </view>
  196 + <view class="itemBottom font24r" wx:if="{{priceInfo}}">
  197 + {{priceInfo}}{{(recharge_data.recharge_list.is_coupons=='0' && recharge_data.recharge_list.is_score=='0')?'。':';'}}
  198 + </view>
  199 + <view class="bottom font24r" wx:if="{{scoreInfo}}">
  200 + {{scoreInfo}}{{recharge_data.recharge_list.is_coupons=='0'?'。':';'}}
  201 + </view>
  202 + <view class="bottom font24r" wx:if="{{recharge_data.recharge_list.is_coupons=='1'}}">
  203 + {{recharge_data.recharge_list.is_coupons=='1'?'会员充值满'+recharge_data.recharge_money+'元赠送'+certificate:''}}。
  204 + </view>
  205 + </view>
  206 + <navigator url="/pack-activity/pack/vipRecharge?id={{recharge_data.id}}&name={{seller.name}}&sid={{seller.sid}}&oid={{detail.id}}&types=1&StyleType={{StyleType}}" hover-class="navigator-hover">
  207 + <view class="font24r orderingFood">
  208 + 抢购
  209 + </view>
  210 + </navigator>
  211 + </view>
  212 + </block>
  213 + <view class="vips">
  214 + <view wx:if="{{hasValueRecharge && marketing.is_link=='1'}}" class="font24r favouredPolicy" bindtap="gotoFavourableList">
  215 + 点击了解更多会员优惠政策
  216 + </view>
  217 + <text class="businessBox">
  218 + 周到安排提供技术支持<text bindtap="call" data-phone="4000009690">4000009690</text>,餐厅入驻请点击<text bindtap="gotoJoinSeller" style="text-decoration: underline;">这里</text>
  219 + </text>
  220 + </view>
  221 + </view>
  222 + <view class="{{(!marketing || (marketing.is_transpond!='1' && marketing.is_online_book!='1'))?'more more1':'more'}}" wx:if="{{showMoreTip}}">
  223 + <view class="moreText">滑动查看更多</view>
  224 + <image src="https://qn.colorcun.com/jt1.png" mode="" />
  225 + </view>
  226 + <view class="toastBox" wx:if="{{toastBool}}">
  227 + {{toastText}}
  228 + </view>
  229 +</scroll-view>
  230 +<view wx:if="{{marketing.is_transpond=='1' || marketing.is_online_book=='1' || (paymentId && paymentStatus == '0')}}" class="flex-lr sharewidth">
  231 + <view wx:if="{{marketing.is_online_book=='1'}}" class="flex-cc font30r moreBtn" bindtap="secondbook" style="position: relative;">再次预订</view>
  232 + <view wx:if="{{paymentId && paymentStatus == '0'}}" class="flex-cc font30r paymenBtn" bindtap="paymentFun">支付定金</view>
  233 + <button wx:if="{{marketing.is_transpond=='1' && imgSrc}}" class="flex-cc font30r shareItem" open-type="share">转发给客人</button>
  234 +</view>
  235 +<painter palette="{{wxml}}" style="position: absolute; top: -9999rpx;" bind:imgOK="onImgOK" />
  1 +/* pages/customer/detail_owner_invitation9.wxss */
  2 +@import "../tpl/tpls.wxss";
  3 +
  4 +@font-face {
  5 + font-family: 'Abel';
  6 + font-style: normal;
  7 + font-weight: 400;
  8 + src: url(https://fonts.gstatic.com/s/abel/v18/MwQ5bhbm2POE2V9BPQ.woff2) format('woff2');
  9 + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
  10 +}
  11 +
  12 +.reservationInfo {
  13 + min-height: 200rpx;
  14 + padding-bottom: 20rpx;
  15 + position: relative;
  16 + color: #FFEFC5;
  17 + padding-top: 160rpx;
  18 + max-height: 1890rpx;
  19 + background-size: cover;
  20 +}
  21 +
  22 +.reservationInfo .infoItem {
  23 + display: flex;
  24 + display: flex;
  25 + line-height: 70rpx;
  26 + font-family: PingFang SC;
  27 + align-items: center;
  28 +}
  29 +
  30 +.marLeft {
  31 + margin-left: 10rpx;
  32 +}
  33 +
  34 +.reservationInfo .infoItemOne {
  35 + flex-direction: column;
  36 + margin: 0 0 44rpx 0;
  37 + align-items: flex-start;
  38 +}
  39 +
  40 +.bookInfo {
  41 + border-radius: 20rpx;
  42 + padding: 20rpx 20rpx 30rpx 20rpx;
  43 + margin: 0 40rpx;
  44 +}
  45 +
  46 +.infoTopName {
  47 + padding: 10rpx 32rpx;
  48 + color: #FFEFC5;
  49 + font-family: PingFang SC;
  50 + font-weight: 600;
  51 + margin-bottom: 66rpx;
  52 +}
  53 +
  54 +.infoTopName .name {
  55 + font-size: 56rpx;
  56 + margin-top: 16rpx;
  57 +}
  58 +
  59 +.imgBox {
  60 + display: flex;
  61 + align-items: center;
  62 + justify-content: center;
  63 +}
  64 +
  65 +.inviteImg {
  66 + width: 562rpx;
  67 + height: 330rpx;
  68 +}
  69 +
  70 +.inviteImg1 {
  71 + width: 586rpx;
  72 + height: 336rpx;
  73 +}
  74 +
  75 +.infoItemOne .contentData {
  76 + line-height: 48rpx;
  77 +}
  78 +
  79 +.label {
  80 + flex-shrink: 0;
  81 + font-family: PingFang SC;
  82 +}
  83 +
  84 +.contentData {
  85 + flex: 1;
  86 + line-height: 60rpx;
  87 + font-family: PingFang SC;
  88 + margin-left: 40rpx;
  89 + font-weight: 600;
  90 +}
  91 +
  92 +.pageSpacing {
  93 + position: relative;
  94 + display: flex;
  95 + align-items: center;
  96 + white-space: nowrap;
  97 + width: auto;
  98 + overflow-x: scroll;
  99 + border-bottom-left-radius: 10rpx;
  100 + border-bottom-right-radius: 10rpx;
  101 + padding: 10rpx 0 10rpx 116rpx;
  102 + margin-top: 20rpx;
  103 +}
  104 +
  105 +.pageSpacing1 {
  106 + position: relative;
  107 + display: flex;
  108 + white-space: nowrap;
  109 + width: auto;
  110 + overflow-x: scroll;
  111 + border-bottom-left-radius: 10rpx;
  112 + border-bottom-right-radius: 10rpx;
  113 + padding: 10rpx 0 10rpx 116rpx;
  114 + margin-top: 20rpx;
  115 +}
  116 +
  117 +.imgs {
  118 + position: relative;
  119 + display: flex;
  120 + white-space: nowrap;
  121 + width: 470rpx;
  122 + height: 348rpx;
  123 + margin-right: 30rpx;
  124 +}
  125 +
  126 +.imgs text {
  127 + background: #515151;
  128 + color: #fff;
  129 + position: absolute;
  130 + left: 0;
  131 + bottom: 0;
  132 + height: 64rpx;
  133 + line-height: 64rpx;
  134 + width: 470rpx;
  135 + text-align: center;
  136 + border-bottom-left-radius: 16rpx;
  137 + border-bottom-right-radius: 16rpx;
  138 +}
  139 +
  140 +.imageStyle {
  141 + display: inline-block;
  142 + width: 500rpx;
  143 + height: 348rpx;
  144 + border-radius: 16rpx;
  145 +}
  146 +
  147 +.welcomeMsg {
  148 + margin: 44rpx 0 0 0;
  149 + font-family: PingFang SC;
  150 +}
  151 +
  152 +.handleInfo {
  153 + display: flex;
  154 + justify-content: space-between;
  155 + align-items: center;
  156 +}
  157 +
  158 +.headerimg {
  159 + width: 120rpx;
  160 + height: 120rpx;
  161 + border-radius: 50%;
  162 +}
  163 +
  164 +.handle {
  165 + display: flex;
  166 + flex-direction: column;
  167 + font-family: PingFang SC;
  168 + font-weight: 500;
  169 + font-size: 24rpx;
  170 + justify-content: space-between;
  171 +}
  172 +
  173 +.handlePhone {
  174 + margin: 0 20rpx;
  175 + color: #FFEFC5;
  176 + margin: 0 20rpx;
  177 + width: 47%;
  178 +}
  179 +
  180 +.handleName {
  181 + word-wrap: break-word;
  182 + text-align: left;
  183 + overflow: hidden;
  184 + word-break: break-all;
  185 + text-overflow: ellipsis;
  186 + display: -webkit-box;
  187 + -webkit-box-orient: vertical;
  188 + -webkit-line-clamp: 3;
  189 + margin-bottom: 20rpx;
  190 +}
  191 +
  192 +.handleBlower {
  193 + word-wrap: break-word;
  194 + text-align: left;
  195 + overflow: hidden;
  196 + word-break: break-all;
  197 + text-overflow: ellipsis;
  198 + display: -webkit-box;
  199 + -webkit-box-orient: vertical;
  200 + -webkit-line-clamp: 1;
  201 +}
  202 +
  203 +.brownFont {
  204 + width: 130rpx;
  205 + padding: 8rpx 0;
  206 + color: #FFEFC5;
  207 + border: 2rpx solid #FFEFC5;
  208 + border-radius: 22rpx;
  209 + text-align: center;
  210 +}
  211 +
  212 +.brownFont:nth-of-type(1) {
  213 + margin-bottom: 20rpx;
  214 +}
  215 +
  216 +.centerBox {
  217 + border-radius: 20rpx;
  218 + margin: 26rpx 40rpx 0 40rpx;
  219 + padding: 26rpx 20rpx 20rpx 20rpx;
  220 +}
  221 +
  222 +.positioning {
  223 + display: flex;
  224 + flex-direction: column;
  225 + box-sizing: border-box;
  226 + flex: 1;
  227 + color: #FFEFC5;
  228 + margin-bottom: 30rpx;
  229 +}
  230 +
  231 +.positioning text:nth-of-type(1) {
  232 + flex-shrink: 0;
  233 + line-height: 50rpx;
  234 +}
  235 +
  236 +.positioningName {
  237 + display: flex;
  238 +}
  239 +
  240 +.positioningText {
  241 + line-height: 50rpx;
  242 + overflow: hidden;
  243 + word-break: break-all;
  244 + text-overflow: ellipsis;
  245 + display: -webkit-box;
  246 + -webkit-box-orient: vertical;
  247 + margin: 0 10rpx;
  248 +}
  249 +
  250 +.mapBtn {
  251 + flex-shrink: 0;
  252 + padding: 8rpx 16rpx;
  253 + margin-left: 10rpx;
  254 + height: 54rpx !important;
  255 + border: 2rpx solid #FFEFC5;
  256 + color: #FFEFC5;
  257 + height: 54rpx !important;
  258 + border-radius: 42rpx;
  259 + font-weight: 600;
  260 + background: transparent;
  261 +}
  262 +
  263 +.introduce {
  264 + box-sizing: border-box;
  265 + padding: 60rpx 0 20rpx 0;
  266 + margin: 0 20rpx 20rpx 20rpx;
  267 +}
  268 +
  269 +.introduceBottom {
  270 + margin-bottom: 180rpx;
  271 +}
  272 +
  273 +.labelBox {
  274 + width: 100%;
  275 + display: flex;
  276 + position: relative;
  277 +}
  278 +
  279 +.labelBox .texts {
  280 + line-height: 40rpx;
  281 + margin: 20rpx;
  282 + color: #FFEFC5;
  283 + font-family: PingFang SC;
  284 + max-height: 400rpx;
  285 + overflow: hidden;
  286 + white-space: pre-line;
  287 + word-wrap: break-word;
  288 + overflow: hidden;
  289 + word-break: break-all;
  290 + text-overflow: ellipsis;
  291 + display: -webkit-box;
  292 + -webkit-box-orient: vertical;
  293 + -webkit-line-clamp: 10;
  294 + font-weight: 500;
  295 +}
  296 +
  297 +.introduce image {
  298 + width: 100%;
  299 + margin-bottom: 20rpx;
  300 + display: block !important;
  301 + vertical-align: top;
  302 + padding: 0 20rpx;
  303 + box-sizing: border-box;
  304 +}
  305 +
  306 +.introduce image:nth-last-of-type(1) {
  307 + margin-bottom: 0;
  308 +}
  309 +
  310 +.news {
  311 + color: #FFEFC5;
  312 + font-family: PingFang SC;
  313 + font-weight: 500;
  314 + line-height: 40rpx;
  315 +}
  316 +
  317 +.endStyle {
  318 + margin: 0 20rpx 30rpx 20rpx;
  319 + display: flex;
  320 + align-items: center;
  321 + justify-content: space-between;
  322 +}
  323 +
  324 +.preferentialCoupon {
  325 + padding: 40rpx 40rpx 0 40rpx;
  326 +}
  327 +
  328 +.preferentialItems {
  329 + display: flex;
  330 + background: url('https://qn.colorcun.com/certificateBj1.png') no-repeat;
  331 + background-size: 100% 100%;
  332 + margin-bottom: 20rpx;
  333 + min-height: 160rpx;
  334 + padding-bottom: 10rpx;
  335 +}
  336 +
  337 +.rechargeItems {
  338 + background: url('https://qn.colorcun.com/certificateBj2.png') no-repeat;
  339 + background-size: 100% 100%;
  340 + min-height: 160rpx;
  341 + display: flex;
  342 + justify-content: space-between;
  343 + align-items: center;
  344 + height: auto;
  345 + padding: 12rpx 0;
  346 + margin: 0 20rpx;
  347 +}
  348 +
  349 +.itemLeft {
  350 + width: 30%;
  351 + display: flex;
  352 + flex-direction: column;
  353 + justify-content: center;
  354 + position: relative;
  355 +}
  356 +
  357 +.rechargeItems .itemLeft {
  358 + width: 64%;
  359 + margin-left: 38rpx;
  360 +}
  361 +
  362 +.discountText {
  363 + text-align: center;
  364 + color: #FFEFC5;
  365 + border-radius: 6rpx;
  366 + font-family: PingFang SC;
  367 + background: #FD4D59;
  368 + width: max-content;
  369 + padding: 6rpx;
  370 + position: absolute;
  371 + left: 16rpx;
  372 + top: 12rpx;
  373 +}
  374 +
  375 +.priceText {
  376 + font-family: 'Abel';
  377 + color: #E34D59;
  378 + font-weight: 500;
  379 + font-size: 64rpx;
  380 + margin-top: 6rpx;
  381 +}
  382 +
  383 +.priceText .icons {
  384 + font-family: 'Abel';
  385 + color: #FD4D59;
  386 + font-size: 40rpx;
  387 +}
  388 +
  389 +.itemRight {
  390 + width: 70%;
  391 + padding-right: 10rpx;
  392 + margin-left: 18rpx;
  393 +}
  394 +
  395 +.btns {
  396 + margin: 24rpx 20rpx 0 0;
  397 + display: flex;
  398 + justify-content: space-between;
  399 +}
  400 +
  401 +.orderingFood {
  402 + padding: 0 40rpx;
  403 + border-radius: 22rpx;
  404 + text-align: center;
  405 + color: #0B0805;
  406 + border-radius: 20rpx;
  407 + line-height: 44rpx;
  408 + height: 44rpx;
  409 + background: transparent;
  410 + border: 2rpx solid #0B0805;
  411 +}
  412 +
  413 +.bottom {
  414 + margin-top: 10rpx;
  415 + width: 100%;
  416 + color: #0B0805;
  417 + font-family: PingFang SC;
  418 + font-weight: 500;
  419 + display: -webkit-box;
  420 + word-break: break-all;
  421 + word-wrap: break-word;
  422 + overflow: hidden;
  423 + text-align: left;
  424 +}
  425 +
  426 +.itemTop {
  427 + display: flex;
  428 + width: 100%;
  429 + align-items: center;
  430 + font-family: 'Abel';
  431 + color: #FD4D59;
  432 + margin-bottom: 10rpx;
  433 +}
  434 +
  435 +.rechargeItems .orderingFood {
  436 + margin-right: 20rpx;
  437 +}
  438 +
  439 +.itemBottom {
  440 + color: #0B0805;
  441 + font-family: PingFang SC;
  442 + font-weight: 500;
  443 + display: -webkit-box;
  444 + word-break: break-all;
  445 + word-wrap: break-word;
  446 + overflow: hidden;
  447 + text-align: left;
  448 +}
  449 +
  450 +.priceText {
  451 + display: flex;
  452 + align-items: center;
  453 + justify-content: center;
  454 +}
  455 +
  456 +.vips {
  457 + display: flex;
  458 + flex-direction: column;
  459 + justify-content: center;
  460 + align-items: center;
  461 + margin-top: 20rpx;
  462 +}
  463 +
  464 +.favouredPolicy {
  465 + width: 45%;
  466 + color: #FFEFC5;
  467 + font-family: PingFang SC;
  468 + font-weight: 500;
  469 + border: 2rpx solid #FFEFC5;
  470 + border-radius: 22rpx;
  471 + text-align: center;
  472 + padding: 10rpx;
  473 +}
  474 +
  475 +.sharewidth {
  476 + position: fixed;
  477 + left: 0;
  478 + bottom: 0;
  479 + height: 160rpx;
  480 + padding: 0 40rpx;
  481 + box-sizing: border-box;
  482 + z-index: 100;
  483 + justify-content: flex-end;
  484 + width: 100%;
  485 +}
  486 +
  487 +.shareItem,
  488 +.moreBtn,
  489 +.paymenBtn {
  490 + width: inherit;
  491 + margin: 0;
  492 + background: transparent;
  493 + color: #FFEFC5;
  494 + border: 2rpx solid #FFEFC5;
  495 + height: 80rpx;
  496 + border-radius: 42rpx;
  497 + font-weight: 600;
  498 + margin-right: 20rpx;
  499 +}
  500 +
  501 +.shareItem {
  502 + margin-right: 0;
  503 + background: #FFEFC5;
  504 + color: #0B0805;
  505 +}
  506 +
  507 +.menu-item {
  508 + width: 100%;
  509 + height: 100%;
  510 + display: flex;
  511 + justify-content: center;
  512 + align-items: center;
  513 +}
  514 +
  515 +.cook {
  516 + height: 94% !important;
  517 + background: transparent;
  518 + border: 2rpx solid #FFEFC5;
  519 + color: #FFEFC5;
  520 + border-radius: 32rpx;
  521 + font-weight: normal;
  522 + width: 38% !important;
  523 + margin-left: 18rpx;
  524 +}
  525 +
  526 +.cook view {
  527 + color: #FFEFC5;
  528 +}
  529 +
  530 +.bold {
  531 + font-weight: 500;
  532 +}
  533 +
  534 +.evaluateBox {
  535 + margin: 60rpx 84rpx 72rpx 40rpx;
  536 + display: flex;
  537 + align-items: center;
  538 + justify-content: space-between;
  539 + color: #FFEFC5;
  540 +}
  541 +
  542 +.evaluateBox image {
  543 + width: 64rpx;
  544 + height: 64rpx;
  545 +}
  546 +
  547 +.evaluateBox text {
  548 + color: #FFEFC5;
  549 + font-size: 24rpx;
  550 +}
  551 +
  552 +.evaluateBox text text {
  553 + font-size: 36rpx;
  554 +}
  555 +
  556 +.more {
  557 + height: 80rpx;
  558 + width: 100%;
  559 + position: fixed;
  560 + bottom: 160rpx;
  561 + display: flex;
  562 + align-items: center;
  563 + justify-content: center;
  564 + flex-direction: column;
  565 + background: rgba(0, 0, 0, .4);
  566 +}
  567 +
  568 +.more1 {
  569 + bottom: 40rpx;
  570 +}
  571 +
  572 +.moreText {
  573 + color: #fff;
  574 +}
  575 +
  576 +.more image {
  577 + width: 30rpx;
  578 + height: 30rpx;
  579 +}
  580 +
  581 +.musicImg {
  582 + width: 62rpx;
  583 + height: 62rpx;
  584 + position: fixed !important;
  585 + right: 8%;
  586 + top: 22%;
  587 + z-index: 200;
  588 +}
  589 +
  590 +.bookData {
  591 + margin-left: 0;
  592 +}
  593 +
  594 +.businessBox {
  595 + color: #FFEFC5;
  596 + font-size: 24rpx;
  597 + font-family: PingFang SC;
  598 +}
  599 +
  600 +.businessBox text {
  601 + color: #FD4D59;
  602 +}
  603 +
  604 +.reserveBox {
  605 + margin: 20rpx;
  606 + background: #1b1816;
  607 + padding: 20rpx;
  608 +}
  609 +
  610 +.reserveBox .title {
  611 + margin-bottom: 20rpx;
  612 + color: #FFEFC5;
  613 + font-family: PingFang SC;
  614 +}
  615 +
  616 +.reserveBox .items {
  617 + width: 100%;
  618 + margin-bottom: 20rpx;
  619 + color: #FFEFC5;
  620 + font-family: PingFang SC;
  621 + display: block;
  622 +}
  623 +
  624 +.toastBox {
  625 + width: fit-content;
  626 + position: fixed;
  627 + padding: 30rpx;
  628 + color: #fff;
  629 + background: rgba(0, 0, 0, .7);
  630 + font-size: 28rpx;
  631 + border-radius: 10rpx;
  632 + left: 50%;
  633 + z-index: 999;
  634 + top: 50%;
  635 + transform: translate(-50%, -50%);
  636 +}
  637 +
  638 +.separatrixOne {
  639 + display: flex;
  640 + justify-content: space-between;
  641 + align-items: center;
  642 + margin: 40rpx;
  643 +}
  644 +
  645 +.separatrixOne .text1 {
  646 + width: 2rpx;
  647 + height: 6rpx;
  648 + background: #FFEFC5;
  649 +}
  650 +
  651 +.separatrixOne .text2 {
  652 + width: 4rpx;
  653 + height: 6rpx;
  654 + background: #FFEFC5;
  655 +}
  656 +
  657 +.separatrixOne .text3 {
  658 + width: 6rpx;
  659 + height: 6rpx;
  660 + background: #FFEFC5;
  661 +}
  662 +
  663 +.separatrixOne .text4 {
  664 + width: 10rpx;
  665 + height: 6rpx;
  666 + background: #FFEFC5;
  667 +}
  668 +
  669 +.separatrixOne .text5 {
  670 + width: 16rpx;
  671 + height: 6rpx;
  672 + background: #FFEFC5;
  673 +}
  674 +
  675 +.separatrixOne .text6 {
  676 + width: 26rpx;
  677 + height: 6rpx;
  678 + background: #FFEFC5;
  679 +}
  680 +
  681 +.separatrixOne .text7 {
  682 + width: 42rpx;
  683 + height: 6rpx;
  684 + background: #FFEFC5;
  685 +}
  686 +
  687 +.separatrixOne .text8 {
  688 + width: 68rpx;
  689 + height: 6rpx;
  690 + background: #FFEFC5;
  691 +}
  692 +
  693 +.separatrixOne .text9 {
  694 + width: 110rpx;
  695 + height: 6rpx;
  696 + background: #FFEFC5;
  697 +}
  698 +
  699 +/* 模板9 */
  700 +.viewBox9 {
  701 + background: #23201e;
  702 +}
  703 +
  704 +.viewBox9 .introduce {
  705 + background: #1b1816;
  706 +}
  707 +
  708 +.viewBox9 .bookInfo,
  709 +.viewBox9 .centerBox {
  710 + background: rgba(11, 8, 5, 0.85);
  711 +}
  712 +
  713 +.viewBox9 .btns text,
  714 +.viewBox9 .bottom,
  715 +.viewBox9 .itemBottom,
  716 +.viewBox9+.sharewidth .shareItem {
  717 + color: #0B0805;
  718 +}
  719 +
  720 +.viewBox9 .orderingFood {
  721 + color: #0B0805;
  722 + border: 2rpx solid #0B0805;
  723 +}
  724 +
  725 +.viewBox9+.sharewidth {
  726 + background: #0B0805;
  727 +}
  728 +
  729 +/* 模板10 模板17 */
  730 +.viewBox10,
  731 +.viewBox17 {
  732 + background: #750100;
  733 +}
  734 +
  735 +.viewBox10 .introduce {
  736 + background: rgba(164, 9, 5, 0.35);
  737 +}
  738 +
  739 +.viewBox10 .bookInfo,
  740 +.viewBox10 .centerBox,
  741 +.viewBox17 .bookInfo,
  742 +.viewBox17 .centerBox {
  743 + background: rgba(117, 1, 0, 0.75);
  744 +}
  745 +
  746 +.viewBox10 .btns text,
  747 +.viewBox10 .bottom,
  748 +.viewBox10 .itemBottom,
  749 +.viewBox10+.sharewidth .shareItem,
  750 +.viewBox17 .btns text,
  751 +.viewBox17 .bottom,
  752 +.viewBox17 .itemBottom,
  753 +.viewBox17+.sharewidth .shareItem {
  754 + color: #750100;
  755 +}
  756 +
  757 +.viewBox10 .orderingFood,
  758 +.viewBox17 .orderingFood {
  759 + color: #750100;
  760 + border: 2rpx solid #750100;
  761 +}
  762 +
  763 +.viewBox10+.sharewidth,
  764 +.viewBox17+.sharewidth {
  765 + background: #750100;
  766 +}
  767 +
  768 +/* 模板11 */
  769 +.viewBox11,
  770 +.viewBox12 {
  771 + background: #0b1a67;
  772 +}
  773 +
  774 +.viewBox11 .introduce,
  775 +.viewBox12 .introduce {
  776 + background: rgba(33, 74, 165, 0.3);
  777 +}
  778 +
  779 +.viewBox11 .bookInfo,
  780 +.viewBox11 .centerBox {
  781 + background: rgba(33, 74, 165, 0.7);
  782 +}
  783 +
  784 +.viewBox11 .btns text,
  785 +.viewBox11 .bottom,
  786 +.viewBox11 .itemBottom,
  787 +.viewBox11+.sharewidth .shareItem,
  788 +.viewBox12 .btns text,
  789 +.viewBox12 .bottom,
  790 +.viewBox12 .itemBottom,
  791 +.viewBox12+.sharewidth .shareItem {
  792 + color: #0B1A67;
  793 +}
  794 +
  795 +.viewBox11 .orderingFood,
  796 +.viewBox12 .orderingFood {
  797 + color: #0B1A67;
  798 + border: 2rpx solid #0B1A67;
  799 +}
  800 +
  801 +.viewBox11+.sharewidth,
  802 +.viewBox12+.sharewidth {
  803 + background: #0B1A67;
  804 +}
  805 +
  806 +/* 模板12 */
  807 +.viewBox12 .bookInfo,
  808 +.viewBox12 .centerBox {
  809 + background: rgba(11, 26, 103, 0.85);
  810 +}
  811 +
  812 +/* 模板13 模板15 */
  813 +.viewBox13,
  814 +.viewBox15 {
  815 + background: #0b3133;
  816 +}
  817 +
  818 +.viewBox13 .introduce,
  819 +.viewBox15 .introduce {
  820 + background: rgba(33, 89, 96, 0.75);
  821 +}
  822 +
  823 +.viewBox13 .bookInfo,
  824 +.viewBox13 .centerBox,
  825 +.viewBox13 .infoTopName,
  826 +.viewBox15 .bookInfo,
  827 +.viewBox15 .centerBox,
  828 +.viewBox15 .infoTopName {
  829 + background: rgba(33, 89, 96, 0.35);
  830 +}
  831 +
  832 +.viewBox13 .btns text,
  833 +.viewBox13 .bottom,
  834 +.viewBox13 .itemBottom,
  835 +.viewBox13+.sharewidth .shareItem,
  836 +.viewBox15 .btns text,
  837 +.viewBox15 .bottom,
  838 +.viewBox15 .itemBottom,
  839 +.viewBox15+.sharewidth .shareItem {
  840 + color: #215960;
  841 +}
  842 +
  843 +.viewBox13 .orderingFood,
  844 +.viewBox15 .orderingFood {
  845 + color: #215960;
  846 + border: 2rpx solid #215960;
  847 +}
  848 +
  849 +.viewBox13+.sharewidth,
  850 +.viewBox15+.sharewidth {
  851 + background: #215960;
  852 +}
  853 +
  854 +/* 模板14 模板16 */
  855 +.viewBox14,
  856 +.viewBox16 {
  857 + background: #1b1a23;
  858 +}
  859 +
  860 +.viewBox14 .introduce,
  861 +.viewBox16 .introduce {
  862 + background: rgba(11, 8, 5, 0.75);
  863 +}
  864 +
  865 +.viewBox14 .bookInfo,
  866 +.viewBox14 .centerBox,
  867 +.viewBox14 .infoTopName,
  868 +.viewBox16 .bookInfo,
  869 +.viewBox16 .centerBox,
  870 +.viewBox16 .infoTopName {
  871 + background: rgba(11, 8, 5, 0.35);
  872 +}
  873 +
  874 +.viewBox14 .btns text,
  875 +.viewBox14 .bottom,
  876 +.viewBox14 .itemBottom,
  877 +.viewBox14+.sharewidth .shareItem,
  878 +.viewBox16 .btns text,
  879 +.viewBox16 .bottom,
  880 +.viewBox16 .itemBottom,
  881 +.viewBox16+.sharewidth .shareItem {
  882 + color: #0B0805;
  883 +}
  884 +
  885 +.viewBox14 .orderingFood,
  886 +.viewBox16 .orderingFood {
  887 + color: #0B0805;
  888 + border: 2rpx solid #0B0805;
  889 +}
  890 +
  891 +.viewBox14+.sharewidth,
  892 +.viewBox16+.sharewidth {
  893 + background: #0B0805;
  894 +}
  895 +
  896 +/* 模板17 */
  897 +.viewBox17 .introduce {
  898 + background: #850402;
  899 +}
  900 +
  901 +.viewBox17 .infoTopName {
  902 + background: rgba(117, 1, 0, 0.75);
  903 +}