Commit a1591e7a1ae5bf3ba64f8ddb6ad3684492d21bab

Authored by pengye
1 parent b870bda6

邀请函新增模板300、入驻文字修改

@@ -165,7 +165,8 @@ @@ -165,7 +165,8 @@
165 "pages/detail_owner_invitation9", 165 "pages/detail_owner_invitation9",
166 "pages/detail_owner_invitation10", 166 "pages/detail_owner_invitation10",
167 "pages/detail_owner_invitation11", 167 "pages/detail_owner_invitation11",
168 - "pages/detail_owner_invitation12" 168 + "pages/detail_owner_invitation12",
  169 + "pages/detail_owner_invitation13"
169 ] 170 ]
170 } 171 }
171 ], 172 ],
@@ -284,8 +284,8 @@ @@ -284,8 +284,8 @@
284 </block> 284 </block>
285 </view> 285 </view>
286 <view class="businessBox font24r"> 286 <view class="businessBox font24r">
287 - 周到安排提供技术支持<text bindtap="call" data-phone="4000009690">4000009690</text>,餐厅入驻请点击  
288 - <view bindtap="gotoJoinSeller" style="text-decoration: underline;">这里</view> 287 + 周到安排提供技术支持<text bindtap="call" data-phone="4000009690">4000009690</text>,
  288 + <view bindtap="gotoJoinSeller" style="text-decoration: underline;">我是商家,我要试用</view>
289 </view> 289 </view>
290 <view class="{{(!marketing || (marketing.is_transpond!='1' && marketing.is_online_book!='1'))?'more more1':'more'}}" wx:if="{{showMoreTip}}"> 290 <view class="{{(!marketing || (marketing.is_transpond!='1' && marketing.is_online_book!='1'))?'more more1':'more'}}" wx:if="{{showMoreTip}}">
291 <view class="moreText">滑动查看更多</view> 291 <view class="moreText">滑动查看更多</view>
@@ -454,8 +454,8 @@ @@ -454,8 +454,8 @@
454 </view> 454 </view>
455 </block> 455 </block>
456 <view class="businessBox font24r"> 456 <view class="businessBox font24r">
457 - 周到安排提供技术支持<text bindtap="call" data-phone="4000009690">4000009690</text>,餐厅入驻请点击  
458 - <view bindtap="gotoJoinSeller" style="text-decoration: underline;">这里</view> 457 + 周到安排提供技术支持<text bindtap="call" data-phone="4000009690">4000009690</text>,
  458 + <view bindtap="gotoJoinSeller" style="text-decoration: underline;">我是商家,我要试用</view>
459 </view> 459 </view>
460 <view class="{{(!marketing || (marketing.is_transpond!='1' && marketing.is_online_book!='1'))?'more more1':'more'}}" wx:if="{{showMoreTip}}"> 460 <view class="{{(!marketing || (marketing.is_transpond!='1' && marketing.is_online_book!='1'))?'more more1':'more'}}" wx:if="{{showMoreTip}}">
461 <view class="moreText">滑动查看更多</view> 461 <view class="moreText">滑动查看更多</view>
@@ -157,8 +157,8 @@ @@ -157,8 +157,8 @@
157 </view> 157 </view>
158 </view> 158 </view>
159 <view class="businessBox font24r"> 159 <view class="businessBox font24r">
160 - 周到安排提供技术支持<text bindtap="call" data-phone="4000009690">4000009690</text>,餐厅入驻请点击  
161 - <view bindtap="gotoJoinSeller" style="text-decoration: underline;">这里</view> 160 + 周到安排提供技术支持<text bindtap="call" data-phone="4000009690">4000009690</text>,
  161 + <view bindtap="gotoJoinSeller" style="text-decoration: underline;">我是商家,我要试用</view>
162 </view> 162 </view>
163 <view class="{{(!marketing || (marketing.is_transpond!='1' && marketing.is_online_book!='1'))?'more more1':'more'}}" wx:if="{{showMoreTip}}"> 163 <view class="{{(!marketing || (marketing.is_transpond!='1' && marketing.is_online_book!='1'))?'more more1':'more'}}" wx:if="{{showMoreTip}}">
164 <view class="moreText">滑动查看更多</view> 164 <view class="moreText">滑动查看更多</view>
  1 +// pack-invitation/pages/detail_owner_invitation13.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 "../../pages/customer/canvas"
  9 +Page({
  10 + /**
  11 + * 页面的初始数据
  12 + */
  13 + data: {
  14 + show_white:false,
  15 + options: {
  16 + tplid: ''
  17 + },
  18 + tableNum: 0,
  19 + detail: {},
  20 + staffinfo: {},
  21 + chef: {},
  22 + marketing: {},
  23 + home: {},
  24 + reserve: {},
  25 + signboard: {},
  26 + store: {},
  27 + recharge_data: {},
  28 + coupon_dataList: [],
  29 + current: 0,
  30 + seller: {
  31 + name: '',
  32 + tablesText: '',
  33 + date: '',
  34 + addr: ''
  35 + },
  36 + priceInfo: '',
  37 + scoreInfo: '',
  38 + discount: '',
  39 + certificate: '',
  40 + dataStr: Date.now() * 1 / 1000,
  41 + swich_phone: '0',
  42 + is_comments: '0',
  43 + is_user_comments: false,
  44 + tableinfo: [],
  45 + roomimage: [],
  46 + StyleType: '',
  47 + showMoreTip: true,
  48 + settingUrl: '',
  49 + inviteImgUrl: '',
  50 + themeColor: '',
  51 + screenHeight: '',
  52 + hasValueOrder: false, //商家是否开通提前点餐功能
  53 + hasValueCertificate: false, //商家是否开通优惠券功能
  54 + hasValueRecharge: false, //商家是否开通充值功能
  55 + hasValueBroadcast: false, //商家是否能播报,只有极速版不能播报
  56 + _attentionAnim: {},
  57 + isPlay: '1',
  58 + titleType: '', //标题样式
  59 + num1: [1, 2, 3, 4, 5, 6, 7, 8],
  60 + num2: [8, 7, 6, 5, 4, 3, 2, 1],
  61 + titleType: '', //标题样式
  62 + paymentStatus: '', //定金支付状态 1支付 0未支付
  63 + reserveData: {}, //自定义图文数据
  64 + toastBool: false, //支付定金提示框
  65 + toastText: '', //支付定金提示文字
  66 + paymentId: '', //定金id
  67 + wxml: null,
  68 + imgSrc: '', //canvas图片地址
  69 + colors:'',//导航栏颜色
  70 + couponData: '', //评价赠送优惠券数据
  71 + timeList: [],
  72 + isMany:'0',//0默认餐段 1多时段
  73 + temp_ddate:'',//展示的到店时间
  74 + lite_style:'',//小程序转发卡片样式
  75 + isMoreBtn:'',//再次预订按钮
  76 + isPaymenBtn:'',//支付定金按钮
  77 + isShareItem:'',//转发客人按钮
  78 + couponArr: [],//待领取的优惠券列表
  79 + couponList:[],//优惠券列表
  80 + animationData: {},
  81 + animationData2:{},
  82 + isShow:'0',
  83 + isFrame:'0'
  84 + },
  85 + tablestr: '',
  86 + urlsValue: [],
  87 + screenHeight: '',
  88 + attentionAnim: {},
  89 + audioCtx: '', //播报
  90 + timers: null, // 动画定时器
  91 + n: 0,
  92 + modal:'',
  93 + couponModal: '',
  94 + give_user:'',
  95 + /**
  96 + * 生命周期函数--监听页面加载
  97 + */
  98 + onLoad(options) {
  99 + this.id = options.id
  100 + let param = {
  101 + options: options,
  102 + hasOwner: options.hasSellerShare == 1, //是否为发起人
  103 + }
  104 + param.tpls = [TP.tpls(options.tplid)]
  105 + console.log(param);
  106 + console.log(options);
  107 + this.setData(param)
  108 + mta.Page.init({
  109 + "appID": "500667280",
  110 + "eventID": "500667287",
  111 + "statPullDownFresh": true,
  112 + "statShareApp": true,
  113 + "statReachBottom": true,
  114 + "lauchOpts": options, //渠道分析
  115 + });
  116 + const systemInfo = wx.getSystemInfoSync();
  117 + this.screenHeight = systemInfo.windowHeight; // 获取屏幕高度
  118 + this.modal = this.selectComponent("#payModal"); //通过给组件所起的id调用组件
  119 + wx.onUserCaptureScreen((res)=> {
  120 + this.modal.showModal()
  121 + })
  122 + this.couponModal = this.selectComponent("#couponModal");
  123 + },
  124 + // 打开截屏弹框
  125 + showModal() {
  126 + this.modal.showModal()
  127 + },
  128 + // 关闭截屏弹框
  129 + closeModal() {
  130 + this.modal.closeModal()
  131 + },
  132 + // 关闭优惠券弹框(更新已被领取数量)
  133 + closeCouponModal() {
  134 + this.getActivityByIdFun(this.data.couponList,'1')
  135 + this.couponModal.closeModal()
  136 + this.setData({
  137 + isShow: '1',
  138 + })
  139 + setTimeout(() => {
  140 + this.startAnimation();
  141 + }, 800);
  142 + },
  143 + // 页面滚动事件
  144 + onPageScroll: function (event) {
  145 + if(event.scrollTop>150){ //当页面滚动到某个位置时(这里设置为50),将导航栏背景颜色设置为白色
  146 + this.setData({
  147 + show_white:true
  148 + })
  149 + }else{
  150 + this.setData({
  151 + show_white:false
  152 + })
  153 + }
  154 + const scrollTop = event.scrollTop * 1 + this.screenHeight - 80; // 获取滚动的距离
  155 + if (scrollTop < this.screenHeight) {
  156 + this.setData({
  157 + showMoreTip: true
  158 + });
  159 + } else {
  160 + this.setData({
  161 + showMoreTip: false
  162 + });
  163 + }
  164 + },
  165 + // 点击了解更多会员优惠政策
  166 + gotoFavourableList() {
  167 + let url = util.http_build_query({
  168 + sellerName: this.data.seller.name,
  169 + sellerid: this.data.seller.sid,
  170 + oid: this.data.detail.id,
  171 + types: '1'
  172 + }, '/pack-cookbook/pages/favourableList')
  173 + wx.navigateTo({
  174 + url
  175 + })
  176 + },
  177 + // 去评价
  178 + evaluateFun() {
  179 + let url = util.http_build_query({
  180 + sellerName: this.data.seller.name,
  181 + sellerid: this.data.seller.sid,
  182 + oid: this.data.detail.id,
  183 + types: '1',
  184 + previousPage: '1',
  185 + }, '/pages/pinglun/createOpinion')
  186 + wx.navigateTo({
  187 + url
  188 + })
  189 + },
  190 + /**
  191 + * 用户点击右上角分享
  192 + */
  193 + onShareAppMessage: function () {
  194 + return this.sharesetting();
  195 + },
  196 + /**
  197 + * 监听用户点击分享到朋友圈按钮的操作
  198 + */
  199 + onShareTimeline() {
  200 + return this.sharesetting();
  201 + },
  202 + /**
  203 + * 生命周期函数--监听页面显示
  204 + */
  205 + onShow: function () {
  206 + this.getDetail()
  207 + this.getText()
  208 + this.getPaymentStatus()
  209 + },
  210 + // 复制微信号
  211 + copyWeChat() {
  212 + if (this.data.staffinfo.wechat) {
  213 + wx.setClipboardData({
  214 + data: this.data.staffinfo.wechat,
  215 + success(res) {
  216 + wx.getClipboardData({
  217 + success(res) {
  218 + console.log(res.data) // data
  219 + }
  220 + })
  221 + }
  222 + })
  223 + } else {
  224 + console.log('无微信号')
  225 + }
  226 + },
  227 + // 拨打电话
  228 + call(e) {
  229 + const phone = e.currentTarget.dataset['phone'];
  230 + wx.reportMonitor('1012', 1)
  231 + wx.makePhoneCall({
  232 + phoneNumber: phone
  233 + })
  234 + },
  235 + // 跳转到商家入驻页
  236 + gotoJoinSeller() {
  237 + wx.navigateTo({
  238 + url: util.http_build_query({
  239 + laiyuan:'邀请函'
  240 + }, '/pages/customer/joinSeller')
  241 + })
  242 + },
  243 + // 导航
  244 + looklocation: function () {
  245 + wx.reportMonitor('1015', 1)
  246 + wx.openLocation({
  247 + latitude: Number(this.data.seller.lat),
  248 + longitude: Number(this.data.seller.long),
  249 + scale: 17,
  250 + address: this.data.seller.addr,
  251 + success: function (res) {
  252 + console.log(res)
  253 + }
  254 + })
  255 + },
  256 + // 获取包间图片列表
  257 + getroomimage(sellerid) {
  258 + App.Tables.GetTablesPhoto({
  259 + sellerid,
  260 + tableids: this.tablestr
  261 + }).then((json) => {
  262 + if (json.ret == 200) {
  263 + this.setData({
  264 + roomimage: json.data
  265 + })
  266 + var urlsArr = [];
  267 + json.data.forEach((v, i) => {
  268 + urlsArr.push(v.url);
  269 + })
  270 + this.urlsValue = urlsArr;
  271 + console.log('urlsArr', urlsArr)
  272 + console.log('roomimage', json.data)
  273 + }
  274 + })
  275 + },
  276 + // 预览包间图片
  277 + lookroom(e) {
  278 + const item = e.currentTarget.dataset['item'];
  279 + wx.previewImage({
  280 + current: item.url, // 当前显示图片的http链接
  281 + urls: this.urlsValue, // 需要预览的图片http链接列表
  282 + })
  283 + },
  284 + // 预览其他图片
  285 + lookImgs(e) {
  286 + const url = e.currentTarget.dataset['url'];
  287 + const imgs = e.currentTarget.dataset['imgs'];
  288 + let urls = imgs ? imgs : [url]
  289 + wx.previewImage({
  290 + current: url,
  291 + urls,
  292 + })
  293 + },
  294 + // 获取店铺详情
  295 + getDetail() {
  296 + App.Reserve.Detail({
  297 + rid: this.data.options.id
  298 + }).then(res => {
  299 + let tablesText = '', //桌子信息
  300 + deskStr = '',
  301 + tableNum = 0;
  302 + let tableinfo = util.determine(res.data.tableinfo);
  303 + console.log('tableinfo', tableinfo);
  304 + res.data.tables.forEach((t, i) => {
  305 + tableNum += t.table_pnum * 1
  306 + tablesText += t.rname + t.name + (i == (res.data.tables.length - 1) ? '' : '、');
  307 + deskStr += t.name + (i == (res.data.tables.length - 1) ? '' : '、');
  308 + })
  309 + let tabaleids = [];
  310 + res.data.tables.forEach(t => {
  311 + tabaleids.push(t.id);
  312 + })
  313 + this.tablestr = tabaleids.toString();
  314 + let reserev = RS.reserve(res.data)
  315 + let dateSmart = util.unixtoTime(reserev.ddate, 'YYYY-MM-DD 星期WW');
  316 + let yearMonthDay = util.unixtoTime(reserev.ddate, 'YYYY年MM月DD日')
  317 + let yearMonth = util.unixtoTime(reserev.ddate, 'MM月DD日')
  318 + let dateStr = util.unixtoTime(reserev.ddate, 'HH点')
  319 + let dateStrDivide = util.unixtoTime(reserev.ddate, 'II分')
  320 + let detail = this.formatDatail(reserev, dateSmart)
  321 + detail.oneTableName = res.data.tables[0].name;
  322 + reserev.soltName = '';
  323 + this.setData({
  324 + detail,
  325 + tableNum,
  326 + tableinfo,
  327 + is_user_comments: res.data.is_user_comments,
  328 + temp_ddate:this.data.temp_ddate?this.data.temp_ddate:reserev.temp_ddate?util.unixtoTime(reserev.temp_ddate, 'HH:II'):util.unixtoTime(reserev.ddate, 'HH:II'),
  329 + seller: {
  330 + daily: reserev.seller.daily,
  331 + name: reserev.seller.sellername,
  332 + sid: reserev.sid,
  333 + date: dateSmart,
  334 + tablesText,
  335 + addr: reserev.seller.real_address || reserev.seller.map_address,
  336 + image: reserev.image_url,
  337 + hasOwner: true,
  338 + type: reserev.type,
  339 + is_set_ddate: reserev.is_set_ddate,
  340 + hasUpTime: reserev.type == 1 && reserev.hasRunning && reserev.status != 2,
  341 + tel: reserev.seller.seller_tel.split(','),
  342 + soltName: reserev.soltName || detail.mname,
  343 + dateTime: util.unixtoTime(reserev.ddate, 'HH:II'),
  344 + time: util.unixtoTime(reserev.ddate, '星期WW HH:II'),
  345 + lat: reserev.seller.lat,
  346 + long: reserev.seller.long,
  347 + yearMonthDay,
  348 + yearMonth,
  349 + dateStr,
  350 + deskStr,
  351 + dateStrDivide: dateStrDivide == '00分' ? '' : dateStrDivide,
  352 + seller_tel: reserev.seller.seller_tel,
  353 + phone:reserev.seller.phone,
  354 + }
  355 + })
  356 + this.give_user = reserev.give_user ? reserev.give_user : '2';
  357 + console.log('reserev信息', reserev);
  358 + console.log('seller信息', this.data.seller);
  359 + console.log('detail信息', this.data.detail);
  360 + setTimeout(() => {
  361 + this.getstaffinfo(res.data.uid, reserev.sid);
  362 + this.getroomimage(reserev.sid)
  363 + this.getSellerVersionFun(reserev.sid);
  364 + }, 0);
  365 + }).catch(res => {
  366 + console.log(res, '详情请求失败');
  367 + })
  368 + },
  369 + // 获取商家版本,不是超能版或者没有开通对应模块,不显示
  370 + getSellerVersionFun(sellerid) {
  371 + App.SellerVersion.GetSellerVersion({
  372 + sellerid
  373 + }).then((res) => {
  374 + let data = res.data;
  375 + console.log('版本列表', data);
  376 + if (data && data.length > 0) {
  377 + data.sort((a, b) => b.cdate * 1 - a.cdate * 1);
  378 + // 获取店铺当前版本 (cdate最大最后一个充入的 && 当前时间有效 && 当前版本)
  379 + let obj = data.find(item => item.vtype == 1 || item.vtype == 2 || item.vtype == 4);
  380 + console.log('当前版本', {
  381 + ...obj
  382 + });
  383 + // 提前点餐功能:超能版 || 有提前点餐模块
  384 + const hasValueOrder = obj.vtype == '1' || data.some(item => item.vid == '6');
  385 + // 优惠券功能:超能版 || 高级版 || 有优惠券模块
  386 + const hasValueCertificate = obj.vtype == '1' || obj.vtype == '4' || data.some(item => item.vid == '8');
  387 + // 充值功能:超能版 || 有充值模块
  388 + const hasValueRecharge = obj.vtype == '1' || data.some(item => item.vid == '9');
  389 + // 播报功能:超能版 || 标准版 || 标准版首年 || 高级版
  390 + const hasValueBroadcast = obj.vtype == '1' || obj.vid == '4' || obj.vid == '13' || obj.vtype == '4';
  391 + this.setData({
  392 + hasValueOrder,
  393 + hasValueCertificate,
  394 + hasValueRecharge,
  395 + hasValueBroadcast,
  396 + })
  397 + }
  398 + })
  399 + },
  400 + // 通过预订ID查收定金详情
  401 + getPaymentStatus() {
  402 + App.Reserve.GetReserveDepositByRid({
  403 + rid: this.data.options.id
  404 + }).then(res => {
  405 + if (res.ret == 200 && res.data && res.data.length > 0) {
  406 + let data = res.data[0];
  407 + let paymentStatus = data.trade_state == 'SUCCESS' ? '1' : '0';
  408 + let options = this.data.options
  409 + this.setData({
  410 + paymentId: data.id,
  411 + paymentStatus,
  412 + isPaymenBtn:options.isOrder != '1' && data.id && paymentStatus == '0' && options.hasSellerShare == '1' && options.isDeposit == '1',
  413 + })
  414 + }
  415 + })
  416 + },
  417 + // 获取自定义图文内容
  418 + getText() {
  419 + App.Reserve.GetReserveImgText({
  420 + rid: this.data.options.id
  421 + }).then(res => {
  422 + if (res.ret == 200 && res.data) {
  423 + let data = res.data;
  424 + let content = util.determine(data.content)
  425 + console.log('contentcontentcontent', content);
  426 + this.setData({
  427 + reserveData: {
  428 + title: data.title || '',
  429 + content,
  430 + }
  431 + })
  432 + }
  433 + })
  434 + },
  435 + // 点击支付定金
  436 + paymentFun() {
  437 + let that = this;
  438 + let openid = getApp().openid;
  439 + if (!openid) return wx.showToast({
  440 + title: '请在小程序中支付订金!',
  441 + icon: 'none',
  442 + })
  443 + App.PayOnline.CombineTransactionsByDeposit({
  444 + id: this.data.paymentId,
  445 + openid,
  446 + }).then(res => {
  447 + if (res.ret == 200) {
  448 + wx.requestPayment({
  449 + timeStamp: res.data.timeStamp + '',
  450 + nonceStr: res.data.nonceStr,
  451 + package: res.data.package,
  452 + signType: res.data.signType,
  453 + paySign: res.data.paySign,
  454 + success(ress) {
  455 + console.log('微信支付结果', ress);
  456 + if (ress.errMsg == 'requestPayment:ok') {
  457 + console.log('支付成功', ress);
  458 + that.setData({
  459 + paymentStatus: '1',
  460 + toastBool: true,
  461 + toastText: '支付成功'
  462 + })
  463 + that.hideToast();
  464 + return
  465 + }
  466 + console.log('支付失败1', ress);
  467 + that.setData({
  468 + toastBool: true,
  469 + toastText: '支付失败,请重新支付'
  470 + })
  471 + that.hideToast();
  472 + },
  473 + fail(ress) {
  474 + console.log('支付失败2', ress);
  475 + that.setData({
  476 + toastBool: true,
  477 + toastText: '支付失败,请重新支付'
  478 + })
  479 + that.hideToast();
  480 + },
  481 + })
  482 + } else {
  483 + wx.showToast({
  484 + title: res.msg,
  485 + icon: 'none',
  486 + })
  487 + }
  488 + })
  489 + },
  490 + // 关闭支付失败或者成功弹框
  491 + hideToast() {
  492 + setTimeout(() => {
  493 + this.setData({
  494 + toastBool: false
  495 + })
  496 + }, 1500)
  497 + },
  498 + // 客户经理获取基本信息
  499 + getstaffinfo(uid, sid) {
  500 + console.log('sellerid', this.data.detail.seller.id);
  501 + App.Activity.GetCustomerActivityBaseinfo({
  502 + sellerid: this.data.detail.seller.id,
  503 + uid
  504 + }).then((json) => {
  505 + if (json.ret == 200) {
  506 + console.log('客户经理获取基本信息------', json.data)
  507 + this.setData({
  508 + staffinfo: json.data,
  509 + couponArr:[],
  510 + })
  511 + this.getSellerTemplateConfFun(sid);
  512 + }
  513 + })
  514 + },
  515 + // 提前点餐
  516 + cookbook() {
  517 + if (this.data.detail.order && this.data.detail.order.cookbooklist.length > 0) {
  518 + let data = {
  519 + rid: this.id,
  520 + oid: this.data.detail.order.id,
  521 + sellerName: this.data.seller.name,
  522 + sid: this.data.seller.sid,
  523 + identity: '1',
  524 + hasSuccess: '1',
  525 + }
  526 + wx.navigateTo({
  527 + url: `/pack-cookbook/pages/success_new?hasSuccess=${data.hasSuccess}&identity=${data.identity}&oid=${data.oid}&rid=${data.rid}&sellerName=${data.sellerName}&sid=${data.sid}`,
  528 + })
  529 + } else {
  530 + App.Advance.CreateOrder({
  531 + rid: this.id,
  532 + }).then(res => {
  533 + if (res.ret != 200) {
  534 + return util.toast(res.msg, 'none')
  535 + }
  536 + wx.navigateTo({
  537 + url: util.http_build_query({
  538 + rid: this.id,
  539 + oid: res.data.id,
  540 + sid: res.data.sellerid,
  541 + sellerName: this.data.seller.name,
  542 + identity: '1',
  543 + }, '/pack-cookbook/pages/index_new')
  544 + });
  545 + })
  546 + }
  547 + },
  548 + // 生成海报
  549 + painterBtn(liteStyle, timeStr) {
  550 + let style = liteStyle.split('-');
  551 + let type1 = style[0];
  552 + let type2 = style[1];
  553 + let data = this.data.detail;
  554 + let isMany = this.data.isMany;
  555 + let img = data.seller.seller_image.replace(/^http:/, "https:");
  556 + let d = data.ddate_solt;
  557 + let date1 = util.unixtoTime(data.ddate, 'MM月DD日');
  558 + let date2 = util.unixtoTime(data.ddate, 'MM/DD');
  559 + let week = ' ' + util.unixtoTime(data.ddate, '周WW');
  560 + let timeSlot1 = ' ' + (isMany == '0' ? (d == '1' ? '早上' : d == '2' ? '中午' : d == '3' ? '晚上' : '') : data.mname);
  561 + let timeSlot2 = ' ' + this.data.seller.soltName;
  562 + let time = this.data.temp_ddate ? ' ' + this.data.temp_ddate : ' ' + util.unixtoTime(data.ddate, 'HH:II')
  563 + time = timeStr ? timeStr : time;
  564 + let [day1, day2] = [...util.unixtoTime(data.ddate, '周WW')]
  565 + let section = ''
  566 + // 老样式123
  567 + if (type1 && !type2 && type1 != '4') {
  568 + section = type1 == '1' ? week + timeSlot1 : type1 == '2' ? week + time : type1 == '3' ? week + timeSlot2 : '';
  569 + }
  570 + // 新样式
  571 + if (type1 && type2) {
  572 + if (type1 == '1') {
  573 + section = type2 == '1' ? date1 + week + time + timeSlot2 : type2 == '2' ? date1 + week + timeSlot1 : type2 == '3' ? date1 + week + time : type2 == '4' ? date1 + week + timeSlot2 : '';
  574 + }
  575 + if (type1 == '2') {
  576 + section = type2 == '1' ? week + time + timeSlot2 : type2 == '2' ? week + timeSlot1 : type2 == '3' ? week + time : type2 == '4' ? week + timeSlot2 : '';
  577 + }
  578 + if (type1 == '3' || type1 == '4') {
  579 + section = type2 == '1' ? time + timeSlot2.trim() : type2 == '2' ? timeSlot1.trim() : type2 == '3' ? time.trim() : type2 == '4' ? timeSlot2.trim() : '';
  580 + }
  581 + }
  582 + if (type1 && !type2 && type1 == '4') {
  583 + section = week + timeSlot2;
  584 + }
  585 + this.setData({
  586 + wxml: canvas({
  587 + imgUrl: img || 'https://nosqn.colorcun.com/reserve/images/3x/%E6%9A%82%E6%97%A0.png',
  588 + info: {
  589 + sellerName: data.seller.sellername,
  590 + date: util.unixtoTime(data.ddate, 'MM月DD日'),
  591 + time: section,
  592 + oneTableName: data.oneTableName,
  593 + },
  594 + type1,
  595 + type2,
  596 + date2,
  597 + week,
  598 + day2,
  599 + })
  600 + })
  601 + },
  602 + onImgOK(e) {
  603 + this.setData({
  604 + imgSrc: e.detail.path
  605 + })
  606 + console.log('海报生成成功', this.data.imgSrc);
  607 + },
  608 + // 分享
  609 + sharesetting() {
  610 + wx.reportMonitor('1017', 1)
  611 + this.closeModal()
  612 + if(this.data.options.isOrder == '1' && this.data.detail.status !='4'){
  613 + return {
  614 + title: '推荐' + this.data.seller.name + ',点击可查看详情并导航到店',
  615 + path: util.http_build_query({
  616 + id: this.data.detail.seller.id
  617 + }, '/pages/reserve/shopHome'),
  618 + imageUrl: this.data.detail.seller.seller_image || 'http://nosqn.colorcun.com/reserve/images/3x/%E6%9A%82%E6%97%A0.png',
  619 + }
  620 + }else{
  621 + let parmdata = {
  622 + id: this.id,
  623 + fromid: getApp().openid,
  624 + hasInvitation: 1,
  625 + tplid: this.data.options.tplid
  626 + }
  627 + if (this.data.options.uid) {
  628 + parmdata.uid = this.data.options.uid;
  629 + }
  630 + return {
  631 + title: '我已订好' + this.data.seller.name + ',点击可查看详情并导航到店',
  632 + path: util.http_build_query(parmdata, '/pages/customer/detail_owner_invitation_new'),
  633 + imageUrl: this.data.imgSrc || 'http://nosqn.colorcun.com/reserve/images/3x/%E6%9A%82%E6%97%A0.png',
  634 + }
  635 + }
  636 + },
  637 + // 修改detail数据
  638 + formatDatail(detail, dateSmart) {
  639 + detail.rdateStr = dateSmart;
  640 + detail.tableFirst = detail.tables[0].name;
  641 + if (detail.tables.length > 1) {
  642 + detail.tableSubInfo = '等' + (detail.tables.length) + '个' +
  643 + (detail.tables[0].tid == 2 ? '包间' : '');
  644 + }
  645 + detail.rname = detail.rname.trim()
  646 + if (detail.rname && detail.sex != 3) {
  647 + detail.rnameStr = detail.rname + (detail.sex == 1 ? '先生' : detail.sex == 2 ? '女士' : detail.sex == 4 ? '贵宾' : '')
  648 + } else if (!detail.rname && detail.sex == 4) {
  649 + detail.rnameStr = '贵宾'
  650 + } else {
  651 + detail.rnameStr = detail.rname
  652 + }
  653 + detail.eatStr = '邀请您共进晚餐';
  654 + let hi = util.unixtoTime(detail.ddate, 'HHII');
  655 + if (hi < '10:00') {
  656 + detail.eatStr = '邀请您共进早餐';
  657 + } else if (hi < '15:00') {
  658 + detail.eatStr = '邀请您共进午餐';
  659 + }
  660 + return detail;
  661 + },
  662 + // 获取商家设置营销信息
  663 + getSellerTemplateConfFun(sid) {
  664 + console.log(sid, 'sidsidsidsid');
  665 + App.Seller.GetSellerTemplateConf({
  666 + sid
  667 + }).then(res => {
  668 + let data = res.data
  669 + console.log('data', data);
  670 + let couponList = []
  671 + let colors, settingUrl, inviteImgUrl, themeColor, StyleType, titleType, home, chef, marketing, coupon, coupon_data_pay, coupon_data_free, reserve, swich_phone, is_comments, signboard, store;
  672 + chef = util.determine(data.chef);
  673 + reserve = util.determine(data.reserve);
  674 + marketing = util.determine(data.marketing);
  675 + signboard = util.determine(data.signboard);
  676 + store = util.determine(data.store);
  677 + home = util.determine(data.home);
  678 + themeColor = data.lite_class || 'ultramarine';
  679 + StyleType = data.type;
  680 + inviteImgUrl = 'https://nosqn.colorcun.com/inviteText1.png';
  681 + settingUrl = 'https://nosqn.colorcun.com/template11.png';
  682 + colors = "#0B1A67";
  683 + titleType = data.title_class || '1';
  684 + swich_phone = reserve && reserve.swich_phone ? reserve.swich_phone : '';
  685 + if (store) store.content = (store.is_introduce_all == '1' && store.content) ? util.determine(store.content) : '';
  686 + if (chef) chef.content = (chef.is_introduce_all == '1' && chef.content) ? util.determine(chef.content) : '';
  687 + if (signboard) signboard.content = (signboard.is_introduce_all == '1' && signboard.content) ? util.determine(signboard.content) : '';
  688 + if (reserve) reserve.content = (reserve.is_introduce_all == '1' && reserve.content) ? util.determine(reserve.content) : '';
  689 + if (home) home.image = (home && home.image && (!home.id_first_image || home.id_first_image!='0')) ? home.image : '';
  690 + if (marketing) {
  691 + marketing.logo = (marketing.logo && (!marketing.is_logo || marketing.is_logo!='0')) ? marketing.logo : '';
  692 + is_comments = marketing.is_comments ? marketing.is_comments : '';
  693 + coupon = (marketing.coupon_data && marketing.is_coupon == '1') ? util.determine(marketing.coupon_data) : '';
  694 + coupon_data_pay = (marketing.coupon_data_pay && marketing.is_coupon_pay == '1') ? util.determine(marketing.coupon_data_pay) : '';
  695 + marketing.coupon_data_payList = coupon_data_pay
  696 + coupon_data_free = (marketing.coupon_data_free && marketing.is_coupon_free == '1') ? util.determine(marketing.coupon_data_free) : '';
  697 + marketing.coupon_data_freeList = coupon_data_free
  698 + let info = marketing.coupon_data_comments ? util.determine(marketing.coupon_data_comments) : '';
  699 + let couponDataId = info && info.length > 0 ? info[0].id : {}
  700 + // 根据券ID获取评价赠送的券详情
  701 + if(couponDataId) this.getEvaluateFun(couponDataId)
  702 + }
  703 + // is_cash 代金券 is_discount折扣券 is_dish菜品券 只有代金券有几折显示
  704 + // 获取全部的优惠券(商家券、个人券、免费券、付费券)
  705 + couponList = this.addCoupons(coupon,couponList);
  706 + couponList = this.addCoupons(coupon_data_pay,couponList);
  707 + couponList = this.addCoupons(coupon_data_free,couponList);
  708 + // 根据券ID获取券详情
  709 + this.getActivityByIdFun(couponList)
  710 + // 根据充值ID获取充值详情
  711 + if (marketing && marketing.is_recharge && marketing.is_recharge == '1' && marketing.recharge_data) {
  712 + this.getRechargeDetail(marketing.recharge_data.id)
  713 + }
  714 + if (store && store.images && store.images.length > 0) store.images = util.determine(store.images);
  715 + if (reserve && reserve.park_info_images && reserve.park_info_images.length > 0) reserve.park_info_images = util.determine(reserve.park_info_images);
  716 + if (signboard && signboard.images && signboard.images.length > 0) signboard.images = util.determine(signboard.images);
  717 + this.getLocalLunchTime(data.lite_style);
  718 + let obj = {
  719 + chef,
  720 + marketing,
  721 + home,
  722 + reserve,
  723 + signboard,
  724 + store,
  725 + swich_phone,
  726 + is_comments,
  727 + StyleType,
  728 + titleType,
  729 + themeColor,
  730 + settingUrl,
  731 + inviteImgUrl,
  732 + colors,
  733 + lite_style:data.lite_style,
  734 + couponList,
  735 + isMoreBtn:marketing && marketing.is_online_book=='1' && this.data.options.onlineReserve == '1',
  736 + isShareItem: this.data.options.isOrder != '1' && marketing && marketing.is_transpond=='1',
  737 + }
  738 + console.log('获取数据GetSellerTemplateConf--------------------', {
  739 + ...obj
  740 + });
  741 + this.setData({
  742 + ...obj
  743 + })
  744 + // 开启语音播报
  745 + if (reserve && reserve.swich_voice == '1') {
  746 + this.setData({
  747 + isPlay: '1',
  748 + })
  749 + this.textToSpeechFun(reserve.voice_info)
  750 + }
  751 + }).catch(res => {
  752 + console.log('GetSellerTemplateConf请求失败');
  753 + })
  754 + },
  755 + // 获取日期对应的时段
  756 + getLocalLunchTime(lite_style) {
  757 + let detail = this.data.detail;
  758 + let ddateStr = new Date(detail.ddate * 1000);
  759 + let year = ddateStr.getFullYear();
  760 + let month = ddateStr.getMonth() + 1;
  761 + let day = ddateStr.getDate();
  762 + let day1 = year + '-' + (month < 10 ? '0' + month : month) + '-' + (day < 10 ? '0' + day : day);
  763 + App.Seller.getMealSectionByDay({
  764 + sellerid: detail.seller.id,
  765 + day: day1,
  766 + }).then(res => {
  767 + let data = res.data;
  768 + let lunchDinnerList = [];
  769 + let isMany = '0';//0默认餐段 1多时段
  770 + if (data.length <= 3 && !data[0].ddate_solt) {
  771 + isMany = '0';
  772 + data.forEach(i => {
  773 + if (i.mname == '早餐') {
  774 + lunchDinnerList.push({
  775 + mname: "早餐",
  776 + mdate: i.mdate,
  777 + ddate_solt: 1,
  778 + })
  779 + }
  780 + if (i.mname == '午餐') {
  781 + lunchDinnerList.push({
  782 + mname: "午餐",
  783 + mdate: i.mdate,
  784 + ddate_solt: 2,
  785 + })
  786 + }
  787 + if (i.mname == '晚餐') {
  788 + lunchDinnerList.push({
  789 + mname: "晚餐",
  790 + mdate: i.mdate,
  791 + ddate_solt: 3,
  792 + })
  793 + }
  794 + })
  795 + } else {
  796 + isMany = '1';
  797 + lunchDinnerList = data;
  798 + }
  799 + let obj = lunchDinnerList.filter(i => {
  800 + return i.ddate_solt == detail.ddate_solt
  801 + })
  802 + var timeList = [];
  803 + if (obj && obj.length > 0) {
  804 + var time = obj[0].mdate.split("-");
  805 + timeList = this.computeHour(time[0], time[1], 15);
  806 + }
  807 + this.setData({
  808 + timeList,
  809 + isMany,
  810 + })
  811 + // 获取转发客人卡片设置
  812 + let lite = lite_style || '3';
  813 + let liteStyle = lite.split('-');
  814 + if (liteStyle[0] == '0') {
  815 + this.setData({
  816 + imgSrc: detail.seller.seller_image
  817 + })
  818 + } else {
  819 + this.painterBtn(lite);
  820 + }
  821 + }).catch(res => {
  822 + console.log(res, '获取多时段失败');
  823 + })
  824 + },
  825 + // 点击商家有礼
  826 + gotoSellerGift(e){
  827 + this.couponModal.closeModal()
  828 + const form = e.currentTarget.dataset['form'];
  829 + let url = util.http_build_query({
  830 + id: this.data.detail.id,
  831 + hasSellerShare: this.data.options.hasSellerShare,
  832 + form
  833 + }, '/pages/reserve/sellerGift')
  834 + wx.navigateTo({
  835 + url
  836 + })
  837 + },
  838 + // 再次预订
  839 + secondbook() {
  840 + wx.reportMonitor('1013', 1)
  841 + wx.redirectTo({
  842 + url: '/pages/reserve/shopHome?id=' + this.data.detail.seller.id
  843 + })
  844 + },
  845 + // 文字转语音的方法
  846 + textToSpeechFun(voice_info) {
  847 + console.log('voice_info', voice_info);
  848 + let that = this;
  849 + let data = this.data;
  850 + data.detail.rname = data.detail.rname.trim()
  851 + let str = data.detail.sex == 1 ? '先生' : data.detail.sex == 2 ? '女士' : data.detail.sex == 4 ? '贵宾' : '';
  852 + let charArray = data.seller.deskStr.split('');
  853 + let modifiedArray = charArray.map(char => char + ' ');
  854 + let resultString = modifiedArray.join('').slice(0, -1);
  855 + const replacements = {
  856 + "{年月日}": data.seller.yearMonthDay,
  857 + "{月日}": data.seller.yearMonth,
  858 + "{餐段}": data.seller.soltName,
  859 + "{就餐时间}": data.seller.dateStr + data.seller.dateStrDivide,
  860 + "{包间名}": resultString,
  861 + "{区域名+包间名}": data.seller.tablesText,
  862 + "{经理名字}": data.staffinfo.name,
  863 + "{客人姓名}": data.detail.rname ? (data.detail.rname + str) : str=='贵宾' ? '贵宾' : '',
  864 + "{预订日期}": data.seller.yearMonthDay,
  865 + "{桌位}": resultString,
  866 + };
  867 + let newStr = voice_info.replace(/{预订日期}|{桌位}|{年月日}|{月日}|{餐段}|{就餐时间}|{包间名}|{区域名\+包间名}|{经理名字}|{客人姓名}/g, function (matched) {
  868 + return replacements[matched];
  869 + });
  870 + console.log('newStr', newStr);
  871 + plugin.textToSpeech({
  872 + lang: "zh_CN",
  873 + tts: true,
  874 + content: newStr,
  875 + success: function (res) {
  876 + that.filename = res.filename
  877 + that.speech()
  878 + },
  879 + fail: function (res) {
  880 + console.log("fail tts", res)
  881 + }
  882 + })
  883 + },
  884 + // 开启语音播报
  885 + speech() {
  886 + var attentionAnim = wx.createAnimation({
  887 + duration: 1000,
  888 + timingFunction: 'linear',
  889 + })
  890 + this.attentionAnim = attentionAnim
  891 + this.setData({
  892 + _attentionAnim: attentionAnim,
  893 + attentionAnim: attentionAnim.export()
  894 + })
  895 + this.audioCtx = wx.createInnerAudioContext()
  896 + this.audioCtx.src = this.filename
  897 + this.audioCtx.loop = true
  898 + this.audioCtx.play()
  899 + this.audioCtx.onPlay((e) => {
  900 + this.setData({
  901 + isPlay: this.audioCtx.paused ? '2' : '1'
  902 + })
  903 + })
  904 + this.audioCtx.onPause((e) => {
  905 + this.setData({
  906 + isPlay: this.audioCtx.paused ? '2' : '1'
  907 + })
  908 + })
  909 + clearInterval(this.timers)
  910 + this.animation()
  911 + },
  912 + // 持续旋转动画
  913 + animation() {
  914 + let that = this;
  915 + var time = setInterval(function () {
  916 + this.n = this.n + 1;
  917 + let attentionAnim = that.data._attentionAnim
  918 + attentionAnim.rotate(180 * (this.n)).step()
  919 + that.setData({
  920 + attentionAnim: attentionAnim.export(),
  921 + })
  922 + }.bind(this), 1000)
  923 + this.timers = time;
  924 + },
  925 + // 暂停/继续播放
  926 + stopMusic() {
  927 + if (this.data.isPlay == '2') { // 2 暂停状态
  928 + console.log("开始");
  929 + clearInterval(this.timers)
  930 + this.animation()
  931 + this.audioCtx.play() //开始
  932 + return;
  933 + }
  934 + if (this.data.isPlay == '1') { // 1 运行状态
  935 + console.log('暂停');
  936 + if (this.n % 2 != 0) {
  937 + this.n = this.n + 1;
  938 + let attentionAnim = this.data._attentionAnim;
  939 + attentionAnim.rotate(180 * this.n).step();
  940 + this.setData({
  941 + attentionAnim: attentionAnim.export(),
  942 + })
  943 + }
  944 + clearInterval(this.timers)
  945 + this.audioCtx.pause() //暂停
  946 + return;
  947 + }
  948 + },
  949 + // 根据充值ID获取充值详情
  950 + getRechargeDetail(id) {
  951 + App.Activity.GetNewRecharge({
  952 + id
  953 + }).then(res => {
  954 + if (res.data) {
  955 + let detail = res.data
  956 + let exp_date = res.data.exp_date ? JSON.parse(res.data.exp_date) : ''
  957 + let recharge_list = res.data.recharge_list ? JSON.parse(res.data.recharge_list) : ''
  958 + let priceInfo, scoreInfo, certificate;
  959 + detail.recharge_list = recharge_list;
  960 + detail.exp_date = exp_date;
  961 + if (recharge_list.is_price == '1') priceInfo = '会员充值满' + detail.recharge_money + '元赠送' + recharge_list.price + '元余额';
  962 + if (recharge_list.is_score == '1') scoreInfo = '会员充值满' + detail.recharge_money + '元赠送' + recharge_list.score + '积分';
  963 + if (recharge_list.is_coupons == '1' && recharge_list.coupons_names.length > 0) certificate = recharge_list.coupons_names.join('、');
  964 + let recharge_data = (this.data.dataStr<detail.etime*1 && detail.is_open == '1') ? detail : ''
  965 + console.log('邀请函--------------充值',recharge_data);
  966 + this.setData({
  967 + recharge_data,
  968 + scoreInfo,
  969 + priceInfo,
  970 + certificate
  971 + })
  972 + } else {
  973 + this.setData({
  974 + recharge_data: {},
  975 + })
  976 + }
  977 + })
  978 + },
  979 + // 获取评价赠送的券最新详情
  980 + getEvaluateFun(id){
  981 + App.Activity.GetActivityById({
  982 + id
  983 + }).then(res => {
  984 + if (res.data.length > 0) {
  985 + let couponData = res.data[0]
  986 + let data = couponData.expiration_date ? util.determine(couponData.expiration_date) : '';
  987 + // showCoupon 代表赠送的券没过有效期 && 是开启状态
  988 + couponData.showCoupon = (((data.valid_forever == '0' && this.data.dataStr < (data.etime * 1)) || data.valid_forever == '1') && couponData.is_open == '1') ? '1' : '0';
  989 + console.log('邀请函--------------------评价赠送的优惠券',couponData);
  990 + this.setData({
  991 + couponData:res.data[0]
  992 + })
  993 + }
  994 + })
  995 + },
  996 + // 根据券ID获取券详情
  997 + getActivityByIdFun(obj,setcoupon) {
  998 + App.Activity.GetActivityById({
  999 + id: obj.map(item => item.id).join(','),
  1000 + }).then(res => {
  1001 + if (res.data.length > 0) {
  1002 + // valid_forever 1永久 0非永久
  1003 + let list = res.data.filter(item => {
  1004 + let data = item.expiration_date ? util.determine(item.expiration_date) : {};
  1005 + let validForever = data.valid_forever === '1';
  1006 + let isValid = item.is_type === '3' ?
  1007 + (validForever || (data.valid_forever === '0' && this.data.dataStr < (data.etime * 1))) :
  1008 + (this.data.dataStr < (item.etime * 1));
  1009 +
  1010 + return isValid && item.is_open === '1';
  1011 + });
  1012 + list.forEach(detail => {
  1013 + detail.stringifyUse = detail.use ? JSON.stringify(detail.use) : '';
  1014 + detail.exp_date = detail.exp_date ? util.determine(detail.exp_date) : '';
  1015 + detail.arule = detail.arule ? util.determine(detail.arule) : '';
  1016 + detail.use = detail.use ? util.determine(detail.use) : '';
  1017 + detail.expiration_date = detail.expiration_date ? util.determine(detail.expiration_date) : '';
  1018 + detail.aexpiration = detail.aexpiration ? util.determine(detail.aexpiration) : '';
  1019 + if ((detail.use && (!detail.use.is_cash || detail.use.is_cash == '1'))) {
  1020 + let cash = detail.use.cash * 1;
  1021 + let price = detail.price * 1;
  1022 + detail.discount = cash != 0 ? ((price / cash) * 10).toFixed(1) : '';
  1023 + }
  1024 + let num = detail.grant_num*1-detail.grant_last*1;
  1025 + if (num > 0) {
  1026 + detail.receiveNumText = ''
  1027 + if (num >= 0 && num <= 100) {
  1028 + detail.receiveNumText = num.toString();
  1029 + } else if (num >= 101 && num <= 199) {
  1030 + detail.receiveNumText = '100+';
  1031 + } else if (num >= 200 && num <= 299) {
  1032 + detail.receiveNumText = '200+';
  1033 + } else {
  1034 + detail.receiveNumText = Math.floor(num / 100) * 100 + '+';
  1035 + }
  1036 + }
  1037 + if(num == 0){
  1038 + let str = detail.grant_num*1
  1039 + detail.receiveNumText = ''
  1040 + if (str >= 0 && str <= 100) {
  1041 + detail.receiveNumText = str.toString();
  1042 + } else if (str >= 101 && str <= 199) {
  1043 + detail.receiveNumText = '100+';
  1044 + } else if (str >= 200 && str <= 299) {
  1045 + detail.receiveNumText = '200+';
  1046 + } else {
  1047 + detail.receiveNumText = Math.floor(str / 100) * 100 + '+';
  1048 + }
  1049 + }
  1050 + if (detail.exp_date && detail.exp_date.week_data) {
  1051 + let mor = this.hasConsecutiveSelect(detail.exp_date.week_data, '1').rArr.join('、')
  1052 + let noon = this.hasConsecutiveSelect(detail.exp_date.week_data, '2').rArr.join('、')
  1053 + let nig = this.hasConsecutiveSelect(detail.exp_date.week_data, '3').rArr.join('、')
  1054 + if (mor) mor = '早餐:' + mor
  1055 + if (noon) noon = '午餐:' + noon
  1056 + if (nig) nig = '晚餐:' + nig
  1057 + detail.morText = mor;
  1058 + detail.noonText = noon;
  1059 + detail.nigText = nig;
  1060 + }
  1061 + })
  1062 + let freeCoupons = list.filter(item => {
  1063 + return item.is_type == '3'
  1064 + })
  1065 + let give = this.give_user;
  1066 + let couponShow = false;
  1067 + switch (give) {
  1068 + case '1':
  1069 + couponShow = this.data.options.hasSellerShare == '1' ? true : false;
  1070 + break;
  1071 + case '2':
  1072 + couponShow = true;
  1073 + break;
  1074 + case '3':
  1075 + couponShow = this.data.options.hasSellerShare != '1' ? true : false;
  1076 + break;
  1077 + }
  1078 + // 免费券判断是否领取,弹框领取
  1079 + if (freeCoupons.length > 0 && couponShow) {
  1080 + this.getCoupon(freeCoupons,obj,setcoupon)
  1081 + } else {
  1082 + if(setcoupon!='1'){
  1083 + this.setData({
  1084 + isFrame:'1',
  1085 + })
  1086 + }
  1087 + }
  1088 + console.log('邀请函--------------------优惠券', list);
  1089 + this.setData({
  1090 + coupon_dataList: list,
  1091 + })
  1092 + }
  1093 + })
  1094 + },
  1095 + // 获取所有的券并且展示
  1096 + addCoupons(coupons, couponList) {
  1097 + if (coupons && util.getType(coupons) == 'object') {
  1098 + couponList.push({
  1099 + id: coupon.id,
  1100 + number: coupon.number
  1101 + });
  1102 + }
  1103 + if (coupons && util.getType(coupons) === 'array' && coupons.length > 0) {
  1104 + coupons.forEach(item => {
  1105 + couponList.push({
  1106 + id: item.id,
  1107 + number: item.number
  1108 + });
  1109 + });
  1110 + }
  1111 + return couponList
  1112 + },
  1113 + // 弹框领取免费券
  1114 + setcouponFun(arr) {
  1115 + let str = arr.flatMap(item => Array(item.number).fill(item.id)).join(',');
  1116 + console.log('弹框领取免费券id', str);
  1117 + App.Activity.SetActivityAsReserve({
  1118 + aid: str,
  1119 + rid: this.id,
  1120 + }).then((json) => {
  1121 + if (json.ret != 200) {
  1122 + wx.showToast({
  1123 + title: json.msg,
  1124 + duration: 2000,
  1125 + mask: true
  1126 + })
  1127 + }
  1128 + })
  1129 + },
  1130 + // 免费券 0未领取 1已领取 获取未领取的组成数组couponArr
  1131 + getCoupon(arr,info,setcoupon) {
  1132 + let str = arr.flatMap(item => Array(item.number).fill(item.id)).join(',');
  1133 + App.Activity.ActivityListByOpenid({
  1134 + aid: str,
  1135 + sellerid:this.data.seller.sid,
  1136 + }).then(res => {
  1137 + if (res.ret == 200) {
  1138 + let couponArr = [];
  1139 + let totalPrice = 0;
  1140 + let coupon_dataList = this.data.coupon_dataList;
  1141 + let list = res.data;
  1142 + if(setcoupon!='1'){
  1143 + list.forEach(item=>{
  1144 + item.cdate = item.cdate * 1;
  1145 + item.useStime = '';
  1146 + item.useEtime = '';
  1147 + let condition = item.aexpiration ? util.determine(item.aexpiration) : '';
  1148 + if (condition.valid_forever === '0' && condition.stime && condition.etime) {
  1149 + item.useStime = util.unixtoTime(condition.stime, 'YYYY-MM-DD');
  1150 + item.useEtime = util.unixtoTime(condition.etime, 'YYYY-MM-DD');
  1151 + }
  1152 + if (condition.valid_forever === '1') {
  1153 + item.foreverText = '永久有效';
  1154 + }
  1155 + if (condition.valid_forever === '0' && condition.today) {
  1156 + let obj = this.setTimeRange(item.cdate, 0, parseInt(condition.today) - 1);
  1157 + item.useStime = obj.useStimeNum;
  1158 + item.useEtime = obj.useEtimeNum;
  1159 + }
  1160 + if (condition.valid_forever === '0' && condition.tomorrow) {
  1161 + let obj = this.setTimeRange(item.cdate, 1, condition.tomorrow * 1);
  1162 + item.useStime = obj.useStimeNum;
  1163 + item.useEtime = obj.useEtimeNum;
  1164 + }
  1165 + if (condition.valid_forever === '0' && condition.sday && condition.eday) {
  1166 + let obj = this.setTimeRange(item.cdate, parseInt(condition.sday) - 1, parseInt(condition.eday) - 1);
  1167 + item.useStime = obj.useStimeNum;
  1168 + item.useEtime = obj.useEtimeNum;
  1169 + }
  1170 + })
  1171 + list = list.filter(item => {
  1172 + let condition = item.aexpiration ? util.determine(item.aexpiration) : '';
  1173 + return (item.useEtime >= this.data.dataStr) || (item.foreverText == '永久有效') || (condition.valid_forever === '0' && condition.stime && condition.etime)
  1174 + });
  1175 + }
  1176 + list.sort((a, b) => b.cdate - a.cdate);
  1177 + list = list.reduce((accumulator, current) => {
  1178 + if (!accumulator.some(item => item.aid === current.aid)) {
  1179 + accumulator.push(current);
  1180 + }
  1181 + return accumulator;
  1182 + }, []);
  1183 + const strArray = str.split(',');
  1184 + const result = strArray.filter(num => {
  1185 + return!list.some(item => item.id === num);
  1186 + });
  1187 + console.log('待领取的券id',result);
  1188 + if(result.length>0){
  1189 + result.forEach(item=>{
  1190 + let match = arr.find(b => b.id === item);
  1191 + let obj = info.find(b => b.id === item);
  1192 + console.log('待领取的券详情',match);
  1193 + let record = {
  1194 + id:'',
  1195 + number:'',
  1196 + grant_last:'',
  1197 + price:'',
  1198 + desc:'',
  1199 + }
  1200 + if (obj) {
  1201 + record.number = obj.number;
  1202 + }
  1203 + if(match){
  1204 + record.grant_last = match.grant_last*1*1;
  1205 + record.id = match.id;
  1206 + record.desc = match.desc;
  1207 + record.price = match.price;
  1208 + }
  1209 + if (record.number > record.grant_last && record.grant_last > 0) {
  1210 + record.number = record.grant_last
  1211 + }
  1212 + // 只留下可领取数量大于0的
  1213 + if(record.grant_last > 0 && record.number){
  1214 + console.log('可领取的券',{...record});
  1215 + couponArr.push({
  1216 + ...record
  1217 + })
  1218 + }
  1219 + })
  1220 + if(couponArr.length>0 && setcoupon!='1'){
  1221 + totalPrice = couponArr.reduce((sum, item) => sum + item.price * item.number, 0);
  1222 + this.setcouponFun(couponArr)
  1223 + setTimeout(() => {
  1224 + this.setData({
  1225 + couponArr,
  1226 + totalPrice:parseFloat(totalPrice.toFixed(2)),
  1227 + })
  1228 + this.couponModal.showModal()
  1229 + }, 3000);
  1230 + }else {
  1231 + if(setcoupon!='1'){
  1232 + this.setData({
  1233 + isFrame:'1',
  1234 + })
  1235 + }
  1236 + }
  1237 + }else {
  1238 + if(setcoupon!='1'){
  1239 + this.setData({
  1240 + isFrame:'1',
  1241 + })
  1242 + }
  1243 + }
  1244 + list.forEach(item=>{
  1245 + let idx = coupon_dataList.findIndex(b => b.id === item.id);
  1246 + if (idx !== null && idx !== undefined && coupon_dataList[idx]) {
  1247 + const detail = coupon_dataList[idx];
  1248 + detail.resultCoupon = '1'; // 显示已领取
  1249 + detail.cdate = item.cdate * 1;
  1250 + detail.useStime = '';
  1251 + detail.useEtime = '';
  1252 + let condition = detail.aexpiration
  1253 + if (condition.valid_forever === '0' && condition.stime && condition.etime) {
  1254 + detail.useStime = util.unixtoTime(condition.stime, 'YYYY-MM-DD');
  1255 + detail.useEtime = util.unixtoTime(condition.etime, 'YYYY-MM-DD');
  1256 + }
  1257 + if (condition.valid_forever === '1') {
  1258 + detail.foreverText = '永久有效';
  1259 + }
  1260 + if (condition.valid_forever === '0' && condition.today) {
  1261 + let obj = this.setTimeRange(detail.cdate, 0, parseInt(condition.today) - 1);
  1262 + detail.useStime = obj.useStime;
  1263 + detail.useEtime = obj.useEtime;
  1264 + }
  1265 + if (condition.valid_forever === '0' && condition.tomorrow) {
  1266 + let obj = this.setTimeRange(detail.cdate, 1, condition.tomorrow * 1);
  1267 + detail.useStime = obj.useStime;
  1268 + detail.useEtime = obj.useEtime;
  1269 + }
  1270 + if (condition.valid_forever === '0' && condition.sday && condition.eday) {
  1271 + let obj = this.setTimeRange(detail.cdate, parseInt(condition.sday) - 1, parseInt(condition.eday) - 1);
  1272 + detail.useStime = obj.useStime;
  1273 + detail.useEtime = obj.useEtime;
  1274 + }
  1275 + }
  1276 + })
  1277 + console.log('未领取的券列表-----------', couponArr);
  1278 + this.setData({
  1279 + coupon_dataList,
  1280 + })
  1281 + }
  1282 + })
  1283 + },
  1284 + // 计算免费券有效期的起始、结束日期
  1285 + setTimeRange(cdate, startOffset, endOffset) {
  1286 + const startDate = new Date((cdate + startOffset * 86400) * 1000);
  1287 + startDate.setHours(0, 0, 0, 0);
  1288 + const useStime = util.unixtoTime(startDate.getTime() / 1000, 'YYYY-MM-DD');
  1289 + const endDate = new Date((cdate + endOffset * 86400) * 1000);
  1290 + endDate.setHours(23, 59, 59, 0);
  1291 + const useEtime = util.unixtoTime(endDate.getTime() / 1000, 'YYYY-MM-DD');
  1292 + let useEtimeNum = endDate.getTime() / 1000;
  1293 + return { useStime, useEtime,useEtimeNum };
  1294 + },
  1295 + // 处理优惠券不可用日期数据
  1296 + hasConsecutiveSelect(arr, type) {
  1297 + let firstTitle = null;
  1298 + let lastTitle = null;
  1299 + let rArr = []
  1300 + let num = 0
  1301 + for (let i = 0; i < arr.length; i++) {
  1302 + let str = type == '1' ? arr[i].selectMor : type == '2' ? arr[i].selectNoon : type == '3' ? arr[i].selectNig : '';
  1303 + if (str) {
  1304 + rArr.push(arr[i].title)
  1305 + num++
  1306 + if (num == 1) {
  1307 + firstTitle = arr[i].title
  1308 + }
  1309 + if (num >= 5) {
  1310 + lastTitle = arr[i].title
  1311 + }
  1312 + if (num >= 5 && i >= (arr.length - 1)) {
  1313 + let fi = rArr.findIndex((item) => {
  1314 + return item == firstTitle
  1315 + })
  1316 + rArr.splice(fi, num, firstTitle + '至' + lastTitle)
  1317 + num = 0
  1318 + }
  1319 + } else {
  1320 + if (num < 5) {
  1321 + num = 0
  1322 + firstTitle = null;
  1323 + lastTitle = null;
  1324 + } else {
  1325 + let fi = rArr.findIndex((item) => {
  1326 + return item == firstTitle
  1327 + })
  1328 + rArr.splice(fi, num, firstTitle + '至' + lastTitle)
  1329 + num = 0
  1330 + }
  1331 + }
  1332 + }
  1333 + return {
  1334 + rArr,
  1335 + lastTitle,
  1336 + firstTitle
  1337 + };
  1338 + },
  1339 + /**
  1340 + * 生命周期函数--监听页面隐藏
  1341 + */
  1342 + onHide() {
  1343 + clearInterval(this.timers)
  1344 + if (this.audioCtx) {
  1345 + this.audioCtx.destroy(); // 释放音频资源
  1346 + }
  1347 + },
  1348 +
  1349 + /**
  1350 + * 生命周期函数--监听页面卸载
  1351 + */
  1352 + onUnload() {
  1353 + clearInterval(this.timers)
  1354 + if (this.audioCtx) {
  1355 + this.audioCtx.destroy(); // 释放音频资源
  1356 + }
  1357 + },
  1358 + // 设置虚拟到店时间
  1359 + bindPickerChange: function(e) {
  1360 + let index = e.detail.value
  1361 + let temp_ddate = this.data.timeList[index]
  1362 + this.setData({
  1363 + temp_ddate
  1364 + })
  1365 + let detailInfo = this.data.detail;
  1366 + const reserveDate = new Date(detailInfo.ddate*1000);
  1367 + let reserveTime =
  1368 + reserveDate.getFullYear() +
  1369 + "-" +
  1370 + (reserveDate.getMonth() + 1) +
  1371 + "-" +
  1372 + reserveDate.getDate();
  1373 + let times = this.getNewDate(reserveTime + " " + temp_ddate).getTime() / 1000
  1374 + App.Reserve.SetReserveTempDdate({
  1375 + rid:this.id,
  1376 + temp_ddate:times,
  1377 + }).then(res => {
  1378 + if (res.ret == 200) {
  1379 + let lite_style = this.data.lite_style
  1380 + lite_style = lite_style || '3';
  1381 + let style =lite_style.split('-');
  1382 + let type1 =style[0];
  1383 + let type2 =style[1];
  1384 + if((type1=='2' && !type2) || (type2 && (type2 == '1' || type2 == '3') || (type1=='4' && !type2))){
  1385 + let time = temp_ddate || this.data.timeList[index]
  1386 + this.painterBtn(
  1387 + lite_style,
  1388 + time
  1389 + );
  1390 + }
  1391 + }
  1392 + })
  1393 + },
  1394 + // ios 部分机型不兼容new Date() 转换字符串
  1395 + getNewDate(data) {
  1396 + if(typeof data === 'string') {
  1397 + let arr = data.split(/[- : \/]/)
  1398 + if(arr[1] !== undefined || arr[1] !== null){
  1399 + arr[1] = arr[1] - 1
  1400 + }
  1401 + return new Date(...arr)
  1402 + }
  1403 + return new Date(data || new Date())
  1404 + },
  1405 + // 点击关闭领券弹框后,出现图片缩小到商家有礼的位置消失动画
  1406 + startAnimation() {
  1407 + const animation = wx.createAnimation({
  1408 + duration: 800,
  1409 + timingFunction: 'ease',
  1410 + });
  1411 + animation.translateY('-60%')
  1412 + .translateX('34%')
  1413 + .scale(0)
  1414 + .step();
  1415 + this.setData({
  1416 + animationData: animation.export(),
  1417 + });
  1418 + setTimeout(() => {
  1419 + this.startSecondAnimation();
  1420 + }, 800);
  1421 + },
  1422 + // 出现商家有礼图标,并且晃动2下
  1423 + startSecondAnimation() {
  1424 + const animation = wx.createAnimation({
  1425 + duration: 200,
  1426 + timingFunction: 'ease'
  1427 + });
  1428 + animation.scale(1).step()
  1429 + .rotate(-15).step()
  1430 + .rotate(15).step()
  1431 + .rotate(-15).step()
  1432 + .rotate(15).step()
  1433 + .rotate(0).step();
  1434 + this.setData({
  1435 + animationData2: animation.export()
  1436 + });
  1437 + },
  1438 + //根据起始时间(获取时间时间段)
  1439 + computeHour (time1, time2, interval) {
  1440 + //time1 开始时间 time2结束时间 interval间隔时长
  1441 + function getTimeList (time1, time2, interval) {
  1442 + var timeList = [];
  1443 + time1 = time1.split(":");
  1444 + time2 = time2.split(":");
  1445 + time1 = new Date(0, 0, 0, time1[0], time1[1], 0);
  1446 + time2 = new Date(0, 0, 0, time2[0], time2[1], 0);
  1447 + interval = interval * 60 * 1000;
  1448 + while (time1 <= time2) {
  1449 + timeList.push(time1.format("hh:mm"));
  1450 + time1 = new Date(time1.getTime() + interval);
  1451 + }
  1452 + return timeList;
  1453 + }
  1454 + Date.prototype.format = function (format) {
  1455 + var date = {
  1456 + "M+": this.getMonth() + 1,
  1457 + "d+": this.getDate(),
  1458 + "h+": this.getHours(),
  1459 + "m+": this.getMinutes(),
  1460 + "s+": this.getSeconds(),
  1461 + "q+": Math.floor((this.getMonth() + 3) / 3),
  1462 + S: this.getMilliseconds(),
  1463 + };
  1464 + if (/(y+)/.test(format))
  1465 + format = format.replace(
  1466 + RegExp.$1,
  1467 + (this.getFullYear() + "").substr(4 - RegExp.$1.length)
  1468 + );
  1469 + for (var k in date)
  1470 + if (new RegExp("(" + k + ")").test(format))
  1471 + format = format.replace(
  1472 + RegExp.$1,
  1473 + RegExp.$1.length == 1
  1474 + ? date[k]
  1475 + : ("00" + date[k]).substr(("" + date[k]).length)
  1476 + );
  1477 + return format;
  1478 + };
  1479 + return getTimeList(time1, time2, interval);
  1480 + },
  1481 +
  1482 + /**
  1483 + * 页面相关事件处理函数--监听用户下拉动作
  1484 + */
  1485 + onPullDownRefresh() {
  1486 +
  1487 + },
  1488 +
  1489 + /**
  1490 + * 页面上拉触底事件的处理函数
  1491 + */
  1492 + onReachBottom() {
  1493 +
  1494 + },
  1495 +})
  1 +{
  2 + "navigationStyle": "custom",
  3 + "navigationBarTextStyle": "white",
  4 + "usingComponents": {
  5 + "nav": "/components/nav/nav",
  6 + "painter":"/components/painter/painter",
  7 + "titleStyle":"/components/titleStyle/titleStyle",
  8 + "my-modal": "/components/modal/modal",
  9 + "scroll-number": "/components/scroll-number/index",
  10 + "subscribe": "/components/userinfo/subscribe"
  11 + }
  12 + }
  1 +<!--pack-invitation/pages/detail_owner_invitation13.wxml-->
  2 +<import src="../../pages/tpl/invitation"></import>
  3 +<nav hasHome id='nav' backgroundColor="{{show_white ? colors : 'transparent'}}" place="{{false}}"></nav>
  4 +<scroll-view scroll-y class="viewBox viewBox11">
  5 + <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}}" />
  6 + <image class="giftImg {{(hasValueCertificate && marketing && coupon_dataList.length>0) && isFrame == '0' ? 'giftImg1' : '' }}"
  7 + bindtap="gotoSellerGift"
  8 + data-form="1"
  9 + animation="{{animationData2}}"
  10 + wx:if="{{(hasValueCertificate && marketing && coupon_dataList.length>0) || (is_comments=='1' && !is_user_comments && marketing.is_comments_coupon=='1' && couponData && couponData.showCoupon =='1') || (hasValueRecharge && marketing && marketing.is_recharge=='1' && recharge_data)}}"
  11 + src="https://nosqn.colorcun.com/sellerGiftTwo.png" mode=""/>
  12 + <view class="fullscreenMask" animation="{{animationData}}" wx:if="{{isShow=='1'}}">
  13 + <image src="https://qn.colorcun.com/getCouponIcon2.png" mode=""/>
  14 + </view>
  15 + <view class="targetPoint" style="top: 35%; right: 4%;"></view>
  16 + <image wx:if="{{detail && detail.status =='4'}}" class="cannotImg" src="https://qn.colorcun.com/cancelImg.png" />
  17 + <image wx:if="{{options && options.isOrder == '1' && detail.status !='4'}}" class="cannotImg" src="https://qn.colorcun.com/overImg.png" />
  18 + <view class="reservationInfo" style="background: url('{{settingUrl}}') no-repeat;background-size:cover;">
  19 + <view class="infoTop">
  20 + <view class="infoTopName">
  21 + <text space="nbsp" class="font28r" wx:if="{{reserve && reserve.swich_slogan == '1' && home && home.slogan}}">{{home.slogan}}</text>
  22 + <text space="nbsp" class="name">{{seller.name||reserve.seller_name}}</text>
  23 + </view>
  24 + <view class="imgBox">
  25 + <image class="inviteImg" src="{{inviteImgUrl}}" mode="aspectFill" />
  26 + </view>
  27 + </view>
  28 + <view class="bookInfo">
  29 + <view class="infoItem infoItemOne">
  30 + <text space="nbsp" wx:if="{{reserve && reserve.swich_booking=='1' && reserve.book_info}}" class="contentData font28r bookData">{{reserve.book_info}}</text>
  31 + </view>
  32 + <view class="infoItem" wx:if="{{seller.date}}">
  33 + <view class="label font28r">上课日期:</view>
  34 + <view class="contentData font36r">{{seller.date}}</view>
  35 + </view>
  36 + <view class="infoItem" wx:if="{{seller.soltName}}">
  37 + <view class="label font28r">上课时间:</view>
  38 + <view class="arrivalBox">
  39 + <view class="contentData font36r"><text class="font36r">{{temp_ddate}}</text></view>
  40 + <picker wx:if="{{detail && options && options.isOrder != '1' && (detail.status =='1' || detail.status =='2') && options.hasSellerShare == '1'}}" bindchange="bindPickerChange" value="{{index}}" range="{{timeList}}">
  41 + <view class="picker">
  42 + <button>修改到店时间</button>
  43 + </view>
  44 + </picker>
  45 + </view>
  46 + </view>
  47 + <view class="infoItem" wx:if="{{seller.tablesText}}">
  48 + <view class="label font28r">授课老师:</view>
  49 + <view class="contentData font36r">{{seller.tablesText}}</view>
  50 + </view>
  51 + <view wx:if="{{roomimage && roomimage.length>0}}" class="{{roomimage.length=='1'?'pageSpacing':'pageSpacing1'}}">
  52 + <view wx:for="{{roomimage}}" class="imgs" wx:key="index" bindtap="lookroom" data-item="{{item}}">
  53 + <image class="imageStyle" mode="aspectFill" src="{{item.url}}"></image>
  54 + <text>{{item.name}}</text>
  55 + </view>
  56 + </view>
  57 + <text space="nbsp" class="welcomeMsg font28r" wx:if="{{reserve && reserve.swich_welcome == '1' && marketing && marketing.wecomle}}">
  58 + {{marketing.wecomle}}
  59 + </text>
  60 + </view>
  61 + <view wx:if="{{titleType == '1'}}" class="separatrixOne">
  62 + <block wx:for="{{num1}}" wx:key="index"><text class="text{{item}}"></text></block>
  63 + <text class="text9"></text>
  64 + <block wx:for="{{num2}}" wx:key="index"><text class="text{{item}}"></text></block>
  65 + </view>
  66 + <view class="centerBox">
  67 + <view class="positioning">
  68 + <view class="positioningName">
  69 + <view class="mapBox">
  70 + <text class="font24r telBox">地址:</text>
  71 + <text space="nbsp" class="font24r positioningText">{{seller.addr || reserve.seller.map_address}}</text>
  72 + </view>
  73 + <button wx:if="{{seller.addr || reserve.seller.map_address}}" bindtap="looklocation" class="flex-cc font24r mapBtn">导航到店</button>
  74 + </view>
  75 + <text class="font24r telBox" wx:if="{{swich_phone!='0' && seller && seller.tel && seller.tel.length>0}}">热线:<block wx:for="{{seller.tel}}" wx:key="index"><text data-phone="{{item}}" bindtap="call">{{item}}</text>{{index==(seller.tel.length-1)?'':','}}</block></text>
  76 + </view>
  77 + <block wx:if="{{staffinfo && reserve.swich_manager=='1'}}">
  78 + <view class="handleInfo">
  79 + <image wx:if="{{staffinfo && staffinfo.photo}}" bindtap="lookImgs" data-url="{{staffinfo.photo}}" src="{{staffinfo.photo}}" class="headerimg" mode="aspectFill"></image>
  80 + <view class="handle handlePhone">
  81 + <view class="handleName">专属服务:{{staffinfo.name}}</view>
  82 + <view class="handleBlower">服务电话:{{staffinfo.phone}}</view>
  83 + </view>
  84 + <view class="handle">
  85 + <view wx:if="{{staffinfo.wechat}}" class="font22r brownFont" bindtap="copyWeChat">复制微信</view>
  86 + <view wx:if="{{staffinfo.phone}}" data-phone="{{staffinfo.phone}}" class="font22r brownFont" bindtap="call">拨打电话</view>
  87 + </view>
  88 + </view>
  89 + </block>
  90 + </view>
  91 + </view>
  92 + <view class="preferentialCoupon" wx:if="{{hasValueCertificate && marketing && coupon_dataList.length>0}}">
  93 + <block wx:for="{{coupon_dataList}}" wx:key="index" wx:for-index="index">
  94 + <navigator wx:if="{{item.resultCoupon == '1' || item.is_type != '3'}}" url="/pack-activity/pack/receiveCoupon?id={{item.id}}&sid={{seller.sid}}&oid={{detail.id}}&types=1&StyleType={{StyleType}}&types=1&StyleType={{StyleType}}" hover-class="navigator-hover">
  95 + <view class="preferentialItems">
  96 + <view class="itemLeft">
  97 + <text wx:if="{{item.discount!='0.00' && (item.use.is_cash=='1' || item.use.is_cash) && item.discount}}" class="discountText font24r">{{item.discount}}折</text>
  98 + <view class="discountText1 font20r {{item.arule.is_accumulation == '1'?'discountText2':'discountText3'}}" wx:if="{{item.is_type == '3'}}">{{item.arule.is_accumulation == '1' ? '可' : '不可'}}叠加</view>
  99 + <view class="priceText" wx:if="{{item.price}}">
  100 + <view class="icons font24r">¥</view><text class="font48r">{{item.price}}</text>
  101 + </view>
  102 + <view class="icons font20r" wx:if="{{item.is_type == '3' && item.desc!='0'}}">消费满{{item.desc}}元可用</view>
  103 + </view>
  104 + <view class="couponLine"></view>
  105 + <view class="itemRight">
  106 + <view class="btns">
  107 + <text class="font32r anameText">{{item.aname}}</text>
  108 + <block wx:if="{{item.is_type == '1' || item.is_type == '2'}}">
  109 + <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>
  110 + <view wx:if="{{item.exp_date.is_none=='1' || item.exp_date.is_none===true}}" class="bottom font24r">
  111 + 无限制{{item.desc?','+item.desc+'。':'。'}}
  112 + </view>
  113 + <view wx:if="{{item.exp_date.is_birthday=='1' || item.exp_date.is_birthday===true}}" class="bottom font24r">
  114 + 会员生日当天可用{{item.desc?','+item.desc+'。':'。'}}
  115 + </view>
  116 + </block>
  117 + <block wx:if="{{item.is_type == '3' || item.is_type == '4'}}">
  118 + <view wx:if="{{(item.useStime && item.useEtime) || item.foreverText}}" class="bottom font24r">有效期:{{item.foreverText?item.foreverText : ''}}</view>
  119 + <view wx:if="{{item.useStime && item.useEtime}}" class="bottom font24r nodate">{{item.useStime}} 至 {{item.useEtime}}</view>
  120 + <view wx:if="{{item.morText || item.noonText || item.noonText}}" class="bottom font24r">不可用日期:</view>
  121 + <view wx:if="{{item.morText}}" class="bottom font24r nodate">{{item.morText}}</view>
  122 + <view wx:if="{{item.noonText}}" class="bottom font24r nodate">{{item.noonText}}</view>
  123 + <view wx:if="{{item.nigText}}" class="bottom font24r nodate">{{item.nigText}}</view>
  124 + <view wx:if="{{item.exp_date.week_show=='无'}}" class="bottom font24r">无使用时间限制</view>
  125 + <view wx:if="{{item.is_type == '4' && item.desc!='0'}}" class="bottom font24r">消费满{{item.desc}}元可用</view>
  126 + </block>
  127 + </view>
  128 + <view class="btnBox" wx:if="{{item.is_type == '3'}}" >
  129 + <view class="font24r orderingFood orderingFood1">已领取</view>
  130 + <view class="grantNum" wx:if="{{item.receiveNumText}}">
  131 + <view class="font24r">已被领取</view>
  132 + <view class="font24r"><text>{{item.receiveNumText}}</text>张</view>
  133 + </view>
  134 + </view>
  135 + <view wx:if="{{item.is_type != '3'}}" class="font24r orderingFood">
  136 + 立即抢购
  137 + </view>
  138 + </view>
  139 + </view>
  140 + </navigator>
  141 + </block>
  142 + </view>
  143 + <view wx:if="{{is_comments=='1' && !is_user_comments}}" class="evaluateBox" bindtap="evaluateFun">
  144 + <text wx:if="{{is_comments=='1' && (marketing.is_comments_coupon!='1' || couponData.showCoupon!='1')}}">想<text class="font36r">吐槽</text>?戳这里填写意见!--></text>
  145 + <text wx:if="{{marketing.is_comments_coupon=='1' && couponData && couponData.showCoupon =='1'}}">想<text class="font36r">吐槽</text>?戳这里填写意见反馈赢好礼!</text>
  146 + <image src="https://nosqn.colorcun.com/evaluate2.png" mode="" />
  147 + </view>
  148 + <view class="reserveBox" wx:if="{{reserveData && (reserveData.title || reserveData.content)}}">
  149 + <view class="title font40r" wx:if="{{reserveData.title}}">{{reserveData.title}}</view>
  150 + <block wx:for="{{reserveData.content}}" wx:key="index">
  151 + <image class="items" wx:if="{{item.type =='1'}}" src="{{item.content}}" bindtap="lookImgs" data-url="{{item.content}}" mode="widthFix"/>
  152 + <text space="nbsp" class="items font32r" wx:if="{{item.type == '2'}}">{{item.content}}</text>
  153 + </block>
  154 + </view>
  155 + <!-- 餐厅介绍 -->
  156 + <block wx:if="{{marketing.logo || home.image || ((store.introduce && (!store.is_introduce || store.is_introduce!='0')) || (store.images.length>0 && (!store.is_images || store.is_images!='0')) || (store.content && store.content.length>0))}}">
  157 + <view class="introduce" wx:if="{{store}}">
  158 + <titleStyle wx:if="{{titleType}}" titleStyleType="{{titleType}}" titleText="{{store.title ? store.title : '餐厅介绍'}}"></titleStyle>
  159 + <image wx:if="{{marketing.logo}}" src="{{marketing.logo}}" bindtap="lookImgs" data-url="{{marketing.logo}}" mode="widthFix" />
  160 + <image wx:if="{{home.image}}" src="{{home.image}}" bindtap="lookImgs" data-url="{{home.image}}" class="homeImage" mode="widthFix"></image>
  161 + <view class="labelBox" wx:if="{{!store.content && store.introduce && (!store.is_introduce || store.is_introduce!='0')}}">
  162 + <text space="nbsp" class="texts font32r">{{store.introduce}}</text>
  163 + </view>
  164 + <block wx:if="{{store.images.length>0 && (!store.is_images || store.is_images!='0')}}">
  165 + <block wx:for="{{store.images}}" wx:key="arryIndex" wx:for-index="arryIndex">
  166 + <image src="{{item}}" bindtap="lookImgs" data-url="{{item}}" data-imgs="{{store.images}}" mode="widthFix" />
  167 + </block>
  168 + </block>
  169 + <view class="labelBox" wx:if="{{store.content && store.content.length>0}}">
  170 + <block wx:for="{{store.content}}">
  171 + <image wx:if="{{item.type == '1'}}" bindtap="lookImgs" src="{{item.content}}" data-url="{{item.content}}" mode="widthFix" />
  172 + <text wx:if="{{item.type == '2'}}" space="nbsp" class="texts font32r">{{item.content}}</text>
  173 + <view wx:if="{{item.type == '3'}}" class="videoBox">
  174 + <video
  175 + object-fit="contain"
  176 + autoplay="{{true}}"
  177 + loop="{{true}}"
  178 + muted="{{true}}"
  179 + show-mute-btn="{{true}}"
  180 + vslide-gesture-in-fullscreen="{{true}}"
  181 + src="{{item.content}}"
  182 + ></video>
  183 + </view>
  184 + </block>
  185 + </view>
  186 + </view>
  187 + </block>
  188 + <!-- 主厨介绍 -->
  189 + <block wx:if="{{chef && ((chef.introduce && (!chef.is_introduce || chef.is_introduce!='0')) || (chef.image && (!chef.is_images || chef.is_images!='0')) || (chef.content && chef.content.length>0))}}">
  190 + <view class="introduce">
  191 + <view wx:if="{{titleType}}" class="chefText font36r">
  192 + <titleStyle titleStyleType="{{titleType}}" titleText="{{chef.title ? chef.title : '主厨介绍'}}"></titleStyle>
  193 + </view>
  194 + <view class="labelBox" wx:if="{{(chef.introduce && (!chef.is_introduce || chef.is_introduce!='0'))}}">
  195 + <text class="texts" space="nbsp">{{chef.introduce}}</text>
  196 + </view>
  197 + <image wx:if="{{(!chef.is_images || chef.is_images!='0') && chef.image}}" src="{{chef.image}}" bindtap="lookImgs" data-url="{{chef.image}}" mode="widthFix" />
  198 + <view class="labelBox" wx:if="{{chef.content && chef.content.length>0}}">
  199 + <block wx:for="{{chef.content}}">
  200 + <image wx:if="{{item.type == '1'}}" bindtap="lookImgs" src="{{item.content}}" data-url="{{item.content}}" mode="widthFix" />
  201 + <text wx:if="{{item.type == '2'}}" space="nbsp" class="texts font32r">{{item.content}}</text>
  202 + <view wx:if="{{item.type == '3'}}" class="videoBox">
  203 + <video
  204 + object-fit="contain"
  205 + autoplay="{{true}}"
  206 + loop="{{true}}"
  207 + muted="{{true}}"
  208 + show-mute-btn="{{true}}"
  209 + vslide-gesture-in-fullscreen="{{true}}"
  210 + src="{{item.content}}"
  211 + ></video>
  212 + </view>
  213 + </block>
  214 + </view>
  215 + </view>
  216 + </block>
  217 + <!-- 特色菜品 -->
  218 + <view class="introduce" wx:if="{{signboard && ((signboard.swich=='1' && signboard.images && signboard.images.length>0) || (signboard.content && signboard.content.length>0))}}">
  219 + <block wx:if="{{titleType}}">
  220 + <titleStyle titleStyleType="{{titleType}}" titleText="{{signboard.title ? signboard.title : '特色菜品'}}"></titleStyle>
  221 + </block>
  222 + <block wx:for="{{signboard.images}}" wx:key="arryIndex" wx:for-index="arryIndex">
  223 + <image src="{{item}}" bindtap="lookImgs" data-url="{{item}}" data-imgs="{{signboard.images}}" mode="widthFix" />
  224 + </block>
  225 + <view class="labelBox" wx:if="{{signboard.content && signboard.content.length>0}}">
  226 + <block wx:for="{{signboard.content}}">
  227 + <image wx:if="{{item.type == '1'}}" bindtap="lookImgs" src="{{item.content}}" data-url="{{item.content}}" mode="widthFix" />
  228 + <text wx:if="{{item.type == '2'}}" space="nbsp" class="texts font32r">{{item.content}}</text>
  229 + <view wx:if="{{item.type == '3'}}" class="videoBox">
  230 + <video
  231 + object-fit="contain"
  232 + autoplay="{{true}}"
  233 + loop="{{true}}"
  234 + muted="{{true}}"
  235 + show-mute-btn="{{true}}"
  236 + vslide-gesture-in-fullscreen="{{true}}"
  237 + src="{{item.content}}"
  238 + ></video>
  239 + </view>
  240 + </block>
  241 + </view>
  242 + </view>
  243 + <!-- 停车指引 -->
  244 + <view class="introduce" wx:if="{{reserve && (reserve.is_introduce_all=='1' && (reserve.park_info || reserve.park_info_images) || (reserve.content && reserve.content.length>0))}}">
  245 + <block wx:if="{{titleType}}">
  246 + <titleStyle titleStyleType="{{titleType}}" titleText="{{reserve.title ? reserve.title : '停车指引'}}"></titleStyle>
  247 + </block>
  248 + <block wx:if="{{!reserve.content || reserve.content.length == '0'}}">
  249 + <view class="labelBox" wx:if="{{reserve.park_info}}">
  250 + <text class="texts" space="nbsp">{{reserve.park_info}}</text>
  251 + </view>
  252 + <block wx:for="{{reserve.park_info_images}}" wx:key="arryIndex" wx:for-index="arryIndex">
  253 + <image src="{{item}}" bindtap="lookImgs" data-url="{{item}}" data-imgs="{{reserve.park_info_images}}" mode="widthFix" />
  254 + </block>
  255 + </block>
  256 + <view class="labelBox" wx:if="{{reserve.content && reserve.content.length>0}}">
  257 + <block wx:for="{{reserve.content}}">
  258 + <image wx:if="{{item.type == '1'}}" bindtap="lookImgs" src="{{item.content}}" data-url="{{item.content}}" mode="widthFix" />
  259 + <text wx:if="{{item.type == '2'}}" space="nbsp" class="texts font32r">{{item.content}}</text>
  260 + <view wx:if="{{item.type == '3'}}" class="videoBox">
  261 + <video
  262 + object-fit="contain"
  263 + autoplay="{{true}}"
  264 + loop="{{true}}"
  265 + muted="{{true}}"
  266 + show-mute-btn="{{true}}"
  267 + vslide-gesture-in-fullscreen="{{true}}"
  268 + src="{{item.content}}"
  269 + ></video>
  270 + </view>
  271 + </block>
  272 + </view>
  273 + </view>
  274 + <view class="introduce" wx:if="{{detail.status !='4' && options.isOrder != '1' && hasValueOrder && detail && detail.seller.is_open_order==1 && marketing && marketing.is_order=='1'}}">
  275 + <block wx:if="{{titleType}}">
  276 + <titleStyle titleStyleType="{{titleType}}" titleText="提前点餐"></titleStyle>
  277 + </block>
  278 + <view class="endStyle">
  279 + <view class="news font32r">
  280 + 现在提前点菜下单,到店时无需等待服务员点餐,直接享受就餐服务^_^
  281 + </view>
  282 + <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;">
  283 + 去点餐
  284 + </view>
  285 + </view>
  286 + </view>
  287 + <view class="introduce rechargeBox {{(marketing.is_online_book=='1' && options.onlineReserve == '1') || (detail.status !='4' && options.isOrder != '1' && paymentId && paymentStatus == '0') || (detail.status !='4' && options.isOrder != '1' && marketing.is_transpond=='1' && imgSrc)?'introduceBottom':''}}">
  288 + <block wx:if="{{hasValueRecharge && marketing && marketing.is_recharge=='1' && recharge_data}}">
  289 + <block wx:if="{{titleType}}">
  290 + <titleStyle titleStyleType="{{titleType}}" titleText="会员招募"></titleStyle>
  291 + </block>
  292 + <navigator wx:if="{{recharge_data.id}}" 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">
  293 + <view class="preferentialItems rechargeItems">
  294 + <view class="itemLeft">
  295 + <view class="itemTop font36r">
  296 + {{recharge_data.rname}}
  297 + </view>
  298 + <view class="itemBottom font24r" wx:if="{{priceInfo}}">
  299 + {{priceInfo}}{{(recharge_data.recharge_list.is_coupons=='0' && recharge_data.recharge_list.is_score=='0')?'。':';'}}
  300 + </view>
  301 + <view class="bottom font24r" wx:if="{{scoreInfo}}">
  302 + {{scoreInfo}}{{recharge_data.recharge_list.is_coupons=='0'?'。':';'}}
  303 + </view>
  304 + <view class="bottom font24r" wx:if="{{recharge_data.recharge_list.is_coupons=='1'}}">
  305 + {{recharge_data.recharge_list.is_coupons=='1'?'会员充值满'+recharge_data.recharge_money+'元赠送'+certificate:''}}。
  306 + </view>
  307 + </view>
  308 + <view class="font24r orderingFood">
  309 + 抢购
  310 + </view>
  311 + </view>
  312 + </navigator>
  313 + </block>
  314 + <view class="vips">
  315 + <view wx:if="{{hasValueRecharge && marketing.is_link=='1'}}" class="font24r favouredPolicy" bindtap="gotoFavourableList">
  316 + 点击了解更多会员优惠政策
  317 + </view>
  318 + <view class="businessBox">
  319 + 周到安排提供技术支持<text bindtap="call" data-phone="4000009690">4000009690</text>,
  320 + <view bindtap="gotoJoinSeller" style="text-decoration: underline;">我是商家,我要试用</view>
  321 + </view>
  322 + </view>
  323 + </view>
  324 + <view class="{{(!marketing || (marketing.is_transpond!='1' && marketing.is_online_book!='1'))?'more more1':'more'}}" wx:if="{{showMoreTip}}">
  325 + <view class="moreText">滑动查看更多</view>
  326 + <image src="https://qn.colorcun.com/jt1.png" mode="" />
  327 + </view>
  328 + <view class="toastBox" wx:if="{{toastBool}}">
  329 + {{toastText}}
  330 + </view>
  331 +</scroll-view>
  332 +<!-- (开启在线预订 显示在线预订) || (未开启在线预订 显示再次预订(打商家电话)) -->
  333 +<!-- (未结束&&未取消 && 开启转发开关 显示 转发邀请函给客人) || (过了当前餐段结束时间||用餐完成||已取消 显示 转发店铺给好友) -->
  334 +<view wx:if="{{isMoreBtn || options.isOrder == '1' || (!isMoreBtn && seller.phone) || (detail.status !='4' && isPaymenBtn) || (detail.status !='4' && isShareItem)}}" class="flex-lr sharewidth">
  335 + <view wx:if="{{isMoreBtn}}" class="flex-cc font30r moreBtn {{((detail.status !='4' && isPaymenBtn) && ((detail.status !='4' && isShareItem) || options.isOrder == '1')) ? 'threeBtn' : ''}}" bindtap="secondbook">再次预订</view>
  336 + <view wx:if="{{!isMoreBtn && seller.phone}}" class="flex-cc font30r moreBtn {{((detail.status !='4' && isPaymenBtn) && ((detail.status !='4' && isShareItem) || options.isOrder == '1')) ? 'threeBtn' : ''}}" bindtap="call" data-phone="{{seller.phone}}">再次预订</view>
  337 + <view wx:if="{{detail.status !='4' && isPaymenBtn}}" class="flex-cc font30r paymenBtn {{((isMoreBtn || (!isMoreBtn && seller.phone)) && ((detail.status !='4' && isShareItem) || options.isOrder == '1')) ? 'threeBtn' : ''}}" bindtap="paymentFun">支付定金</view>
  338 + <button wx:if="{{detail.status !='4' && isShareItem}}" class="flex-cc font30r shareItem" open-type="share">转发邀请函给客人</button>
  339 + <button wx:if="{{options.isOrder == '1'}}" class="flex-cc font30r shareItem" data-type="2" open-type="share">转发店铺给好友</button>
  340 +</view>
  341 +<painter palette="{{wxml}}" style="position: absolute; top: -9999rpx;" bind:imgOK="onImgOK" />
  342 +<my-modal id="payModal" fadeStyle="slideUp" height="240px">
  343 + <view slot="modalName" class="titleModal">提示</view>
  344 + <view slot="modalContent">
  345 + <view class="explain">
  346 + 检测到您正在截屏,建议直接把邀请函转发给朋友更有仪式感哦!
  347 + </view>
  348 + <view class="screenshotBtns">
  349 + <button class="font32r btnsLeft" bindtap="closeModal">关闭弹窗</button>
  350 + <button wx:if="{{detail.status !='4' && options.isOrder != '1' && marketing.is_transpond=='1' && imgSrc}}" class="flex-cc font30r btnsRight" open-type="share">立即转发</button>
  351 + </view>
  352 + </view>
  353 +</my-modal>
  354 +<my-modal id="couponModal" fadeStyle="slideUp" height="240px">
  355 + <view slot="modalName">
  356 + <image bindtap="closeCouponModal" class="closeImg" src="https://qn.colorcun.com/closeOutline2.png" mode=""/>
  357 + </view>
  358 + <view slot="modalContent">
  359 + <view class="titleModal">
  360 + <view class="nameInfo font28r">{{seller.name||reserve.seller_name}}</view>
  361 + <view class="couponTotal font28r" wx:if="{{totalPrice}}">
  362 + 赠送给您代金券
  363 + <view class="counterText">
  364 + <view class="font36r">¥</view><scroll-number value="{{totalPrice}}"></scroll-number>
  365 + </view>
  366 + </view>
  367 + </view>
  368 + <view class="couponWrap">
  369 + <view class="couponInfo font48r">
  370 + <text class="font48r">到店微信扫码</text>
  371 + <text class="font48r">自动识别</text>
  372 + </view>
  373 + <subscribe ids="{{[2]}}" bindtap="closeCouponModal">
  374 + <view class="couponBtn font28r">我知道了</view>
  375 + </subscribe>
  376 + <view class="couponText font24r" bindtap="gotoSellerGift" data-form="2">查看更多</view>
  377 + </view>
  378 + </view>
  379 +</my-modal>
  1 +/* pack-invitation/pages/detail_owner_invitation13.wxss */
  2 +@import "../../pages/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 + padding-bottom: 20rpx;
  14 + position: relative;
  15 + color: #FFEFC5;
  16 + padding-top: 160rpx;
  17 +}
  18 +
  19 +.reservationInfo .infoItem {
  20 + display: flex;
  21 + display: flex;
  22 + line-height: 70rpx;
  23 + font-family: PingFang SC;
  24 + align-items: center;
  25 +}
  26 +
  27 +.reservationInfo .infoItemOne {
  28 + flex-direction: column;
  29 + margin: 0 0 44rpx 0;
  30 + align-items: flex-start;
  31 +}
  32 +
  33 +.bookInfo {
  34 + border-radius: 20rpx;
  35 + padding: 20rpx 20rpx 30rpx 20rpx;
  36 + margin: 0 40rpx;
  37 +}
  38 +
  39 +.infoTopName {
  40 + padding: 10rpx 32rpx;
  41 + color: #FFEFC5;
  42 + font-family: PingFang SC;
  43 + font-weight: 600;
  44 + margin-bottom: 66rpx;
  45 +}
  46 +
  47 +.infoTopName text{
  48 + display: block;
  49 +}
  50 +
  51 +.infoTopName .name {
  52 + font-size: 56rpx;
  53 + margin-top: 16rpx;
  54 +}
  55 +
  56 +.imgBox {
  57 + display: flex;
  58 + align-items: center;
  59 + justify-content: center;
  60 +}
  61 +
  62 +.inviteImg {
  63 + width: 562rpx;
  64 + height: 330rpx;
  65 +}
  66 +
  67 +.inviteImg1 {
  68 + width: 586rpx;
  69 + height: 336rpx;
  70 +}
  71 +
  72 +.infoItemOne .contentData {
  73 + line-height: 48rpx;
  74 +}
  75 +
  76 +.label {
  77 + flex-shrink: 0;
  78 + font-family: PingFang SC;
  79 +}
  80 +
  81 +.contentData {
  82 + flex: 1;
  83 + line-height: 60rpx;
  84 + font-family: PingFang SC;
  85 + margin-left: 40rpx;
  86 + font-weight: 600;
  87 + display: -webkit-box;
  88 + word-break: break-all;
  89 + word-wrap: break-word;
  90 + overflow: hidden;
  91 + text-align: left;
  92 +}
  93 +
  94 +.pageSpacing {
  95 + position: relative;
  96 + display: flex;
  97 + align-items: center;
  98 + white-space: nowrap;
  99 + width: auto;
  100 + overflow-x: scroll;
  101 + border-bottom-left-radius: 10rpx;
  102 + border-bottom-right-radius: 10rpx;
  103 + padding: 10rpx 0 10rpx 116rpx;
  104 + margin-top: 20rpx;
  105 +}
  106 +
  107 +.pageSpacing1 {
  108 + position: relative;
  109 + display: flex;
  110 + white-space: nowrap;
  111 + width: auto;
  112 + overflow-x: scroll;
  113 + border-bottom-left-radius: 10rpx;
  114 + border-bottom-right-radius: 10rpx;
  115 + padding: 10rpx 0 10rpx 116rpx;
  116 + margin-top: 20rpx;
  117 +}
  118 +
  119 +.imgs {
  120 + position: relative;
  121 + display: flex;
  122 + white-space: nowrap;
  123 + width: 470rpx;
  124 + height: 348rpx;
  125 + margin-right: 30rpx;
  126 +}
  127 +
  128 +.imgs text {
  129 + background: #515151;
  130 + color: #fff;
  131 + position: absolute;
  132 + left: 0;
  133 + bottom: 0;
  134 + height: 64rpx;
  135 + line-height: 64rpx;
  136 + width: 470rpx;
  137 + text-align: center;
  138 + border-bottom-left-radius: 16rpx;
  139 + border-bottom-right-radius: 16rpx;
  140 +}
  141 +
  142 +.imageStyle {
  143 + display: inline-block;
  144 + width: 500rpx;
  145 + height: 348rpx;
  146 + border-radius: 16rpx;
  147 +}
  148 +
  149 +.welcomeMsg {
  150 + margin: 44rpx 0 0 0;
  151 + font-family: PingFang SC;
  152 +}
  153 +
  154 +.handleInfo {
  155 + display: flex;
  156 + justify-content: space-between;
  157 + align-items: center;
  158 +}
  159 +
  160 +.headerimg {
  161 + width: 120rpx;
  162 + height: 120rpx;
  163 + border-radius: 50%;
  164 +}
  165 +
  166 +.handle {
  167 + display: flex;
  168 + flex-direction: column;
  169 + font-family: PingFang SC;
  170 + font-weight: 500;
  171 + font-size: 24rpx;
  172 + justify-content: space-between;
  173 +}
  174 +
  175 +.handlePhone {
  176 + margin: 0 20rpx;
  177 + color: #FFEFC5;
  178 + margin: 0 20rpx;
  179 + width: 47%;
  180 +}
  181 +
  182 +.handleName {
  183 + word-wrap: break-word;
  184 + text-align: left;
  185 + overflow: hidden;
  186 + word-break: break-all;
  187 + text-overflow: ellipsis;
  188 + display: -webkit-box;
  189 + -webkit-box-orient: vertical;
  190 + -webkit-line-clamp: 3;
  191 + margin-bottom: 20rpx;
  192 +}
  193 +
  194 +.handleBlower {
  195 + word-wrap: break-word;
  196 + text-align: left;
  197 + overflow: hidden;
  198 + word-break: break-all;
  199 + text-overflow: ellipsis;
  200 + display: -webkit-box;
  201 + -webkit-box-orient: vertical;
  202 + -webkit-line-clamp: 1;
  203 +}
  204 +
  205 +.brownFont {
  206 + width: 130rpx;
  207 + padding: 8rpx 0;
  208 + color: #FFEFC5;
  209 + border: 2rpx solid #FFEFC5;
  210 + border-radius: 22rpx;
  211 + text-align: center;
  212 +}
  213 +
  214 +.brownFont:nth-of-type(1) {
  215 + margin-bottom: 20rpx;
  216 +}
  217 +
  218 +.centerBox {
  219 + border-radius: 20rpx;
  220 + margin: 26rpx 40rpx 0 40rpx;
  221 + padding: 26rpx 20rpx 20rpx 20rpx;
  222 +}
  223 +
  224 +.positioning {
  225 + display: flex;
  226 + flex-direction: column;
  227 + box-sizing: border-box;
  228 + flex: 1;
  229 + color: #FFEFC5;
  230 + margin-bottom: 30rpx;
  231 +}
  232 +
  233 +.positioning .telBox {
  234 + flex-shrink: 0;
  235 + line-height: 50rpx;
  236 +}
  237 +
  238 +.positioningName {
  239 + display: flex;
  240 + justify-content: space-between;
  241 +}
  242 +
  243 +.mapBox{
  244 + display: flex;
  245 + flex: 1;
  246 +}
  247 +
  248 +.positioningText {
  249 + line-height: 50rpx;
  250 + overflow: hidden;
  251 + word-break: break-all;
  252 + text-overflow: ellipsis;
  253 + display: -webkit-box;
  254 + -webkit-box-orient: vertical;
  255 + margin: 0 10rpx;
  256 +}
  257 +
  258 +.mapBtn {
  259 + flex-shrink: 0;
  260 + padding: 8rpx 16rpx;
  261 + margin-left: 10rpx;
  262 + height: 54rpx !important;
  263 + border: 2rpx solid #FFEFC5;
  264 + color: #FFEFC5;
  265 + height: 54rpx !important;
  266 + border-radius: 42rpx;
  267 + font-weight: 600;
  268 + background: transparent;
  269 +}
  270 +
  271 +.introduce {
  272 + box-sizing: border-box;
  273 + padding: 60rpx 0 20rpx 0;
  274 + margin: 0 20rpx 20rpx 20rpx;
  275 +}
  276 +
  277 +.introduceBottom {
  278 + margin-bottom: 220rpx;
  279 +}
  280 +
  281 +.labelBox {
  282 + width: 100%;
  283 + margin-top: 20rpx;
  284 +}
  285 +
  286 +.labelBox .texts {
  287 + line-height: 40rpx;
  288 + margin: 0 20rpx;
  289 + color: #FFEFC5;
  290 + font-family: PingFang SC;
  291 + font-weight: 500;
  292 + display: block;
  293 +}
  294 +
  295 +.labelBox view,.labelBox text,.labelBox image{
  296 + margin-bottom: 20rpx !important;
  297 +}
  298 +
  299 +.introduce image {
  300 + width: 100%;
  301 + margin-bottom: 20rpx;
  302 + display: block !important;
  303 + vertical-align: top;
  304 + padding: 0 20rpx;
  305 + box-sizing: border-box;
  306 +}
  307 +
  308 +.introduce image:nth-last-of-type(1) {
  309 + margin-bottom: 0;
  310 +}
  311 +
  312 +.news {
  313 + color: #FFEFC5;
  314 + font-family: PingFang SC;
  315 + font-weight: 500;
  316 + line-height: 40rpx;
  317 +}
  318 +
  319 +.endStyle {
  320 + margin: 0 20rpx 30rpx 20rpx;
  321 + display: flex;
  322 + align-items: center;
  323 + justify-content: space-between;
  324 +}
  325 +
  326 +.preferentialCoupon {
  327 + padding: 40rpx 40rpx 0 40rpx;
  328 +}
  329 +
  330 +.preferentialCoupon .nodate{
  331 + padding-left: 20rpx;
  332 +}
  333 +
  334 +.preferentialItems {
  335 + display: flex;
  336 + background: linear-gradient(180deg, #ffefd0 0%, #ffdc9b 100%);
  337 + margin-bottom: 20rpx;
  338 + min-height: 160rpx;
  339 + padding-bottom: 10rpx;
  340 + border-radius: 20rpx;
  341 + border: 2rpx solid #ff7e06;
  342 +}
  343 +
  344 +.rechargeItems {
  345 + background: url('https://qn.colorcun.com/certificateBj2.png') no-repeat;
  346 + background-size: 100% 100%;
  347 + min-height: 160rpx;
  348 + display: flex;
  349 + justify-content: space-between;
  350 + align-items: center;
  351 + height: auto;
  352 + padding: 12rpx 0;
  353 + margin: 0 20rpx;
  354 + border: none;
  355 +}
  356 +
  357 +.itemLeft {
  358 + width: 30%;
  359 + display: flex;
  360 + flex-direction: column;
  361 + justify-content: center;
  362 + position: relative;
  363 +}
  364 +
  365 +.rechargeItems .itemLeft {
  366 + width: 64%;
  367 + margin-left: 38rpx;
  368 +}
  369 +
  370 +.discountText {
  371 + text-align: center;
  372 + color: #FFEFC5;
  373 + border-radius: 6rpx;
  374 + font-family: PingFang SC;
  375 + background: #FD4D59;
  376 + width: max-content;
  377 + padding: 6rpx;
  378 + position: absolute;
  379 + left: 16rpx;
  380 + top: 12rpx;
  381 +}
  382 +
  383 +.discountText1{
  384 + text-align: center;
  385 + border-radius: 6rpx;
  386 + font-family: PingFang SC;
  387 + background: transparent;
  388 + width: max-content;
  389 + padding: 2rpx 8rpx;
  390 + position: absolute;
  391 + left: 16rpx;
  392 + top: 12rpx;
  393 +}
  394 +
  395 +.discountText2{
  396 + background: #FD4D59;
  397 + color: #fff;
  398 +}
  399 +
  400 +.discountText3{
  401 + color: #FD4D59;
  402 + border: 2rpx solid #FD4D59;
  403 +}
  404 +
  405 +.priceText {
  406 + font-family: 'Abel';
  407 + color: #E34D59;
  408 + font-weight: 500;
  409 + font-size: 64rpx;
  410 + margin-top: 6rpx;
  411 +}
  412 +
  413 +.priceText .icons {
  414 + color: #FD4D59;
  415 +}
  416 +
  417 +.itemRight {
  418 + width: 70%;
  419 + padding-right: 10rpx;
  420 + margin-left: 18rpx;
  421 +}
  422 +
  423 +.btns {
  424 + margin: 24rpx 20rpx 0 0;
  425 + display: flex;
  426 + justify-content: space-evenly;
  427 + align-items: baseline;
  428 + flex-direction: column;
  429 + height: 90%;
  430 +}
  431 +
  432 +.orderingFood {
  433 + padding: 0 40rpx;
  434 + border-radius: 22rpx;
  435 + text-align: center;
  436 + color: #0B0805;
  437 + border-radius: 20rpx;
  438 + line-height: 44rpx;
  439 + height: 44rpx;
  440 + background: transparent;
  441 + border: 2rpx solid #0B0805;
  442 + width: max-content;
  443 + flex-shrink: 0;
  444 +}
  445 +
  446 +.preferentialCoupon .itemRight {
  447 + width: 74%;
  448 + display: flex;
  449 + align-items: center;
  450 +}
  451 +
  452 +.preferentialCoupon .itemLeft {
  453 + width: 26%;
  454 +}
  455 +
  456 +.preferentialCoupon .couponLine{
  457 + margin: 24rpx 0 4rpx 0;
  458 + border-right: 2rpx dashed #f6231b;
  459 +}
  460 +
  461 +.preferentialCoupon .orderingFood {
  462 + padding: 0 20rpx;
  463 + color: #fff !important;
  464 + border: none !important;
  465 + text-align: center;
  466 + border-radius: 20rpx;
  467 + line-height: 44rpx;
  468 + height: 44rpx;
  469 + width: max-content;
  470 + flex-shrink: 0;
  471 + background: linear-gradient(94.4deg, #f41919 2.72%, #ff7426 122.17%);
  472 +}
  473 +.preferentialCoupon .icons {
  474 + color: #F6231B;
  475 + text-align: center;
  476 +}
  477 +
  478 +.preferentialCoupon .priceText {
  479 + display: flex;
  480 + align-items: baseline;
  481 + justify-content: center;
  482 + font-family: PingFang SC;
  483 + color: #F6231B;
  484 + font-weight: 600;
  485 + font-size: 48rpx;
  486 + margin-top: 6rpx;
  487 +}
  488 +
  489 +.preferentialCoupon .priceText text {
  490 + font-size: 48rpx;
  491 +}
  492 +
  493 +.preferentialCoupon .btns {
  494 + flex: 1;
  495 +}
  496 +.preferentialCoupon .btnBox {
  497 + display: flex;
  498 + flex-direction: column;
  499 +}
  500 +
  501 +.preferentialCoupon .grantNum {
  502 + display: flex;
  503 + flex-direction: column;
  504 + align-items: center;
  505 + color: #C36607;
  506 + margin-top: 10rpx;
  507 +}
  508 +
  509 +.preferentialCoupon .grantNum text {
  510 + color: #F6231B;
  511 + margin-right: 10rpx;
  512 +}
  513 +
  514 +.preferentialCoupon .btns .anameText {
  515 + font-weight: 600;
  516 +}
  517 +
  518 +.preferentialCoupon .orderingFood1 {
  519 + border: 2rpx solid #fa4b20 !important;
  520 + background: transparent !important;
  521 + color: #fa4b20 !important;
  522 + font-weight: 600;
  523 +}
  524 +
  525 +.bottom {
  526 + margin-top: 4rpx;
  527 + width: 100%;
  528 + color: #C36607;
  529 + font-family: PingFang SC;
  530 + font-weight: 500;
  531 + display: -webkit-box;
  532 + word-break: break-all;
  533 + word-wrap: break-word;
  534 + overflow: hidden;
  535 + text-align: left;
  536 +}
  537 +
  538 +.itemTop {
  539 + display: flex;
  540 + width: 100%;
  541 + align-items: center;
  542 + font-family: 'Abel';
  543 + color: #FD4D59;
  544 + margin-bottom: 10rpx;
  545 +}
  546 +
  547 +.rechargeItems .orderingFood {
  548 + margin-right: 20rpx;
  549 +}
  550 +
  551 +.itemBottom {
  552 + color: #0B0805;
  553 + font-family: PingFang SC;
  554 + font-weight: 500;
  555 + display: -webkit-box;
  556 + word-break: break-all;
  557 + word-wrap: break-word;
  558 + overflow: hidden;
  559 + text-align: left;
  560 +}
  561 +
  562 +.priceText {
  563 + display: flex;
  564 + align-items: center;
  565 + justify-content: center;
  566 +}
  567 +
  568 +.vips {
  569 + display: flex;
  570 + flex-direction: column;
  571 + justify-content: center;
  572 + align-items: center;
  573 + margin-top: 20rpx;
  574 +}
  575 +
  576 +.favouredPolicy {
  577 + width: 45%;
  578 + color: #FFEFC5;
  579 + font-family: PingFang SC;
  580 + font-weight: 500;
  581 + border: 2rpx solid #FFEFC5;
  582 + border-radius: 22rpx;
  583 + text-align: center;
  584 + padding: 10rpx;
  585 +}
  586 +
  587 +.sharewidth {
  588 + position: fixed;
  589 + left: 0;
  590 + bottom: 0;
  591 + height: 160rpx;
  592 + padding: 0 40rpx;
  593 + box-sizing: border-box;
  594 + z-index: 100;
  595 + justify-content: space-between;
  596 + width: 100%;
  597 +}
  598 +
  599 +.arrivalBox{
  600 + display: flex;
  601 + width: 100%;
  602 + justify-content: space-between;
  603 + align-items: center;
  604 +}
  605 +
  606 +.arrivalBox button{
  607 + display: flex;
  608 + font-size: 24rpx;
  609 + flex-direction: column;
  610 + height: 50rpx;
  611 + padding: 0 18rpx;
  612 + line-height: 48rpx;
  613 + font-family: PingFang SC;
  614 + border-radius: 40rpx;
  615 + background: transparent;
  616 + color: #FFEFC5;
  617 + border: 2rpx solid #FFEFC5;
  618 +}
  619 +
  620 +.shareItem,
  621 +.moreBtn,
  622 +.paymenBtn {
  623 + width: inherit;
  624 + background: transparent;
  625 + color: #FFEFC5;
  626 + border: 2rpx solid #FFEFC5;
  627 + height: 80rpx;
  628 + border-radius: 42rpx;
  629 + font-weight: 600;
  630 + margin-right: 20rpx;
  631 +}
  632 +
  633 +.threeBtn{
  634 + width: auto;
  635 + padding: 0 24rpx;
  636 + flex-shrink: 0;
  637 +}
  638 +
  639 +.shareItem {
  640 + padding: 0;
  641 + margin-right: 0;
  642 + background: #FFEFC5;
  643 + color: #0B0805;
  644 + animation-name: scaleDraw;
  645 + animation-timing-function: ease-in-out;
  646 + animation-iteration-count: infinite;
  647 + animation-duration: 2s;
  648 +}
  649 +
  650 +@keyframes scaleDraw {
  651 + 0% {
  652 + transform: scale(1);
  653 + }
  654 + 25% {
  655 + transform: scale(1.1);
  656 + }
  657 + 50% {
  658 + transform: scale(1);
  659 + }
  660 + 75% {
  661 + transform: scale(1.1);
  662 + }
  663 +}
  664 +
  665 +.menu-item {
  666 + width: 100%;
  667 + height: 100%;
  668 + display: flex;
  669 + justify-content: center;
  670 + align-items: center;
  671 +}
  672 +
  673 +.cook {
  674 + background: transparent;
  675 + border: 2rpx solid #FFEFC5;
  676 + border-radius: 28rpx;
  677 + font-weight: normal;
  678 + width: 40% !important;
  679 + color: #FFEFC5;
  680 + padding: 4rpx 0;
  681 + margin-left: 12rpx;
  682 +}
  683 +
  684 +.cook view {
  685 + color: #FFEFC5;
  686 +}
  687 +
  688 +.bold {
  689 + font-weight: 500;
  690 +}
  691 +
  692 +.evaluateBox {
  693 + margin: 60rpx 84rpx 72rpx 40rpx;
  694 + display: flex;
  695 + align-items: center;
  696 + justify-content: space-between;
  697 + color: #FFEFC5;
  698 +}
  699 +
  700 +.evaluateBox image {
  701 + width: 64rpx;
  702 + height: 64rpx;
  703 +}
  704 +
  705 +.evaluateBox text {
  706 + color: #FFEFC5;
  707 + font-size: 24rpx;
  708 +}
  709 +
  710 +.evaluateBox text text {
  711 + font-size: 36rpx;
  712 +}
  713 +
  714 +.more {
  715 + height: 80rpx;
  716 + width: 100%;
  717 + position: fixed;
  718 + bottom: 160rpx;
  719 + display: flex;
  720 + align-items: center;
  721 + justify-content: center;
  722 + flex-direction: column;
  723 + background: rgba(0, 0, 0, .4);
  724 +}
  725 +
  726 +.more1 {
  727 + bottom: 40rpx;
  728 +}
  729 +
  730 +.moreText {
  731 + color: #fff;
  732 +}
  733 +
  734 +.more image {
  735 + width: 30rpx;
  736 + height: 30rpx;
  737 +}
  738 +
  739 +.musicImg {
  740 + width: 62rpx;
  741 + height: 62rpx;
  742 + position: fixed !important;
  743 + right: 8%;
  744 + top: 22%;
  745 + z-index: 200;
  746 +}
  747 +
  748 +.bookData {
  749 + margin-left: 0;
  750 +}
  751 +
  752 +.businessBox {
  753 + color: #FFEFC5;
  754 + font-size: 24rpx;
  755 + font-family: PingFang SC;
  756 + display: flex;
  757 + margin-top: 20rpx;
  758 +}
  759 +
  760 +.businessBox text {
  761 + text-decoration: underline;
  762 +}
  763 +
  764 +.reserveBox {
  765 + margin: 20rpx;
  766 + background: #1b1816;
  767 + padding: 20rpx;
  768 +}
  769 +
  770 +.reserveBox .title {
  771 + margin-bottom: 20rpx;
  772 + color: #FFEFC5;
  773 + font-family: PingFang SC;
  774 +}
  775 +
  776 +.reserveBox .items {
  777 + width: 100%;
  778 + margin-bottom: 20rpx;
  779 + color: #FFEFC5;
  780 + font-family: PingFang SC;
  781 + display: block;
  782 +}
  783 +
  784 +.toastBox {
  785 + width: fit-content;
  786 + position: fixed;
  787 + padding: 30rpx;
  788 + color: #fff;
  789 + background: rgba(0, 0, 0, .7);
  790 + font-size: 28rpx;
  791 + border-radius: 10rpx;
  792 + left: 50%;
  793 + z-index: 999;
  794 + top: 50%;
  795 + transform: translate(-50%, -50%);
  796 +}
  797 +
  798 +.cannotImg {
  799 + width: 200rpx;
  800 + height: 66rpx;
  801 + transform: rotate(-45deg);
  802 + position: fixed;
  803 + left: 38%;
  804 + z-index: 999;
  805 + top: 50%;
  806 +}
  807 +
  808 +.separatrixOne {
  809 + display: flex;
  810 + justify-content: space-between;
  811 + align-items: center;
  812 + margin: 40rpx;
  813 +}
  814 +
  815 +.separatrixOne .text1 {
  816 + width: 2rpx;
  817 + height: 6rpx;
  818 + background: #FFEFC5;
  819 +}
  820 +
  821 +.separatrixOne .text2 {
  822 + width: 4rpx;
  823 + height: 6rpx;
  824 + background: #FFEFC5;
  825 +}
  826 +
  827 +.separatrixOne .text3 {
  828 + width: 6rpx;
  829 + height: 6rpx;
  830 + background: #FFEFC5;
  831 +}
  832 +
  833 +.separatrixOne .text4 {
  834 + width: 10rpx;
  835 + height: 6rpx;
  836 + background: #FFEFC5;
  837 +}
  838 +
  839 +.separatrixOne .text5 {
  840 + width: 16rpx;
  841 + height: 6rpx;
  842 + background: #FFEFC5;
  843 +}
  844 +
  845 +.separatrixOne .text6 {
  846 + width: 26rpx;
  847 + height: 6rpx;
  848 + background: #FFEFC5;
  849 +}
  850 +
  851 +.separatrixOne .text7 {
  852 + width: 42rpx;
  853 + height: 6rpx;
  854 + background: #FFEFC5;
  855 +}
  856 +
  857 +.separatrixOne .text8 {
  858 + width: 68rpx;
  859 + height: 6rpx;
  860 + background: #FFEFC5;
  861 +}
  862 +
  863 +.separatrixOne .text9 {
  864 + width: 110rpx;
  865 + height: 6rpx;
  866 + background: #FFEFC5;
  867 +}
  868 +
  869 +.giftImg{
  870 + width: 108rpx;
  871 + height: 116rpx;
  872 + position: fixed !important;
  873 + right: 4%;
  874 + top: 28%;
  875 + z-index: 200;
  876 + transform-origin: 50% 100%;
  877 +}
  878 +
  879 +.giftImg1 {
  880 + transform: scale(0);
  881 +}
  882 +
  883 +#payModal {
  884 + display: flex;
  885 + align-items: center;
  886 +}
  887 +
  888 +.titleModal {
  889 + width: 100%;
  890 + color: #000;
  891 + font-family: PingFang SC;
  892 + font-weight: 500;
  893 + font-size: 44rpx;
  894 + text-align: center;
  895 +}
  896 +
  897 +.explain{
  898 + padding: 0 40rpx;
  899 + font-size: 30rpx;
  900 + color: #000;
  901 + line-height: 40rpx;
  902 + text-align: center;
  903 +}
  904 +
  905 +.screenshotBtns{
  906 + width: 100%;
  907 + display: flex;
  908 + justify-content: space-between;
  909 + box-sizing: border-box;
  910 + padding: 52rpx 22rpx 0 22rpx;
  911 +}
  912 +
  913 +.btnsLeft {
  914 + width: 43%;
  915 + border-radius: 42rpx;
  916 + background: #fff;
  917 + border: 2rpx solid #0346A5;
  918 + bottom: 10%;
  919 + color: #0346A5;
  920 +}
  921 +
  922 +.btnsRight {
  923 + width: 43%;
  924 + border-radius: 42rpx;
  925 + background: linear-gradient(104.24deg, #4c8dad -57.47%, #0143a3 55.72%, #42a5ff 148.72%);
  926 + bottom: 10%;
  927 + color: #fff;
  928 +}
  929 +
  930 +.mymodal{
  931 + top: 30% !important;
  932 + width: 80% !important;
  933 + margin: 0 auto !important;
  934 + left: 0 !important;
  935 + right: 0 !important;
  936 +}
  937 +
  938 +.mymodal .mymodal-content {
  939 + height: auto !important;
  940 +}
  941 +
  942 +.videoBox{
  943 + display: flex;
  944 + flex-wrap: wrap;
  945 + align-items: center;
  946 + justify-content: center;
  947 + margin: 0 20rpx;
  948 +}
  949 +
  950 +.videoBox video{
  951 + width: 100%;
  952 + box-sizing: border-box;
  953 +}
  954 +
  955 +#couponModal .titleModal {
  956 + position: relative;
  957 + width: 544rpx;
  958 + background: #F14033;
  959 + border-top-left-radius: 20rpx;
  960 + border-top-right-radius: 20rpx;
  961 + margin: 94% auto 0;
  962 +}
  963 +
  964 +#couponModal .couponWrap {
  965 + position: relative;
  966 + width: 544rpx;
  967 + margin: 0 auto;
  968 + background: #F14033;
  969 + border-bottom-left-radius: 20rpx;
  970 + border-bottom-right-radius: 20rpx;
  971 +}
  972 +
  973 +#couponModal .mymodal-title {
  974 + padding: 0 80rpx;
  975 +}
  976 +
  977 +#couponModal .mymodal-content {
  978 + padding: 0 80rpx 40rpx 80rpx;
  979 +}
  980 +
  981 +#couponModal .mymodal {
  982 + background: rgba(0, 0, 0, 0.8);
  983 + width: 100% !important;
  984 + top: 0 !important;
  985 + height: auto !important;
  986 + z-index: 300;
  987 +}
  988 +
  989 +.nameInfo {
  990 + font-family: PingFang SC;
  991 + font-weight: 500;
  992 + line-height: 38rpx;
  993 + color: #fff;
  994 + margin-bottom: 28rpx;
  995 + text-align: center;
  996 + padding: 44rpx 30rpx 0 30rpx;
  997 +}
  998 +
  999 +.couponTotal {
  1000 + color: #fff;
  1001 + font-family: PingFang SC;
  1002 + font-weight: 500;
  1003 + line-height: 48rpx;
  1004 + padding-bottom: 16rpx;
  1005 +}
  1006 +
  1007 +.counterText {
  1008 + color: #ffc806;
  1009 + font-weight: 600;
  1010 + display: flex;
  1011 + font-size: 100rpx;
  1012 + align-items: flex-end;
  1013 + justify-content: center;
  1014 + margin: 16rpx 0;
  1015 +}
  1016 +
  1017 +.couponInfo {
  1018 + color: #fff;
  1019 + text-align: center;
  1020 + margin-bottom: 20rpx;
  1021 + font-weight: 600;
  1022 + display: flex;
  1023 + flex-direction: column;
  1024 + align-items: center;
  1025 + line-height: 78rpx;
  1026 +}
  1027 +
  1028 +.couponBox {
  1029 + width: 80%;
  1030 + margin: 0 auto;
  1031 + display: flex;
  1032 + flex-wrap: wrap;
  1033 + justify-content: space-evenly;
  1034 +}
  1035 +
  1036 +.couponItems {
  1037 + width: 46%;
  1038 + margin-bottom: 24rpx;
  1039 + padding-bottom: 52rpx;
  1040 + border-radius: 20rpx;
  1041 + border: 2rpx solid #ff7e06;
  1042 + background: linear-gradient(180deg, #ffefd0 0%, #ffdc9b 100%);
  1043 +}
  1044 +
  1045 +.couponNum {
  1046 + background: #727272;
  1047 + border-radius: 50%;
  1048 + color: #fff;
  1049 + width: 40rpx;
  1050 + height: 40rpx;
  1051 + display: flex;
  1052 + align-items: center;
  1053 + justify-content: center;
  1054 + margin: 8rpx 0 0 8rpx;
  1055 +}
  1056 +
  1057 +.couponPrice {
  1058 + display: flex;
  1059 + align-items: center;
  1060 + justify-content: center;
  1061 + color: #F6231B;
  1062 + font-weight: 500;
  1063 +}
  1064 +
  1065 +.couponLines{
  1066 + width: 80%;
  1067 + margin: 0 auto;
  1068 + height: 2rpx;
  1069 + border-bottom: 2rpx dashed #F6231B;
  1070 +}
  1071 +
  1072 +.couponPrice text {
  1073 + margin-left: 4rpx;
  1074 + font-size: 76rpx;
  1075 + font-weight: 700;
  1076 +}
  1077 +
  1078 +.couponCondition {
  1079 + color: #C36607;
  1080 + display: flex;
  1081 + align-items: center;
  1082 + justify-content: center;
  1083 + padding-top: 24rpx;
  1084 +}
  1085 +
  1086 +.couponBtn {
  1087 + width: 80%;
  1088 + margin: 0 auto;
  1089 + background: #fff;
  1090 + font-weight: 600;
  1091 + text-align: center;
  1092 + padding: 12rpx 0;
  1093 + margin: 16rpx auto 20rpx auto;
  1094 + color: #F14033;
  1095 + border-radius: 8rpx;
  1096 +}
  1097 +
  1098 +.couponText {
  1099 + color: #fff;
  1100 + text-decoration: underline;
  1101 + text-align: center;
  1102 + padding-bottom: 44rpx;
  1103 + font-weight: 600;
  1104 + letter-spacing:2rpx;
  1105 +}
  1106 +
  1107 +.closeImg {
  1108 + width: 60rpx;
  1109 + height: 60rpx;
  1110 + position: fixed;
  1111 + left: 46%;
  1112 + bottom: 24%;
  1113 +}
  1114 +
  1115 +/* 全屏遮罩层初始样式 */
  1116 +.fullscreenMask {
  1117 + position: fixed;
  1118 + top: 35%;
  1119 + margin: 0 auto;
  1120 + height: 580rpx;
  1121 + z-index: 100;
  1122 + color: #fff;
  1123 + display: flex;
  1124 + align-items: center;
  1125 + justify-content: center;
  1126 + border-radius: 50%;
  1127 + width: 100%;
  1128 +}
  1129 +
  1130 +.fullscreenMask image{
  1131 + width: 544rpx;
  1132 + height: 600rpx;
  1133 +}
  1134 +
  1135 +/* 目标点(右上角的商家有礼位置) */
  1136 +.targetPoint {
  1137 + position: fixed;
  1138 + width: 108rpx;
  1139 + height: 116rpx;
  1140 + background: transparent;
  1141 + z-index: 100;
  1142 +}
  1143 +
  1144 +/* 模板9 */
  1145 +.viewBox9 {
  1146 + background: #23201e;
  1147 +}
  1148 +
  1149 +.viewBox9 .introduce {
  1150 + background: #1b1816;
  1151 +}
  1152 +
  1153 +.viewBox9 .bookInfo,
  1154 +.viewBox9 .centerBox {
  1155 + background: rgba(11, 8, 5, 0.85);
  1156 +}
  1157 +
  1158 +.viewBox9 .rechargeBox .btns text,
  1159 +.viewBox9 .rechargeBox .bottom,
  1160 +.viewBox9 .itemBottom,
  1161 +.viewBox9+.sharewidth .shareItem {
  1162 + color: #0B0805;
  1163 +}
  1164 +
  1165 +.viewBox9 .orderingFood {
  1166 + color: #0B0805;
  1167 + border: 2rpx solid #0B0805;
  1168 +}
  1169 +
  1170 +.viewBox9+.sharewidth {
  1171 + background: #0B0805;
  1172 +}
  1173 +
  1174 +/* 模板10 模板17 */
  1175 +.viewBox10,
  1176 +.viewBox17 {
  1177 + background: #750100;
  1178 +}
  1179 +
  1180 +.viewBox10 .introduce,
  1181 +.viewBox10 .reserveBox {
  1182 + background: rgba(164, 9, 5, 0.35);
  1183 +}
  1184 +
  1185 +.viewBox10 .bookInfo,
  1186 +.viewBox10 .centerBox,
  1187 +.viewBox17 .bookInfo,
  1188 +.viewBox17 .centerBox {
  1189 + background: rgba(117, 1, 0, 0.75);
  1190 +}
  1191 +
  1192 +.viewBox10 .rechargeBox .btns text,
  1193 +.viewBox10 .rechargeBox .bottom,
  1194 +.viewBox10 .itemBottom,
  1195 +.viewBox10+.sharewidth .shareItem,
  1196 +.viewBox17 .rechargeBox .btns text,
  1197 +.viewBox17 .rechargeBox .bottom,
  1198 +.viewBox17 .itemBottom,
  1199 +.viewBox17+.sharewidth .shareItem {
  1200 + color: #750100;
  1201 +}
  1202 +
  1203 +.viewBox10 .orderingFood,
  1204 +.viewBox17 .orderingFood {
  1205 + color: #750100;
  1206 + border: 2rpx solid #750100;
  1207 +}
  1208 +
  1209 +.viewBox10+.sharewidth,
  1210 +.viewBox17+.sharewidth {
  1211 + background: #750100;
  1212 +}
  1213 +
  1214 +/* 模板11 */
  1215 +.viewBox11,
  1216 +.viewBox12 {
  1217 + background: #0b1a67;
  1218 +}
  1219 +
  1220 +.viewBox11 .introduce,
  1221 +.viewBox12 .introduce,
  1222 +.viewBox11 .reserveBox,
  1223 +.viewBox12 .reserveBox {
  1224 + background: rgba(33, 74, 165, 0.3);
  1225 +}
  1226 +
  1227 +.viewBox11 .bookInfo,
  1228 +.viewBox11 .centerBox {
  1229 + background: rgba(33, 74, 165, 0.7);
  1230 +}
  1231 +
  1232 +.viewBox11 .rechargeBox .btns text,
  1233 +.viewBox11 .rechargeBox .bottom,
  1234 +.viewBox11 .itemBottom,
  1235 +.viewBox11+.sharewidth .shareItem,
  1236 +.viewBox12 .rechargeBox .btns text,
  1237 +.viewBox12 .rechargeBox .bottom,
  1238 +.viewBox12 .itemBottom,
  1239 +.viewBox12+.sharewidth .shareItem {
  1240 + color: #0B1A67;
  1241 +}
  1242 +
  1243 +.viewBox11 .orderingFood,
  1244 +.viewBox12 .orderingFood {
  1245 + color: #0B1A67;
  1246 + border: 2rpx solid #0B1A67;
  1247 +}
  1248 +
  1249 +.viewBox11+.sharewidth,
  1250 +.viewBox12+.sharewidth {
  1251 + background: #0B1A67;
  1252 +}
  1253 +
  1254 +/* 模板12 */
  1255 +.viewBox12 .bookInfo,
  1256 +.viewBox12 .centerBox {
  1257 + background: rgba(11, 26, 103, 0.85);
  1258 +}
  1259 +
  1260 +/* 模板13 模板15 */
  1261 +.viewBox13,
  1262 +.viewBox15 {
  1263 + background: #0b3133;
  1264 +}
  1265 +
  1266 +.viewBox13 .introduce,
  1267 +.viewBox15 .introduce,
  1268 +.viewBox13 .reserveBox,
  1269 +.viewBox15 .reserveBox {
  1270 + background: rgba(33, 89, 96, 0.75);
  1271 +}
  1272 +
  1273 +.viewBox13 .bookInfo,
  1274 +.viewBox13 .centerBox,
  1275 +.viewBox13 .infoTopName,
  1276 +.viewBox15 .bookInfo,
  1277 +.viewBox15 .centerBox,
  1278 +.viewBox15 .infoTopName {
  1279 + background: rgba(33, 89, 96, 0.35);
  1280 +}
  1281 +
  1282 +.viewBox13 .rechargeBox .btns text,
  1283 +.viewBox13 .rechargeBox .bottom,
  1284 +.viewBox13 .itemBottom,
  1285 +.viewBox13+.sharewidth .shareItem,
  1286 +.viewBox15 .rechargeBox .btns text,
  1287 +.viewBox15 .rechargeBox .bottom,
  1288 +.viewBox15 .itemBottom,
  1289 +.viewBox15+.sharewidth .shareItem {
  1290 + color: #215960;
  1291 +}
  1292 +
  1293 +.viewBox13 .orderingFood,
  1294 +.viewBox15 .orderingFood {
  1295 + color: #215960;
  1296 + border: 2rpx solid #215960;
  1297 +}
  1298 +
  1299 +.viewBox13+.sharewidth,
  1300 +.viewBox15+.sharewidth {
  1301 + background: #215960;
  1302 +}
  1303 +
  1304 +/* 模板14 模板16 */
  1305 +.viewBox14,
  1306 +.viewBox16 {
  1307 + background: #1b1a23;
  1308 +}
  1309 +
  1310 +.viewBox14 .introduce,
  1311 +.viewBox16 .introduce,
  1312 +.viewBox14 .reserveBox,
  1313 +.viewBox16 .reserveBox {
  1314 + background: rgba(11, 8, 5, 0.75);
  1315 +}
  1316 +
  1317 +.viewBox14 .bookInfo,
  1318 +.viewBox14 .centerBox,
  1319 +.viewBox14 .infoTopName,
  1320 +.viewBox16 .bookInfo,
  1321 +.viewBox16 .centerBox,
  1322 +.viewBox16 .infoTopName {
  1323 + background: rgba(11, 8, 5, 0.35);
  1324 +}
  1325 +
  1326 +.viewBox14 .rechargeBox .btns text,
  1327 +.viewBox14 .rechargeBox .bottom,
  1328 +.viewBox14 .itemBottom,
  1329 +.viewBox14+.sharewidth .shareItem,
  1330 +.viewBox16 .rechargeBox .btns text,
  1331 +.viewBox16 .rechargeBox .bottom,
  1332 +.viewBox16 .itemBottom,
  1333 +.viewBox16+.sharewidth .shareItem {
  1334 + color: #0B0805;
  1335 +}
  1336 +
  1337 +.viewBox14 .orderingFood,
  1338 +.viewBox16 .orderingFood {
  1339 + color: #0B0805;
  1340 + border: 2rpx solid #0B0805;
  1341 +}
  1342 +
  1343 +.viewBox14+.sharewidth,
  1344 +.viewBox16+.sharewidth {
  1345 + background: #0B0805;
  1346 +}
  1347 +
  1348 +/* 模板17 */
  1349 +.viewBox17 .introduce,
  1350 +.viewBox17 .reserveBox {
  1351 + background: #850402;
  1352 +}
  1353 +
  1354 +.viewBox17 .infoTopName {
  1355 + background: rgba(117, 1, 0, 0.75);
  1356 +}
@@ -323,8 +323,8 @@ @@ -323,8 +323,8 @@
323 点击了解更多会员优惠政策 323 点击了解更多会员优惠政策
324 </view> 324 </view>
325 <view class="businessBox"> 325 <view class="businessBox">
326 - 周到安排提供技术支持<text bindtap="call" data-phone="4000009690">4000009690</text>,餐厅入驻请点击  
327 - <view bindtap="gotoJoinSeller" style="text-decoration: underline;">这里</view> 326 + 周到安排提供技术支持<text bindtap="call" data-phone="4000009690">4000009690</text>,
  327 + <view bindtap="gotoJoinSeller" style="text-decoration: underline;">我是商家,我要试用</view>
328 </view> 328 </view>
329 </view> 329 </view>
330 <view class="more" wx:if="{{showMoreTip}}"> 330 <view class="more" wx:if="{{showMoreTip}}">
@@ -328,8 +328,8 @@ @@ -328,8 +328,8 @@
328 点击了解更多会员优惠政策 328 点击了解更多会员优惠政策
329 </view> 329 </view>
330 <view class="businessBox"> 330 <view class="businessBox">
331 - 周到安排提供技术支持<text bindtap="call" data-phone="4000009690">4000009690</text>,餐厅入驻请点击  
332 - <view bindtap="gotoJoinSeller" style="text-decoration: underline;">这里</view> 331 + 周到安排提供技术支持<text bindtap="call" data-phone="4000009690">4000009690</text>,
  332 + <view bindtap="gotoJoinSeller" style="text-decoration: underline;">我是商家,我要试用</view>
333 </view> 333 </view>
334 </view> 334 </view>
335 <view class="more" wx:if="{{showMoreTip}}"> 335 <view class="more" wx:if="{{showMoreTip}}">
@@ -311,8 +311,8 @@ @@ -311,8 +311,8 @@
311 点击了解更多会员优惠政策 311 点击了解更多会员优惠政策
312 </view> 312 </view>
313 <view class="businessBox"> 313 <view class="businessBox">
314 - 周到安排提供技术支持<text bindtap="call" data-phone="4000009690">4000009690</text>,餐厅入驻请点击  
315 - <view bindtap="gotoJoinSeller" style="text-decoration: underline;">这里</view> 314 + 周到安排提供技术支持<text bindtap="call" data-phone="4000009690">4000009690</text>,
  315 + <view bindtap="gotoJoinSeller" style="text-decoration: underline;">我是商家,我要试用</view>
316 </view> 316 </view>
317 </view> 317 </view>
318 <view class="more" wx:if="{{showMoreTip}}"> 318 <view class="more" wx:if="{{showMoreTip}}">
@@ -310,8 +310,8 @@ @@ -310,8 +310,8 @@
310 点击了解更多会员优惠政策 310 点击了解更多会员优惠政策
311 </view> 311 </view>
312 <view class="businessBox"> 312 <view class="businessBox">
313 - 周到安排提供技术支持<text bindtap="call" data-phone="4000009690">4000009690</text>,餐厅入驻请点击  
314 - <view bindtap="gotoJoinSeller" style="text-decoration: underline;">这里</view> 313 + 周到安排提供技术支持<text bindtap="call" data-phone="4000009690">4000009690</text>,
  314 + <view bindtap="gotoJoinSeller" style="text-decoration: underline;">我是商家,我要试用</view>
315 </view> 315 </view>
316 </view> 316 </view>
317 <view class="more" wx:if="{{showMoreTip}}"> 317 <view class="more" wx:if="{{showMoreTip}}">
@@ -296,8 +296,8 @@ @@ -296,8 +296,8 @@
296 点击了解更多会员优惠政策 296 点击了解更多会员优惠政策
297 </view> 297 </view>
298 <view class="businessBox"> 298 <view class="businessBox">
299 - 周到安排提供技术支持<text bindtap="call" data-phone="4000009690">4000009690</text>,餐厅入驻请点击  
300 - <view bindtap="gotoJoinSeller" style="text-decoration: underline;">这里</view> 299 + 周到安排提供技术支持<text bindtap="call" data-phone="4000009690">4000009690</text>,
  300 + <view bindtap="gotoJoinSeller" style="text-decoration: underline;">我是商家,我要试用</view>
301 </view> 301 </view>
302 </view> 302 </view>
303 <view class="more" wx:if="{{showMoreTip}}"> 303 <view class="more" wx:if="{{showMoreTip}}">
@@ -323,8 +323,8 @@ @@ -323,8 +323,8 @@
323 点击了解更多会员优惠政策 323 点击了解更多会员优惠政策
324 </view> 324 </view>
325 <view class="businessBox"> 325 <view class="businessBox">
326 - 周到安排提供技术支持<text bindtap="call" data-phone="4000009690">4000009690</text>,餐厅入驻请点击  
327 - <view bindtap="gotoJoinSeller" style="text-decoration: underline;">这里</view> 326 + 周到安排提供技术支持<text bindtap="call" data-phone="4000009690">4000009690</text>,
  327 + <view bindtap="gotoJoinSeller" style="text-decoration: underline;">我是商家,我要试用</view>
328 </view> 328 </view>
329 </view> 329 </view>
330 <view class="more" wx:if="{{showMoreTip}}"> 330 <view class="more" wx:if="{{showMoreTip}}">
@@ -321,8 +321,8 @@ @@ -321,8 +321,8 @@
321 点击了解更多会员优惠政策 321 点击了解更多会员优惠政策
322 </view> 322 </view>
323 <view class="businessBox"> 323 <view class="businessBox">
324 - 周到安排提供技术支持<text bindtap="call" data-phone="4000009690">4000009690</text>,餐厅入驻请点击  
325 - <view bindtap="gotoJoinSeller" style="text-decoration: underline;">这里</view> 324 + 周到安排提供技术支持<text bindtap="call" data-phone="4000009690">4000009690</text>,
  325 + <view bindtap="gotoJoinSeller" style="text-decoration: underline;">我是商家,我要试用</view>
326 </view> 326 </view>
327 </view> 327 </view>
328 <view class="more" wx:if="{{showMoreTip}}"> 328 <view class="more" wx:if="{{showMoreTip}}">
@@ -320,8 +320,8 @@ @@ -320,8 +320,8 @@
320 点击了解更多会员优惠政策 320 点击了解更多会员优惠政策
321 </view> 321 </view>
322 <view class="businessBox"> 322 <view class="businessBox">
323 - 周到安排提供技术支持<text bindtap="call" data-phone="4000009690">4000009690</text>,餐厅入驻请点击  
324 - <view bindtap="gotoJoinSeller" style="text-decoration: underline;">这里</view> 323 + 周到安排提供技术支持<text bindtap="call" data-phone="4000009690">4000009690</text>,
  324 + <view bindtap="gotoJoinSeller" style="text-decoration: underline;">我是商家,我要试用</view>
325 </view> 325 </view>
326 </view> 326 </view>
327 </view> 327 </view>
@@ -169,6 +169,8 @@ Page({ @@ -169,6 +169,8 @@ Page({
169 } else { 169 } else {
170 url = '/pack-invitation/pages/detail_owner_invitation9'; 170 url = '/pack-invitation/pages/detail_owner_invitation9';
171 } 171 }
  172 + if(data.type == '0') url = '/pack-invitation/pages/detail_owner_invitation1';
  173 + if(data.type == '300') url = '/pack-invitation/pages/detail_owner_invitation13';
172 if(data.type == '18' || data.type == '21') url = '/pack-invitation/pages/detail_owner_invitation11'; 174 if(data.type == '18' || data.type == '21') url = '/pack-invitation/pages/detail_owner_invitation11';
173 if(data.type == '19' || data.type == '22') url = '/pack-invitation/pages/detail_owner_invitation12'; 175 if(data.type == '19' || data.type == '22') url = '/pack-invitation/pages/detail_owner_invitation12';
174 if(data.type == '20') url = '/pack-invitation/pages/detail_owner_invitation10'; 176 if(data.type == '20') url = '/pack-invitation/pages/detail_owner_invitation10';
@@ -222,7 +222,7 @@ @@ -222,7 +222,7 @@
222 点击了解更多会员优惠政策 222 点击了解更多会员优惠政策
223 </view> 223 </view>
224 <text class="businessBox"> 224 <text class="businessBox">
225 - 周到安排提供技术支持<text bindtap="callPhone" data-phone="4000009690">4000009690</text>,餐厅入驻请点击<text bindtap="gotoJoinSeller" style="text-decoration: underline;">这里</text> 225 + 周到安排提供技术支持<text bindtap="callPhone" data-phone="4000009690">4000009690</text>,<text bindtap="gotoJoinSeller" style="text-decoration: underline;">我是商家,我要试用</text>
226 </text> 226 </text>
227 </view> 227 </view>
228 <view class="all-button flex-lr between"> 228 <view class="all-button flex-lr between">