Commit d3dea2ef3fef2b5f81ab41e5c930d6b77ea5941b

Authored by pengye
1 parent 1c2bbaa1

邀请函商务宴请第一版、婚宴第一版

@@ -741,4 +741,17 @@ @@ -741,4 +741,17 @@
741 background: linear-gradient(104.24deg, #4c8dad -57.47%, #0143a3 55.72%, #42a5ff 148.72%); 741 background: linear-gradient(104.24deg, #4c8dad -57.47%, #0143a3 55.72%, #42a5ff 148.72%);
742 bottom: 10%; 742 bottom: 10%;
743 color: #fff; 743 color: #fff;
  744 +}
  745 +
  746 +.mymodal {
  747 + top: 30% !important;
  748 + width: 80% !important;
  749 + margin: 0 auto !important;
  750 + left: 0 !important;
  751 + right: 0 !important;
  752 + z-index: 250;
  753 +}
  754 +
  755 +.mymodal .mymodal-content {
  756 + height: auto !important;
744 } 757 }
  1 +// pack-invitation/pages/detail_owner_invitation11.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 + seller: {},
  30 + priceInfo: '',
  31 + scoreInfo: '',
  32 + certificate: '',
  33 + dataStr: Date.now() * 1 / 1000,
  34 + swich_phone: '0', //是否显示前台电话
  35 + is_comments: '0',
  36 + is_user_comments: false, //是否评价过 true有评价 false没评价
  37 + tableinfo: [], //桌子列表
  38 + StyleType: '', //邀请函模板
  39 + showMoreTip: true, //显示滑动查看更多
  40 + hasValueOrder: false, //商家是否开通提前点餐功能
  41 + hasValueCertificate: false, //商家是否开通优惠券功能
  42 + hasValueRecharge: false, //商家是否开通充值功能
  43 + hasValueBroadcast: false, //商家是否能播报,只有极速版不能播报
  44 + _attentionAnim: {},
  45 + isPlay: '1', //语音播报 1运行 2暂停
  46 + paymentStatus: '', //定金支付状态 1支付 0未支付
  47 + reserveData: {}, //自定义图文数据
  48 + toastBool: false, //支付定金提示框
  49 + toastText: '', //支付定金提示文字
  50 + paymentId: '', //定金id
  51 + wxml: null,
  52 + imgSrc: '', //canvas图片地址
  53 + colors: '', //导航栏颜色
  54 + couponData: '', //评价赠送优惠券数据
  55 + timeList: [], //餐段时间
  56 + temp_ddate: '', //展示的到店时间
  57 + lite_style: '', //小程序转发卡片样式
  58 + isMoreBtn: '', //再次预订按钮
  59 + isPaymenBtn: '', //支付定金按钮
  60 + isShareItem: '', //转发客人按钮
  61 + isVoice: '', //播报按钮
  62 + openOrder: '', //点餐
  63 + isComments: '', //券和充值
  64 + bookType: '', //用餐类型 1婚宴模板1 2商务宴模板1
  65 + urlsArr: [], //包间预览图片、餐厅logo、餐厅首图列表
  66 + roomimage: [], //包间信息列表
  67 + activeTitle: '1', //选择的标题 1优惠券 2充值 3评价
  68 + titleList: [], //优惠券、充值、评价标题数组
  69 + },
  70 + tablestr: '', //桌位id拼接
  71 + screenHeight: '',
  72 + attentionAnim: {},
  73 + audioCtx: '', //播报
  74 + timers: null, // 动画定时器
  75 + n: 0,
  76 + modal: '',
  77 + /**
  78 + * 生命周期函数--监听页面加载
  79 + */
  80 + onLoad(options) {
  81 + this.id = options.id
  82 + let param = {
  83 + options: options,
  84 + hasOwner: options.hasSellerShare == 1, //是否为发起人
  85 + }
  86 + param.tpls = [TP.tpls(options.tplid)]
  87 + let bookType = options.bookType;
  88 + console.log('param', param);
  89 + console.log('options', options);
  90 + this.setData({
  91 + ...param,
  92 + bookType
  93 + })
  94 + mta.Page.init({
  95 + "appID": "500667280",
  96 + "eventID": "500667287",
  97 + "statPullDownFresh": true,
  98 + "statShareApp": true,
  99 + "statReachBottom": true,
  100 + "lauchOpts": options, //渠道分析
  101 + });
  102 + const systemInfo = wx.getSystemInfoSync();
  103 + this.screenHeight = systemInfo.windowHeight; // 获取屏幕高度
  104 + this.modal = this.selectComponent("#payModal"); //通过给组件所起的id调用组件
  105 + wx.onUserCaptureScreen((res) => {
  106 + this.modal.showModal()
  107 + })
  108 + },
  109 + //预览图片
  110 + previewImage(e) {
  111 + const item = e.target.dataset;
  112 + wx.previewImage({
  113 + current: item.url,
  114 + urls: item.imgs,
  115 + })
  116 + },
  117 + // 锚点定位
  118 + gotoModule(e) {
  119 + const type = e.currentTarget.dataset['type'];
  120 + const query = wx.createSelectorQuery()
  121 + query.select('#module' + type).boundingClientRect()
  122 + query.selectViewport().scrollOffset()
  123 + query.exec(function (res) {
  124 + wx.pageScrollTo({
  125 + scrollTop: res[0].top - 150
  126 + });
  127 + });
  128 + },
  129 + // 打开截屏弹框
  130 + showModal() {
  131 + this.modal.showModal()
  132 + },
  133 + // 关闭截屏弹框
  134 + closeModal() {
  135 + this.modal.closeModal()
  136 + },
  137 + // 页面滚动事件
  138 + onPageScroll: function (event) {
  139 + if (event.scrollTop > 150) { //当页面滚动到某个位置时(这里设置为50),将导航栏背景颜色设置为白色
  140 + this.setData({
  141 + show_white: true
  142 + })
  143 + } else {
  144 + this.setData({
  145 + show_white: false
  146 + })
  147 + }
  148 + const scrollTop = event.scrollTop * 1 + this.screenHeight - 80; // 获取滚动的距离
  149 + if (scrollTop < this.screenHeight) {
  150 + this.setData({
  151 + showMoreTip: true
  152 + });
  153 + } else {
  154 + this.setData({
  155 + showMoreTip: false
  156 + });
  157 + }
  158 + },
  159 + // 点击了解更多会员优惠政策
  160 + gotoFavourableList() {
  161 + let url = util.http_build_query({
  162 + sellerName: this.data.seller.name,
  163 + sellerid: this.data.seller.sid,
  164 + oid: this.data.detail.id,
  165 + types: '1'
  166 + }, '/pack-cookbook/pages/favourableList')
  167 + wx.navigateTo({
  168 + url
  169 + })
  170 + },
  171 + // 去评价
  172 + evaluateFun() {
  173 + let url = util.http_build_query({
  174 + sellerName: this.data.seller.name,
  175 + sellerid: this.data.seller.sid,
  176 + oid: this.data.detail.id,
  177 + types: '1',
  178 + previousPage: '1',
  179 + }, '/pages/pinglun/createOpinion')
  180 + wx.navigateTo({
  181 + url
  182 + })
  183 + },
  184 + /**
  185 + * 用户点击右上角分享
  186 + */
  187 + onShareAppMessage: function () {
  188 + return this.sharesetting();
  189 + },
  190 + /**
  191 + * 监听用户点击分享到朋友圈按钮的操作
  192 + */
  193 + onShareTimeline() {
  194 + return this.sharesetting();
  195 + },
  196 + /**
  197 + * 生命周期函数--监听页面显示
  198 + */
  199 + onShow: function () {
  200 + this.setData({
  201 + titleList: []
  202 + })
  203 + this.getDetail()
  204 + this.getText()
  205 + this.getPaymentStatus()
  206 + },
  207 + // 复制微信号
  208 + copyWeChat() {
  209 + if (this.data.staffinfo.wechat) {
  210 + wx.setClipboardData({
  211 + data: this.data.staffinfo.wechat,
  212 + success(res) {
  213 + wx.getClipboardData({
  214 + success(res) {
  215 + console.log(res.data)
  216 + }
  217 + })
  218 + }
  219 + })
  220 + } else {
  221 + console.log('无微信号')
  222 + }
  223 + },
  224 + // 拨打电话
  225 + call(e) {
  226 + const phone = e.currentTarget.dataset['phone'];
  227 + wx.reportMonitor('1012', 1)
  228 + wx.makePhoneCall({
  229 + phoneNumber: phone
  230 + })
  231 + },
  232 + // 跳转到商家入驻页
  233 + gotoJoinSeller() {
  234 + wx.navigateTo({
  235 + url: util.http_build_query({
  236 + laiyuan: '邀请函'
  237 + }, '/pages/customer/joinSeller')
  238 + })
  239 + },
  240 + // 导航
  241 + looklocation: function () {
  242 + wx.reportMonitor('1015', 1)
  243 + wx.openLocation({
  244 + latitude: Number(this.data.seller.lat),
  245 + longitude: Number(this.data.seller.long),
  246 + scale: 17,
  247 + address: this.data.seller.addr,
  248 + success: function (res) {
  249 + console.log(res)
  250 + }
  251 + })
  252 + },
  253 + // 获取包间图片列表
  254 + getroomimage(sellerid, uid) {
  255 + App.Tables.GetTablesPhoto({
  256 + sellerid,
  257 + tableids: this.tablestr
  258 + }).then((json) => {
  259 + if (json.ret == 200) {
  260 + this.setData({
  261 + roomimage: json.data
  262 + })
  263 + var urlsArr = [];
  264 + json.data.forEach((v, i) => {
  265 + urlsArr.push(v.url);
  266 + })
  267 + this.setData({
  268 + urlsArr
  269 + })
  270 + this.getstaffinfo(uid, sellerid);
  271 + console.log('包间图片地址urlsArr', urlsArr)
  272 + console.log('包间信息roomimage', json.data)
  273 + }
  274 + })
  275 + },
  276 + // 预览图片
  277 + lookImgs(e) {
  278 + const url = e.currentTarget.dataset['url'];
  279 + const imgs = e.currentTarget.dataset['imgs'];
  280 + let urls = imgs ? imgs : [url]
  281 + wx.previewImage({
  282 + current: url,
  283 + urls,
  284 + })
  285 + },
  286 + // 获取店铺详情
  287 + getDetail() {
  288 + App.Reserve.Detail({
  289 + openid: getApp().openid,
  290 + rid: this.data.options.id
  291 + }).then(res => {
  292 + let tablesText = '', //桌子信息
  293 + deskStr = '',
  294 + tableNum = 0;
  295 + let tableinfo = util.determine(res.data.tableinfo);
  296 + console.log('tableinfo', tableinfo);
  297 + res.data.tables.forEach((t, i) => {
  298 + tableNum += t.table_pnum * 1
  299 + tablesText += t.rname + t.name + (i == (res.data.tables.length - 1) ? '' : '、');
  300 + deskStr += t.name + (i == (res.data.tables.length - 1) ? '' : '、');
  301 + })
  302 + let tabaleids = [];
  303 + res.data.tables.forEach(t => {
  304 + tabaleids.push(t.id);
  305 + })
  306 + this.tablestr = tabaleids.toString();
  307 + let reserev = RS.reserve(res.data)
  308 + let dateSmart = util.unixtoTime(reserev.ddate, 'YYYY-MM-DD 星期WW');
  309 + let yearMonthDay = util.unixtoTime(reserev.ddate, 'YYYY年MM月DD日')
  310 + let yearMonth = util.unixtoTime(reserev.ddate, 'MM月DD日')
  311 + let dateStr = util.unixtoTime(reserev.ddate, 'HH点')
  312 + let dateStrDivide = util.unixtoTime(reserev.ddate, 'II分')
  313 + console.log('dateSmart', dateSmart);
  314 + let detail = this.formatDatail(reserev, dateSmart)
  315 + this.setData({
  316 + detail,
  317 + tableNum,
  318 + tableinfo,
  319 + is_user_comments: res.data.is_user_comments,
  320 + 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'),
  321 + openOrder: (detail && detail.status != '4' && this.data.options.isOrder != '1' && detail.seller && detail.seller.is_open_order == 1) ? '1' : '0',
  322 + seller: {
  323 + daily: reserev.seller.daily,
  324 + name: reserev.seller.sellername,
  325 + sid: reserev.sid,
  326 + date: dateSmart,
  327 + tablesText,
  328 + addr: reserev.seller.real_address || reserev.seller.map_address,
  329 + image: reserev.image_url,
  330 + hasOwner: true,
  331 + type: reserev.type,
  332 + is_set_ddate: reserev.is_set_ddate,
  333 + hasUpTime: reserev.type == 1 && reserev.hasRunning && reserev.status != 2,
  334 + tel: reserev.seller.seller_tel.split(','),
  335 + soltName: reserev.soltName,
  336 + dateTime: util.unixtoTime(reserev.ddate, 'HH:II'),
  337 + time: util.unixtoTime(reserev.ddate, '星期WW HH:II'),
  338 + lat: reserev.seller.lat,
  339 + long: reserev.seller.long,
  340 + yearMonthDay,
  341 + yearMonth,
  342 + dateStr,
  343 + deskStr,
  344 + dateStrDivide: dateStrDivide == '00分' ? '' : dateStrDivide,
  345 + seller_tel: reserev.seller.seller_tel,
  346 + phone: reserev.phone,
  347 + }
  348 + })
  349 + console.log('reserev信息', reserev);
  350 + console.log('seller信息', this.data.seller);
  351 + console.log('detail信息', this.data.detail);
  352 + setTimeout(() => {
  353 + this.getroomimage(reserev.sid, res.data.uid)
  354 + this.getSellerVersionFun(reserev.sid);
  355 + }, 0);
  356 + }).catch(res => {
  357 + console.log(res, '详情请求失败');
  358 + })
  359 + },
  360 + // 获取商家版本,不是超能版或者没有开通对应模块,不显示
  361 + getSellerVersionFun(sellerid) {
  362 + App.SellerVersion.GetSellerVersion({
  363 + sellerid
  364 + }).then((res) => {
  365 + let data = res.data;
  366 + console.log('版本列表', data);
  367 + if (data && data.length > 0) {
  368 + data.sort((a, b) => b.cdate * 1 - a.cdate * 1);
  369 + // 获取店铺当前版本 (cdate最大最后一个充入的 && 当前时间有效 && 当前版本)
  370 + let obj = data.find(item => item.vtype == 1 || item.vtype == 2 || item.vtype == 4);
  371 + console.log('当前版本', {
  372 + ...obj
  373 + });
  374 + // 提前点餐功能:超能版 || 有提前点餐模块
  375 + const hasValueOrder = obj.vtype == '1' || data.some(item => item.vid == '6');
  376 + // 优惠券功能:超能版 || 高级版 || 有优惠券模块
  377 + const hasValueCertificate = obj.vtype == '1' || obj.vtype == '4' || data.some(item => item.vid == '8');
  378 + // 充值功能:超能版 || 有充值模块
  379 + const hasValueRecharge = obj.vtype == '1' || data.some(item => item.vid == '9');
  380 + // 播报功能:超能版 || 标准版 || 标准版首年 || 高级版
  381 + const hasValueBroadcast = obj.vtype == '1' || obj.vid == '4' || obj.vid == '13' || obj.vtype == '4';
  382 + this.setData({
  383 + hasValueOrder,
  384 + hasValueCertificate,
  385 + hasValueRecharge,
  386 + hasValueBroadcast,
  387 + })
  388 + }
  389 + })
  390 + },
  391 + // 通过预订ID查收定金详情
  392 + getPaymentStatus() {
  393 + App.Reserve.GetReserveDepositByRid({
  394 + rid: this.data.options.id
  395 + }).then(res => {
  396 + if (res.ret == 200 && res.data && res.data.length > 0) {
  397 + let data = res.data[0];
  398 + let paymentStatus = data.trade_state == 'SUCCESS' ? '1' : '0';
  399 + let options = this.data.options
  400 + this.setData({
  401 + paymentId: data.id,
  402 + paymentStatus,
  403 + isPaymenBtn: options.isOrder != '1' && data.id && paymentStatus == '0' && options.hasSellerShare == '1' && options.isDeposit == '1',
  404 + })
  405 + }
  406 + })
  407 + },
  408 + // 获取自定义图文内容
  409 + getText() {
  410 + App.Reserve.GetReserveImgText({
  411 + rid: this.data.options.id
  412 + }).then(res => {
  413 + if (res.ret == 200 && res.data) {
  414 + let data = res.data;
  415 + let content = util.determine(data.content)
  416 + console.log('自定义图文内容content', content);
  417 + this.setData({
  418 + reserveData: {
  419 + title: data.title || '',
  420 + content,
  421 + }
  422 + })
  423 + }
  424 + })
  425 + },
  426 + // 点击支付定金
  427 + paymentFun() {
  428 + let that = this;
  429 + App.PayOnline.CombineTransactionsByDeposit({
  430 + id: this.data.paymentId,
  431 + openid: getApp().openid,
  432 + }).then(res => {
  433 + if (res.ret == 200) {
  434 + wx.requestPayment({
  435 + timeStamp: res.data.timeStamp + '',
  436 + nonceStr: res.data.nonceStr,
  437 + package: res.data.package,
  438 + signType: res.data.signType,
  439 + paySign: res.data.paySign,
  440 + success(ress) {
  441 + console.log('微信支付结果', ress);
  442 + if (ress.errMsg == 'requestPayment:ok') {
  443 + console.log('支付成功', ress);
  444 + that.setData({
  445 + paymentStatus: '1',
  446 + toastBool: true,
  447 + toastText: '支付成功'
  448 + })
  449 + that.hideToast();
  450 + return
  451 + }
  452 + console.log('支付失败1', ress);
  453 + that.setData({
  454 + toastBool: true,
  455 + toastText: '支付失败,请重新支付'
  456 + })
  457 + that.hideToast();
  458 + },
  459 + fail(ress) {
  460 + console.log('支付失败2', ress);
  461 + that.setData({
  462 + toastBool: true,
  463 + toastText: '支付失败,请重新支付'
  464 + })
  465 + that.hideToast();
  466 + },
  467 + })
  468 + } else {
  469 + wx.showToast({
  470 + title: res.msg,
  471 + icon: 'none',
  472 + })
  473 + }
  474 + })
  475 + },
  476 + // 关闭支付失败或者成功弹框
  477 + hideToast() {
  478 + setTimeout(() => {
  479 + this.setData({
  480 + toastBool: false
  481 + })
  482 + }, 1500)
  483 + },
  484 + // 客户经理获取基本信息
  485 + getstaffinfo(uid, sid) {
  486 + App.Activity.GetCustomerActivityBaseinfo({
  487 + sellerid: this.data.detail.seller.id,
  488 + uid
  489 + }).then((json) => {
  490 + if (json.ret == 200) {
  491 + console.log('经理信息staffinfo', json.data)
  492 + this.setData({
  493 + staffinfo: json.data
  494 + })
  495 + this.getSellerTemplateConfFun(sid);
  496 + }
  497 + })
  498 + },
  499 + // 提前点餐
  500 + cookbook() {
  501 + if (this.data.detail.order && this.data.detail.order.cookbooklist.length > 0) {
  502 + let data = {
  503 + rid: this.id,
  504 + oid: this.data.detail.order.id,
  505 + sellerName: this.data.seller.name,
  506 + sid: this.data.seller.sid,
  507 + identity: '1',
  508 + hasSuccess: '1',
  509 + }
  510 + wx.navigateTo({
  511 + url: `/pack-cookbook/pages/success_new?hasSuccess=${data.hasSuccess}&identity=${data.identity}&oid=${data.oid}&rid=${data.rid}&sellerName=${data.sellerName}&sid=${data.sid}`,
  512 + })
  513 + } else {
  514 + App.Advance.CreateOrder({
  515 + rid: this.id,
  516 + openid: getApp().openid,
  517 + }).then(res => {
  518 + if (res.ret != 200) {
  519 + return util.toast(res.msg, 'none')
  520 + }
  521 + wx.navigateTo({
  522 + url: util.http_build_query({
  523 + rid: this.id,
  524 + oid: res.data.id,
  525 + sid: res.data.sellerid,
  526 + sellerName: this.data.seller.name,
  527 + identity: '1',
  528 + }, '/pack-cookbook/pages/index_new')
  529 + });
  530 + })
  531 + }
  532 + },
  533 + // 生成海报
  534 + painterBtn(img, sellerName, date, time) {
  535 + img = img.replace(/^http:/, "https:");
  536 + this.setData({
  537 + wxml: canvas({
  538 + imgUrl: img || 'https://nosqn.colorcun.com/reserve/images/3x/%E6%9A%82%E6%97%A0.png',
  539 + sellerName,
  540 + date,
  541 + time,
  542 + })
  543 + })
  544 + },
  545 + onImgOK(e) {
  546 + this.setData({
  547 + imgSrc: e.detail.path
  548 + })
  549 + console.log('海报生成成功', this.data.imgSrc);
  550 + },
  551 + // 分享
  552 + sharesetting() {
  553 + wx.reportMonitor('1017', 1)
  554 + this.closeModal()
  555 + if (this.data.options.isOrder == '1' && this.data.detail.status != '4') {
  556 + return {
  557 + title: '推荐' + this.data.seller.name + ',点击可查看详情并导航到店',
  558 + path: util.http_build_query({
  559 + id: this.data.detail.seller.id
  560 + }, '/pages/reserve/shopHome'),
  561 + imageUrl: this.data.detail.seller.seller_image || 'http://nosqn.colorcun.com/reserve/images/3x/%E6%9A%82%E6%97%A0.png',
  562 + }
  563 + } else {
  564 + let parmdata = {
  565 + id: this.id,
  566 + fromid: getApp().openid,
  567 + hasInvitation: 1,
  568 + tplid: this.data.options.tplid
  569 + }
  570 + if (this.data.options.uid) {
  571 + parmdata.uid = this.data.options.uid;
  572 + }
  573 + return {
  574 + title: '我已订好' + this.data.seller.name + ',点击可查看详情并导航到店',
  575 + path: util.http_build_query(parmdata, '/pages/customer/detail_owner_invitation_new'),
  576 + imageUrl: this.data.imgSrc || 'http://nosqn.colorcun.com/reserve/images/3x/%E6%9A%82%E6%97%A0.png',
  577 + }
  578 + }
  579 + },
  580 + // 修改detail数据
  581 + formatDatail(details, dateSmart) {
  582 + details.rdateStr = dateSmart;
  583 + details.tableFirst = details.tables[0].name;
  584 + if (details.tables.length > 1) {
  585 + details.tableSubInfo = '等' + (details.tables.length) + '个' +
  586 + (details.tables[0].tid == 2 ? '包间' : '');
  587 + }
  588 + details.rname = details.rname.trim()
  589 + if (details.rname && details.sex != 3) {
  590 + details.rnameStr = details.rname + (details.sex == 1 ? '先生' : details.sex == 2 ? '女士' : details.sex == 4 ? '贵宾' : '')
  591 + } else if (!details.rname && details.sex == 4) {
  592 + details.rnameStr = '贵宾'
  593 + } else {
  594 + details.rnameStr = details.rname
  595 + }
  596 + details.eatStr = '邀请您共进晚餐';
  597 + let hi = util.unixtoTime(details.ddate, 'HHII');
  598 + if (hi < '10:00') {
  599 + details.eatStr = '邀请您共进早餐';
  600 + } else if (hi < '15:00') {
  601 + details.eatStr = '邀请您共进午餐';
  602 + }
  603 + return details;
  604 + },
  605 + // 获取商家设置营销信息
  606 + getSellerTemplateConfFun(sid) {
  607 + App.Seller.GetSellerTemplateConf({
  608 + sid
  609 + }).then(res => {
  610 + let data = res.data
  611 + let couponList = []
  612 + let StyleType, home, chef, marketing, coupon, reserve, swich_phone, is_comments, signboard, store;
  613 + chef = util.determine(data.chef);
  614 + reserve = util.determine(data.reserve);
  615 + marketing = util.determine(data.marketing);
  616 + signboard = util.determine(data.signboard);
  617 + store = util.determine(data.store);
  618 + home = util.determine(data.home);
  619 + StyleType = data.type;
  620 + swich_phone = reserve && reserve.swich_phone ? reserve.swich_phone : '';
  621 + if (store) store.content = (store.is_introduce_all == '1' && store.content) ? util.determine(store.content) : '';
  622 + if (chef) chef.content = (chef.is_introduce_all == '1' && chef.content) ? util.determine(chef.content) : '';
  623 + if (signboard) signboard.content = (signboard.is_introduce_all == '1' && signboard.content) ? util.determine(signboard.content) : '';
  624 + if (reserve) reserve.content = (reserve.is_introduce_all == '1' && reserve.content) ? util.determine(reserve.content) : '';
  625 + if (home) home.image = (home && home.image && (!home.id_first_image || home.id_first_image != '0')) ? home.image : '';
  626 + if (marketing) {
  627 + marketing.logo = (marketing.logo && (!marketing.is_logo || marketing.is_logo != '0')) ? marketing.logo : '';
  628 + is_comments = marketing.is_comments ? marketing.is_comments : '';
  629 + coupon = marketing.coupon_data ? util.determine(marketing.coupon_data) : '';
  630 + let info = marketing.coupon_data_comments ? util.determine(marketing.coupon_data_comments) : '';
  631 + let couponDataId = info && info.length > 0 ? info[0].id : {}
  632 + // 根据券ID获取评价赠送的券详情
  633 + if (couponDataId) this.getEvaluateFun(couponDataId)
  634 + }
  635 + // is_cash 代金券 is_discount折扣券 is_dish菜品券 只有代金券有几折显示
  636 + if (coupon && util.getType(coupon) == 'object') {
  637 + couponList.push({
  638 + id: coupon.id
  639 + });
  640 + }
  641 + if (coupon && util.getType(coupon) == 'array') {
  642 + if (coupon.length > 0) {
  643 + coupon.forEach(item => {
  644 + couponList.push({
  645 + id: item.id
  646 + })
  647 + })
  648 + }
  649 + }
  650 + // 根据券ID获取券详情
  651 + this.getActivityByIdFun(couponList, couponList.length)
  652 + // 根据充值ID获取充值详情
  653 + if (marketing && marketing.is_recharge && marketing.is_recharge == '1' && marketing.recharge_data) {
  654 + this.getRechargeDetail(marketing.recharge_data.id)
  655 + }
  656 + if (store && store.images && store.images.length > 0) store.images = util.determine(store.images);
  657 + if (reserve && reserve.park_info_images && reserve.park_info_images.length > 0) reserve.park_info_images = util.determine(reserve.park_info_images);
  658 + if (signboard && signboard.images && signboard.images.length > 0) signboard.images = util.determine(signboard.images);
  659 + if (reserve) reserve = this.processInfo(reserve, '1')
  660 + if (store) store = this.processInfo(store, '2')
  661 + if (signboard) signboard = this.processInfo(signboard, '3')
  662 + if (chef) chef = this.processInfo(chef, '4')
  663 + let solt = this.data.detail.ddate_solt;
  664 + let lunchDis = this.data.seller.daily;
  665 + let timeList = []
  666 + var morningStr = lunchDis.morning.split("-");
  667 + var morningArr = lunchDis.morning ? this.computeHour(morningStr[0], morningStr[1], 30) : [];
  668 + var noonStr = lunchDis.noon.split("-");
  669 + var noonArr = lunchDis.noon ? this.computeHour(noonStr[0], noonStr[1], 30) : [];
  670 + var nightStr = lunchDis.night.split("-");
  671 + var nightArr = lunchDis.night ? this.computeHour(nightStr[0], nightStr[1], 30) : [];
  672 + timeList = solt == '1' ? morningArr : solt == '2' ? noonArr : solt == '3' ? nightArr : []
  673 + let bookType = this.data.bookType;
  674 + let urlsArr = this.data.urlsArr
  675 + marketing.wecomle = (reserve && reserve.swich_welcome == '1' && marketing && marketing.wecomle) ? marketing.wecomle : ''
  676 + if (bookType == '1' && home && home.image) urlsArr.push(home.image)
  677 + if (bookType == '1' && marketing && marketing.logo) urlsArr.push(marketing.logo)
  678 + let obj = {
  679 + chef,
  680 + marketing,
  681 + home,
  682 + reserve,
  683 + signboard,
  684 + store,
  685 + swich_phone,
  686 + StyleType,
  687 + lite_style: data.lite_style,
  688 + timeList,
  689 + is_comments,
  690 + isMoreBtn: marketing && marketing.is_online_book == '1' && this.data.options.onlineReserve == '1',
  691 + isShareItem: this.data.options.isOrder != '1' && marketing && marketing.is_transpond == '1',
  692 + isComments: is_comments == '1' && marketing && marketing.is_comments_coupon == '1',
  693 + colors: bookType == '1' ? '#7c191e' : bookType == '2' ? '#000' : '',
  694 + urlsArr
  695 + }
  696 + console.log('获取数据GetSellerTemplateConf--------------------', {
  697 + ...obj
  698 + });
  699 + this.setData({
  700 + ...obj
  701 + })
  702 + // 开启语音播报
  703 + if (reserve && reserve.swich_voice == '1') {
  704 + this.setData({
  705 + isPlay: '1',
  706 + isVoice: '1',
  707 + })
  708 + this.textToSpeechFun(reserve.voice_info)
  709 + }
  710 + // 获取转发客人卡片设置
  711 + let detailInfo = this.data.detail;
  712 + if (data.lite_style == '0') {
  713 + this.setData({
  714 + imgSrc: detailInfo.seller.seller_image
  715 + })
  716 + } else {
  717 + let d = detailInfo.ddate_solt;
  718 + let time1 = util.unixtoTime(detailInfo.ddate, '周WW') + ' ' + (d == '1' ? '早上' : d == '2' ? '中午' : d == '3' ? '晚上' : '');
  719 + let time2;
  720 + if (this.data.temp_ddate) {
  721 + time2 = util.unixtoTime(detailInfo.ddate, '周WW') + this.data.temp_ddate
  722 + } else {
  723 + time2 = util.unixtoTime(detailInfo.ddate, '周WW HH:II')
  724 + }
  725 + let time3 = util.unixtoTime(detailInfo.ddate, '周WW') + ' ' + (d == '1' ? '早餐' : d == '2' ? '午餐' : d == '3' ? '晚餐' : '');
  726 + let time = data.lite_style == '1' ? time1 : data.lite_style == '2' ? time2 : data.lite_style == '3' ? time3 : '';
  727 + this.painterBtn(
  728 + detailInfo.seller.seller_image,
  729 + detailInfo.seller.sellername,
  730 + util.unixtoTime(detailInfo.ddate, 'MM月DD日'),
  731 + time
  732 + );
  733 + }
  734 + }).catch(res => {
  735 + console.log('GetSellerTemplateConf请求失败');
  736 + })
  737 + },
  738 + // 点击商家有礼
  739 + gotoSellerGift() {
  740 + let url = util.http_build_query({
  741 + id: this.data.detail.id,
  742 + }, '/pages/reserve/sellerGift')
  743 + wx.navigateTo({
  744 + url
  745 + })
  746 + },
  747 + // 再次预订
  748 + secondbook() {
  749 + wx.reportMonitor('1013', 1)
  750 + wx.redirectTo({
  751 + url: '/pages/reserve/shopHome?id=' + this.data.detail.seller.id
  752 + })
  753 + },
  754 + // 文字转语音的方法
  755 + textToSpeechFun(voice_info) {
  756 + console.log('voice_info', voice_info);
  757 + let that = this;
  758 + let data = this.data;
  759 + data.detail.rname = data.detail.rname.trim()
  760 + let str = data.detail.sex == 1 ? '先生' : data.detail.sex == 2 ? '女士' : data.detail.sex == 4 ? '贵宾' : '';
  761 + let charArray = data.seller.deskStr.split('');
  762 + let modifiedArray = charArray.map(char => char + ' ');
  763 + let resultString = modifiedArray.join('').slice(0, -1);
  764 + const replacements = {
  765 + "{年月日}": data.seller.yearMonthDay,
  766 + "{月日}": data.seller.yearMonth,
  767 + "{餐段}": data.seller.soltName,
  768 + "{就餐时间}": data.seller.dateStr + data.seller.dateStrDivide,
  769 + "{包间名}": resultString,
  770 + "{区域名+包间名}": data.seller.tablesText,
  771 + "{经理名字}": data.staffinfo.name,
  772 + "{客人姓名}": data.detail.rname ? (data.detail.rname + str) : str == '贵宾' ? '贵宾' : '',
  773 + "{预订日期}": data.seller.yearMonthDay,
  774 + "{桌位}": resultString,
  775 + };
  776 + let newStr = voice_info.replace(/{预订日期}|{桌位}|{年月日}|{月日}|{餐段}|{就餐时间}|{包间名}|{区域名\+包间名}|{经理名字}|{客人姓名}/g, function (matched) {
  777 + return replacements[matched];
  778 + });
  779 + console.log('文字转语音newStr', newStr);
  780 + plugin.textToSpeech({
  781 + lang: "zh_CN",
  782 + tts: true,
  783 + content: newStr,
  784 + success: function (res) {
  785 + that.filename = res.filename
  786 + that.speech()
  787 + },
  788 + fail: function (res) {
  789 + console.log("fail tts", res)
  790 + }
  791 + })
  792 + },
  793 + // 开启语音播报
  794 + speech() {
  795 + var attentionAnim = wx.createAnimation({
  796 + duration: 1000,
  797 + timingFunction: 'linear',
  798 + })
  799 + this.attentionAnim = attentionAnim
  800 + this.setData({
  801 + _attentionAnim: attentionAnim,
  802 + attentionAnim: attentionAnim.export()
  803 + })
  804 + this.audioCtx = wx.createInnerAudioContext()
  805 + this.audioCtx.src = this.filename
  806 + this.audioCtx.loop = true
  807 + this.audioCtx.play()
  808 + this.audioCtx.onPlay((e) => {
  809 + this.setData({
  810 + isPlay: this.audioCtx.paused ? '2' : '1'
  811 + })
  812 + })
  813 + this.audioCtx.onPause((e) => {
  814 + this.setData({
  815 + isPlay: this.audioCtx.paused ? '2' : '1'
  816 + })
  817 + })
  818 + clearInterval(this.timers)
  819 + this.animation()
  820 + },
  821 + // 持续旋转动画
  822 + animation() {
  823 + let that = this;
  824 + var time = setInterval(function () {
  825 + this.n = this.n + 1;
  826 + let attentionAnim = that.data._attentionAnim
  827 + attentionAnim.rotate(180 * (this.n)).step()
  828 + that.setData({
  829 + attentionAnim: attentionAnim.export(),
  830 + })
  831 + }.bind(this), 1000)
  832 + this.timers = time;
  833 + },
  834 + // 暂停/继续播放
  835 + stopMusic() {
  836 + if (this.data.isPlay == '2') { // 2 暂停状态
  837 + console.log("开始");
  838 + clearInterval(this.timers)
  839 + this.animation()
  840 + this.audioCtx.play() //开始
  841 + return;
  842 + }
  843 + if (this.data.isPlay == '1') { // 1 运行状态
  844 + console.log('暂停');
  845 + if (this.n % 2 != 0) {
  846 + this.n = this.n + 1;
  847 + let attentionAnim = this.data._attentionAnim;
  848 + attentionAnim.rotate(180 * this.n).step();
  849 + this.setData({
  850 + attentionAnim: attentionAnim.export(),
  851 + })
  852 + }
  853 + clearInterval(this.timers)
  854 + this.audioCtx.pause() //暂停
  855 + return;
  856 + }
  857 + },
  858 + // 根据充值ID获取充值详情
  859 + getRechargeDetail(id) {
  860 + App.Activity.GetNewRecharge({
  861 + id
  862 + }).then(res => {
  863 + let detail = res.data
  864 + let exp_date = res.data.exp_date ? JSON.parse(res.data.exp_date) : ''
  865 + let recharge_list = res.data.recharge_list ? JSON.parse(res.data.recharge_list) : ''
  866 + let priceInfo, scoreInfo, certificate;
  867 + detail.recharge_list = recharge_list;
  868 + detail.exp_date = exp_date;
  869 + if (recharge_list.is_price == '1') priceInfo = '赠送' + recharge_list.price + '元余额';
  870 + if (recharge_list.is_score == '1') scoreInfo = '赠送' + recharge_list.score + '积分';
  871 + if (recharge_list.is_coupons == '1' && recharge_list.coupons_names.length > 0) certificate = recharge_list.coupons_names.join('、');
  872 + let recharge_data = (this.data.dataStr < detail.etime * 1 && detail.is_open == '1') ? detail : ''
  873 + console.log('邀请函--------------充值', recharge_data);
  874 + let entry = this.data.titleList
  875 + if (this.data.hasValueRecharge && this.data.marketing.is_recharge == '1' && recharge_data) {
  876 + entry.push({
  877 + id: 2,
  878 + title: '会员充值优惠'
  879 + })
  880 + if (entry.length > 0) {
  881 + entry.sort((a, b) => a.id - b.id);
  882 + }
  883 + recharge_data.timeStr = util.unixtoTime(recharge_data.stime, 'YYYY-MM-DD') + ' - ' + util.unixtoTime(recharge_data.etime, 'YYYY-MM-DD')
  884 + }
  885 + this.setData({
  886 + titleList: entry,
  887 + activeTitle: entry.length > 0 ? entry[0].id : '',
  888 + recharge_data,
  889 + scoreInfo,
  890 + priceInfo,
  891 + certificate
  892 + })
  893 + })
  894 + },
  895 + // 选择标题
  896 + checkTitleFun(e) {
  897 + console.log('e.currentTargete.currentTarget', e.currentTarget);
  898 + let activeTitle = e.currentTarget.dataset['type'];
  899 + this.setData({
  900 + activeTitle
  901 + })
  902 + },
  903 + // 获取评价赠送的券最新详情
  904 + getEvaluateFun(id) {
  905 + App.Activity.GetActivityById({
  906 + id
  907 + }).then(res => {
  908 + if (res.data.length > 0) {
  909 + let couponData = res.data[0]
  910 + couponData.use = couponData.use ? util.determine(couponData.use) : '';
  911 + couponData.exp_date = couponData.exp_date ? util.determine(couponData.exp_date) : '';
  912 + // showCoupon 代表赠送的券没过有效期 && 是开启状态
  913 + couponData.showCoupon = (this.data.dataStr < (couponData.etime * 1) && couponData.is_open == '1') ? '1' : '0';
  914 + console.log('邀请函--------------------评价赠送的优惠券', couponData);
  915 + let entry = this.data.titleList
  916 + if (!this.data.is_user_comments && this.data.isComments == '1' && couponData.showCoupon == '1') {
  917 + entry.push({
  918 + id: 3,
  919 + title: '意见反馈有礼'
  920 + })
  921 + if (entry.length > 0) {
  922 + entry.sort((a, b) => a.id - b.id);
  923 + }
  924 + }
  925 + this.setData({
  926 + couponData: res.data[0],
  927 + titleList: entry,
  928 + activeTitle: entry.length > 0 ? entry[0].id : '',
  929 + })
  930 + }
  931 + })
  932 + },
  933 + // 根据券ID获取券详情
  934 + getActivityByIdFun(ids, length) {
  935 + let coupon_dataList = [];
  936 + ids.forEach(i => {
  937 + App.Activity.GetActivityById({
  938 + id: i.id
  939 + }).then(res => {
  940 + if (res.data.length > 0) {
  941 + let detail = res.data[0];
  942 + detail.stringifyUse = detail.use ? JSON.stringify(detail.use) : '';
  943 + detail.exp_date = detail.exp_date ? util.determine(detail.exp_date) : '';
  944 + detail.use = detail.use ? util.determine(detail.use) : '';
  945 + detail.stimeStr = util.unixtoTime(detail.stime, 'YYYY-MM-DD HH:II')
  946 + detail.etimeStr = util.unixtoTime(detail.etime, 'YYYY-MM-DD HH:II')
  947 + coupon_dataList.push(detail);
  948 + if (length === coupon_dataList.length) {
  949 + coupon_dataList = coupon_dataList.filter(item => {
  950 + return this.data.dataStr < (item.etime * 1) && item.is_open == '1'
  951 + })
  952 + let entry = this.data.titleList
  953 + if (this.data.hasValueCertificate && this.data.marketing.is_coupon == '1' && coupon_dataList.length > 0) {
  954 + entry.push({
  955 + id: 1,
  956 + title: '专属优惠券'
  957 + })
  958 + if (entry.length > 0) {
  959 + entry.sort((a, b) => a.id - b.id);
  960 + }
  961 + }
  962 + console.log('邀请函--------------------优惠券', coupon_dataList);
  963 + this.setData({
  964 + coupon_dataList,
  965 + titleList: entry,
  966 + activeTitle: entry.length > 0 ? entry[0].id : '',
  967 + })
  968 + }
  969 + }
  970 + })
  971 + })
  972 + },
  973 + /**
  974 + * 生命周期函数--监听页面隐藏
  975 + */
  976 + onHide() {
  977 + clearInterval(this.timers)
  978 + if (this.audioCtx) {
  979 + this.audioCtx.destroy(); // 释放音频资源
  980 + }
  981 + },
  982 +
  983 + /**
  984 + * 生命周期函数--监听页面卸载
  985 + */
  986 + onUnload() {
  987 + clearInterval(this.timers)
  988 + if (this.audioCtx) {
  989 + this.audioCtx.destroy(); // 释放音频资源
  990 + }
  991 + },
  992 + // 设置虚拟到店时间
  993 + bindPickerChange: function (e) {
  994 + let index = e.detail.value
  995 + let temp_ddate = this.data.timeList[index]
  996 + this.setData({
  997 + temp_ddate
  998 + })
  999 + let detailInfo = this.data.detail;
  1000 + const reserveDate = new Date(detailInfo.ddate * 1000);
  1001 + let reserveTime =
  1002 + reserveDate.getFullYear() +
  1003 + "-" +
  1004 + (reserveDate.getMonth() + 1) +
  1005 + "-" +
  1006 + reserveDate.getDate();
  1007 + let times = this.getNewDate(reserveTime + " " + temp_ddate).getTime() / 1000
  1008 + App.Reserve.SetReserveTempDdate({
  1009 + rid: this.id,
  1010 + temp_ddate: times,
  1011 + }).then(res => {
  1012 + if (res.ret == 200) {
  1013 + if (this.data.lite_style == '2') {
  1014 + let time = (util.unixtoTime(detailInfo.ddate, '周WW') + temp_ddate) || (util.unixtoTime(detailInfo.ddate, '周WW') + this.data.timeList[index])
  1015 + this.painterBtn(
  1016 + detailInfo.seller.seller_image,
  1017 + detailInfo.seller.sellername,
  1018 + util.unixtoTime(detailInfo.ddate, 'MM月DD日'),
  1019 + time
  1020 + );
  1021 + }
  1022 + }
  1023 + })
  1024 + },
  1025 + // ios 部分机型不兼容new Date() 转换字符串
  1026 + getNewDate(data) {
  1027 + if (typeof data === 'string') {
  1028 + let arr = data.split(/[- : \/]/)
  1029 + if (arr[1] !== undefined || arr[1] !== null) {
  1030 + arr[1] = arr[1] - 1
  1031 + }
  1032 + return new Date(...arr)
  1033 + }
  1034 + return new Date(data || new Date())
  1035 + },
  1036 + //根据起始时间(获取时间时间段)
  1037 + computeHour(time1, time2, interval) {
  1038 + //time1 开始时间 time2结束时间 interval间隔时长
  1039 + function getTimeList(time1, time2, interval) {
  1040 + var timeList = [];
  1041 + time1 = time1.split(":");
  1042 + time2 = time2.split(":");
  1043 + time1 = new Date(0, 0, 0, time1[0], time1[1], 0);
  1044 + time2 = new Date(0, 0, 0, time2[0], time2[1], 0);
  1045 + interval = interval * 60 * 1000;
  1046 + while (time1 <= time2) {
  1047 + timeList.push(time1.format("hh:mm"));
  1048 + time1 = new Date(time1.getTime() + interval);
  1049 + }
  1050 + return timeList;
  1051 + }
  1052 + Date.prototype.format = function (format) {
  1053 + var date = {
  1054 + "M+": this.getMonth() + 1,
  1055 + "d+": this.getDate(),
  1056 + "h+": this.getHours(),
  1057 + "m+": this.getMinutes(),
  1058 + "s+": this.getSeconds(),
  1059 + "q+": Math.floor((this.getMonth() + 3) / 3),
  1060 + S: this.getMilliseconds(),
  1061 + };
  1062 + if (/(y+)/.test(format))
  1063 + format = format.replace(
  1064 + RegExp.$1,
  1065 + (this.getFullYear() + "").substr(4 - RegExp.$1.length)
  1066 + );
  1067 + for (var k in date)
  1068 + if (new RegExp("(" + k + ")").test(format))
  1069 + format = format.replace(
  1070 + RegExp.$1,
  1071 + RegExp.$1.length == 1 ?
  1072 + date[k] :
  1073 + ("00" + date[k]).substr(("" + date[k]).length)
  1074 + );
  1075 + return format;
  1076 + };
  1077 + return getTimeList(time1, time2, interval);
  1078 + },
  1079 + // 模块文字、轮播图数据重组(停车、餐厅介绍、菜品、主厨)
  1080 + processInfo(intel, type) {
  1081 + let imgs = [];
  1082 + intel.textInfo = '';
  1083 + intel.imgsInfo = [];
  1084 + intel.videoImgsInfo = [];
  1085 + if (type == '1') {
  1086 + if (intel.swich_park == '1' && (intel.park_info || intel.park_info_images)) {
  1087 + intel.textInfo = intel.park_info;
  1088 + imgs = intel.park_info_images
  1089 + }
  1090 + }
  1091 + if (type == '2') {
  1092 + imgs = intel.images && intel.images.length > 0 && (!intel.is_images || intel.is_images !== '0') ? intel.images : [];
  1093 + intel.textInfo = (intel.introduce && (!intel.is_introduce || intel.is_introduce !== '0')) ? intel.introduce : '';
  1094 + }
  1095 + if (type == '3') {
  1096 + imgs = intel.images || []
  1097 + intel.textInfo = '';
  1098 + }
  1099 + if (type == '4') {
  1100 + imgs = ((!intel.is_images || intel.is_images != '0') && intel.image) ? intel.image : []
  1101 + intel.textInfo = (intel.introduce && (!intel.is_introduce || intel.is_introduce != '0')) ? intel.introduce : '';
  1102 + }
  1103 + intel.imgsInfo = imgs;
  1104 + intel.videoImgsInfo = imgs.map(url => ({
  1105 + type: "1",
  1106 + content: url,
  1107 + }));
  1108 + if (intel.content && intel.content.length > 0 && intel.is_introduce_all == '1') {
  1109 + intel.textInfo = intel.content.filter(item => item.type === "2").map(item => item.content).join('\n');
  1110 + intel.imgsInfo = intel.content.filter(item => item.type === "1" && item.content).map(item => item.content);
  1111 + intel.videoImgsInfo = intel.content.filter(item => ((item.type === "1" || item.type === "3") && item.content));
  1112 + }
  1113 + return intel
  1114 + },
  1115 + /**
  1116 + * 页面相关事件处理函数--监听用户下拉动作
  1117 + */
  1118 + onPullDownRefresh() {
  1119 +
  1120 + },
  1121 +
  1122 + /**
  1123 + * 页面上拉触底事件的处理函数
  1124 + */
  1125 + onReachBottom() {
  1126 +
  1127 + },
  1128 +})
  1 +{
  2 + "navigationStyle": "custom",
  3 + "navigationBarTextStyle": "white",
  4 + "usingComponents": {
  5 + "nav": "/components/nav/nav",
  6 + "painter":"/components/painter/painter",
  7 + "my-modal": "/components/modal/modal"
  8 + }
  9 + }
  1 +<!--pack-invitation/pages/detail_owner_invitation11.wxml-->
  2 +<import src="../../pages/tpl/invitation"></import>
  3 +<nav hasHome class="navhome" backgroundColor="{{show_white ? colors : 'transparent'}}" place="{{false}}"></nav>
  4 +<scroll-view scroll-y class="viewBox viewBox{{bookType}}">
  5 + <image wx:if="{{hasValueBroadcast && isVoice=='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" bindtap="gotoSellerGift" wx:if="{{(hasValueCertificate && marketing.is_coupon=='1' && coupon_dataList.length>0) || (!is_user_comments && isComments =='1' && couponData.showCoupon =='1') || (hasValueRecharge && marketing.is_recharge=='1' && recharge_data)}}" src="https://nosqn.colorcun.com/sellerGift.png" mode="" />
  7 + <image wx:if="{{detail.status =='4'}}" class="cannotImg" src="https://qn.colorcun.com/cancelImg.png" />
  8 + <image wx:if="{{options.isOrder == '1' && detail.status !='4'}}" class="cannotImg" src="https://qn.colorcun.com/overImg.png" />
  9 + <view class="reservationInfoBox">
  10 + <view class="reservationInfo">
  11 + <view class="infoTop">
  12 + <text wx:if="{{bookType == '2'}}" class="infoTopText1" space="nbsp">INVITATION</text>
  13 + <text class="infoTopText2 font44r" space="nbsp">{{seller.name||reserve.seller_name}}</text>
  14 + <text class="infoTopText3 font28r" space="nbsp" wx:if="{{reserve.swich_slogan == '1' && home.slogan}}">{{home.slogan}}</text>
  15 + <text wx:if="{{bookType == '2'}}" class="infoTopText4 font44r" space="nbsp">邀请函</text>
  16 + <image wx:if="{{bookType == '1'}}" class="infoTopBj2" src="https://qn.colorcun.com/invitation11Bg2.png" mode="" />
  17 + </view>
  18 + <view class="informationBox">
  19 + <view class="infoItem">
  20 + <text space="nbsp" wx:if="{{reserve.swich_booking=='1' && reserve.book_info}}" class="contentData font28r bookData">{{reserve.book_info}}</text>
  21 + </view>
  22 + <view class="infoItem" wx:if="{{detail.rnameStr && reserve.swich_customer == '1'}}">
  23 + <view class="record font28r">预订贵宾:</view>
  24 + <view class="contentData font28r">{{detail.rnameStr}}</view>
  25 + </view>
  26 + <view class="infoItem" wx:if="{{seller.date}}">
  27 + <view class="record font28r">用餐日期:</view>
  28 + <view class="contentData font28r">{{seller.date}}</view>
  29 + </view>
  30 + <view class="infoItem" wx:if="{{seller.tablesText}}">
  31 + <view class="record font28r">用餐位置:</view>
  32 + <view class="contentData font28r">{{seller.tablesText}}</view>
  33 + </view>
  34 + <view class="infoItem" wx:if="{{seller.soltName}}">
  35 + <view class="record font28r">用餐时间:</view>
  36 + <view class="arrivalBox">
  37 + <view class="contentData font28r">{{seller.soltName}}<text class="marLeft font28r">{{temp_ddate}}</text></view>
  38 + <picker wx:if="{{options.isOrder != '1' && (detail.status =='1' || detail.status =='2') && options.hasSellerShare == '1'}}" bindchange="bindPickerChange" value="{{index}}" range="{{timeList}}">
  39 + <view class="picker">
  40 + <button>修改到店时间</button>
  41 + </view>
  42 + </picker>
  43 + </view>
  44 + </view>
  45 + <view wx:if="{{bookType == '2'}}" class="entrance {{((reserve.swich_booking!='1' || !reserve.book_info) && (!reserve.swich_phone=='0' || !seller.tel || seller.tel.length==0))?'entrance1':''}}">
  46 + <view bindtap="gotoModule" data-type="1" wx:if="{{marketing.logo || home.image || (store.textInfo || store.videoImgsInfo.length>0)}}" class="entranceItem">
  47 + <image src="https://qn.colorcun.com/invitation12Icon1.png" mode="" />
  48 + <view class="font24r">餐厅介绍</view>
  49 + </view>
  50 + <view bindtap="gotoModule" data-type="2" wx:if="{{signboard && (signboard.textInfo || signboard.videoImgsInfo.length>0)}}" class="entranceItem">
  51 + <image src="https://qn.colorcun.com/invitation12Icon2.png" mode="" />
  52 + <view class="font24r">招牌菜品</view>
  53 + </view>
  54 + <view bindtap="gotoModule" data-type="3" wx:if="{{reserve && (reserve.textInfo || reserve.videoImgsInfo.length>0)}}" class="entranceItem">
  55 + <image src="https://qn.colorcun.com/invitation12Icon3.png" mode="" />
  56 + <view class="font24r">停车指引</view>
  57 + </view>
  58 + <view bindtap="cookbook" wx:if="{{hasValueOrder && openOrder == '1' && marketing.is_order=='1'}}" class="entranceItem">
  59 + <image src="https://qn.colorcun.com/invitation12Icon4.png" mode="" />
  60 + <view class="font24r">提前点餐</view>
  61 + </view>
  62 + </view>
  63 + <view class="infoItem infoRight" wx:if="{{swich_phone!='0' && seller.tel && seller.tel.length>0}}">
  64 + <view class="record font28r">前台电话:</view>
  65 + <view class="contentData font28r">
  66 + <block wx:for="{{seller.tel}}" wx:key="index"><text data-phone="{{item}}" class="contentDataPhone" bindtap="call">{{item}}</text><text class="divider">{{index==(seller.tel.length-1)?'':','}}</text></block>
  67 + </view>
  68 + </view>
  69 + <view class="infoItem addressInfo">
  70 + <view class="record font28r">餐厅地址:</view>
  71 + <view class="arrivalBox">
  72 + <view class="contentData font28r">{{seller.addr || reserve.seller.map_address}}</view>
  73 + <view class="positioning" bindtap="looklocation">
  74 + <image class="addressImg" src="{{bookType == '1'?'https://qn.colorcun.com/invitation11Dw.png':'https://qn.colorcun.com/invitation12Dw.png'}}" mode="aspectFill" />
  75 + 导航
  76 + </view>
  77 + </view>
  78 + </view>
  79 + <swiper wx:if="{{bookType == '1' && urlsArr.length>0}}" class="detailBanner" indicator-dots="{{true}}" autoplay="{{true}}" interval="{{2000}}" circular="{{true}}" indicator-color="lightgray" indicator-active-color="#fff">
  80 + <swiper-item wx:for="{{urlsArr}}" wx:key="index">
  81 + <image mode="scaleToFill" class="detailBannerImg" src="{{item}}" bindtap="previewImage" data-url="{{item}}" data-imgs="{{urlsArr}}"></image>
  82 + </swiper-item>
  83 + </swiper>
  84 + <text space="nbsp" wx:if="{{bookType == '1' && marketing.wecomle}}" class="welcomeInfo font32r">{{marketing.wecomle}}</text>
  85 + </view>
  86 + </view>
  87 + <view class="receptionBox" wx:if="{{staffinfo && reserve.swich_manager=='1'}}">
  88 + <view class="peopleInfo">
  89 + <image bindtap="lookImgs" data-url="{{staffinfo.photo}}" src="{{staffinfo.photo}}" class="headerimg" mode="aspectFill"></image>
  90 + <view class="font26r">{{staffinfo.name}}</view>
  91 + <view class="font26r">{{staffinfo.position}}</view>
  92 + </view>
  93 + <view class="handleInfo">
  94 + <view class="font40r">尊敬的贵宾您好!</view>
  95 + <view class="font26r texts">很荣幸能为您提供专属接待和服务</view>
  96 + <view class="contactBtns">
  97 + <view wx:if="{{staffinfo.phone}}" class="font22r brownFont" data-phone="{{staffinfo.phone}}" bindtap="call">
  98 + <image src="{{bookType == '1'?'https://qn.colorcun.com/invitation11Phone.png':'https://qn.colorcun.com/invitation10Phone.png'}}" mode="" /><text>联系我</text>
  99 + </view>
  100 + <view wx:if="{{staffinfo.wechat}}" class="font22r brownFont" bindtap="copyWeChat">
  101 + <image src="{{bookType == '1'?'https://qn.colorcun.com/invitation11Wx.png':'https://qn.colorcun.com/invitation10Wx.png'}}" mode="" /><text>加微信</text>
  102 + </view>
  103 + </view>
  104 + </view>
  105 + </view>
  106 + </view>
  107 + <view class="publicModule preferentialCoupon" wx:if="{{titleList.length>0}}">
  108 + <view class="tileBox">
  109 + <view wx:for="{{titleList}}" wx:key="index" wx:for-index="index" bindtap="checkTitleFun" data-type="{{item.id}}" class="titleItem {{activeTitle==item.id?'activeTitleItem':''}}">{{item.title}}</view>
  110 + </view>
  111 + <!-- 优惠券 -->
  112 + <view class="regionItem" wx:if="{{activeTitle == '1'}}">
  113 + <block wx:for="{{coupon_dataList}}" wx:key="index" wx:for-index="index">
  114 + <navigator url="/pack-activity/pack/buyCoupon?id={{item.id}}&name={{seller.name}}&use={{item.stringifyUse}}&sid={{seller.sid}}&oid={{detail.id}}&types=1&StyleType={{StyleType}}" hover-class="navigator-hover">
  115 + <view class="preferentialItems">
  116 + <view class="certificateInfo">
  117 + <text class="discountText font20r">{{item.use.is_cash=='1'?'代金券':item.use.is_discount=='1'?'超值折扣':item.use.is_dish=='1'?'特惠菜品':''}}</text>
  118 + <view class="ticketName font36r">{{item.aname}}</view>
  119 + <text wx:if="{{item.exp_date.is_week=='1' || item.exp_date.is_week===true}}" class="limitation font24r">{{item.exp_date.week_show?item.exp_date.week_show+'可用':''}}{{item.desc?','+item.desc+'。':'。'}}</text>
  120 + <view wx:if="{{item.exp_date.is_none=='1' || item.exp_date.is_none===true}}" class="limitation font24r">
  121 + 无限制{{item.desc?','+item.desc+'。':'。'}}
  122 + </view>
  123 + <view wx:if="{{item.exp_date.is_birthday=='1' || item.exp_date.is_birthday===true}}" class="limitation font24r">
  124 + 会员生日当天可用{{item.desc?','+item.desc+'。':'。'}}
  125 + </view>
  126 + </view>
  127 + <view class="purchase font40r">
  128 + <view class="priceText" wx:if="{{item.price}}">
  129 + <view class="icons font24r">¥</view>{{item.price}}
  130 + </view>
  131 + <view class="font24r couponBtn">立即购买</view>
  132 + </view>
  133 + </view>
  134 + </navigator>
  135 + </block>
  136 + </view>
  137 + <!-- 充值 -->
  138 + <view class="regionItem" wx:if="{{activeTitle == '2'}}">
  139 + <navigator url="/pack-activity/pack/vipRecharge?id={{recharge_data.id}}&name={{seller.name}}&sid={{seller.sid}}&oid={{detail.id}}&types=1&StyleType={{StyleType}}" hover-class="navigator-hover">
  140 + <view class="rechargeItems">
  141 + <image class="checkImg" src="https://qn.colorcun.com/invitation10vector.png" mode="" />
  142 + <view class="rechargeTitle">{{recharge_data.recharge_money}}<text class="font24r">元</text></view>
  143 + </view>
  144 + </navigator>
  145 + <view class="limitation" wx:if="{{priceInfo || scoreInfo || recharge_data.recharge_list.is_coupons=='1'}}">
  146 + <view class="limitationTitle font28r">充值优惠详情</view>
  147 + <view class="font24r">
  148 + <text>会员充值满{{recharge_data.recharge_money}}元,</text>
  149 + <text wx:if="{{priceInfo}}">{{priceInfo}}{{(recharge_data.recharge_list.is_coupons=='0' && recharge_data.recharge_list.is_score=='0')?'。':','}}</text>
  150 + <text wx:if="{{scoreInfo}}">{{scoreInfo}}{{recharge_data.recharge_list.is_coupons=='0'?'。':','}}</text>
  151 + <text wx:if="{{recharge_data.recharge_list.is_coupons=='1'}}">{{recharge_data.recharge_list.is_coupons=='1'?'赠送'+certificate:''}}。</text>
  152 + </view>
  153 + </view>
  154 + <view class="limitation">
  155 + <view class="limitationTitle font28r">有效期</view>
  156 + <view class="font24r">{{recharge_data.timeStr}}</view>
  157 + </view>
  158 + <view class="limitation">
  159 + <view class="limitationTitle font28r">备注</view>
  160 + <view class="font24r">{{recharge_data.explain}}</view>
  161 + </view>
  162 + <view class="rechargeBtn">
  163 + <view wx:if="{{hasValueRecharge && marketing.is_link=='1'}}" class="favouredPolicy">更多优惠</view>
  164 + <navigator url="/pack-activity/pack/vipRecharge?id={{recharge_data.id}}&name={{seller.name}}&sid={{seller.sid}}&oid={{detail.id}}&types=1&StyleType={{StyleType}}" hover-class="navigator-hover">
  165 + 立即充值
  166 + </navigator>
  167 + </view>
  168 + </view>
  169 + <!-- 评价券 -->
  170 + <view class="regionItem certificateBox" wx:if="{{activeTitle == '3'}}">
  171 + <view class="limitationTitle font28r">期待您的声音,帮助我们持续改进</view>
  172 + <view class="preferentialItems" bindtap="evaluateFun">
  173 + <view class="certificateInfo">
  174 + <text class="discountText font20r">反馈有礼</text>
  175 + <view class="ticketName font36r">{{couponData.aname}}</view>
  176 + <text wx:if="{{couponData.exp_date.is_week=='1' || couponData.exp_date.is_week===true}}" class="limitation font24r">{{couponData.exp_date.week_show?couponData.exp_date.week_show+'可用':''}}{{couponData.desc?','+couponData.desc+'。':'。'}}</text>
  177 + <view wx:if="{{couponData.exp_date.is_none=='1' || couponData.exp_date.is_none===true}}" class="limitation font24r">
  178 + 无限制{{couponData.desc?','+couponData.desc+'。':'。'}}
  179 + </view>
  180 + <view wx:if="{{couponData.exp_date.is_birthday=='1' || couponData.exp_date.is_birthday===true}}" class="limitation font24r">
  181 + 会员生日当天可用{{couponData.desc?','+couponData.desc+'。':'。'}}
  182 + </view>
  183 + </view>
  184 + <view class="purchase font40r">
  185 + <view class="priceText" wx:if="{{couponData.price}}">
  186 + <view class="icons font40r">¥</view>{{couponData.price}}
  187 + </view>
  188 + <view class="font24r couponBtn">{{couponData.price=='0'?'免费领取':'立即领取'}}</view>
  189 + </view>
  190 + </view>
  191 + </view>
  192 + </view>
  193 + <view wx:if="{{bookType == '2' && roomimage && roomimage.length>0}}" class="{{roomimage.length=='1'?'pageSpacing':'pageSpacing1'}}">
  194 + <view wx:for="{{roomimage}}" class="imgs" wx:key="index" bindtap="previewImage" data-url="{{item.url}}">
  195 + <image class="imageStyle" mode="aspectFill" src="{{item.url}}"></image>
  196 + <text>{{item.name}}</text>
  197 + </view>
  198 + </view>
  199 + <block wx:if="{{bookType == '1'}}">
  200 + <!-- 停车指引 -->
  201 + <view class="publicModule" wx:if="{{reserve && (reserve.textInfo || reserve.videoImgsInfo.length>0)}}">
  202 + <view class="chefText font36r">
  203 + <view class="line"></view>
  204 + <view class="font36r chefTextInfo">停车指引</view>
  205 + <view class="line"></view>
  206 + </view>
  207 + <view class="labelBox" wx:if="{{reserve.textInfo}}">
  208 + <text class="texts font28r" space="nbsp">{{reserve.textInfo}}</text>
  209 + </view>
  210 + <swiper wx:if="{{reserve.videoImgsInfo.length>0}}" class="detailBanner" indicator-dots="{{true}}" autoplay="{{true}}" interval="{{2000}}" circular="{{true}}" indicator-color="lightgray" indicator-active-color="#fff">
  211 + <swiper-item wx:for="{{reserve.videoImgsInfo}}" wx:key="index">
  212 + <video wx:if="{{item.type=='3'}}" class='boxBlock' id="video" src="{{item.content}}" show-center-play-btn="{{true}}" autoplay='{{false}}' object-fit="cover" controls="{{true}}"></video>
  213 + <image wx:if="{{item.type=='1'}}" mode="scaleToFill" class="detailBannerImg" src="{{item.content}}" bindtap="previewImage" data-url="{{item.content}}" data-imgs="{{reserve.imgsInfo}}"></image>
  214 + </swiper-item>
  215 + </swiper>
  216 + </view>
  217 + <!-- 招牌菜品 -->
  218 + <view class="publicModule" wx:if="{{signboard && (signboard.textInfo || signboard.videoImgsInfo.length>0 || (hasValueOrder && openOrder == '1' && marketing.is_order=='1'))}}">
  219 + <view class="chefText font36r">
  220 + <view class="line"></view>
  221 + <view class="font36r chefTextInfo">招牌菜品</view>
  222 + <view class="line"></view>
  223 + </view>
  224 + <view class="labelBox" wx:if="{{signboard.textInfo}}">
  225 + <text class="texts font28r" space="nbsp">{{signboard.textInfo}}</text>
  226 + </view>
  227 + <swiper wx:if="{{signboard.videoImgsInfo.length>0}}" class="detailBanner" indicator-dots="{{true}}" autoplay="{{true}}" interval="{{2000}}" circular="{{true}}" indicator-color="lightgray" indicator-active-color="#fff">
  228 + <swiper-item wx:for="{{signboard.videoImgsInfo}}" wx:key="index">
  229 + <video wx:if="{{item.type=='3'}}" class='boxBlock' id="video" src="{{item.content}}" show-center-play-btn="{{true}}" autoplay='{{false}}' object-fit="cover" controls="{{true}}"></video>
  230 + <image wx:if="{{item.type=='1'}}" mode="aspectFit" class="detailBannerImg" src="{{item.content}}" bindtap="previewImage" data-url="{{item.content}}" data-imgs="{{signboard.imgsInfo}}"></image>
  231 + </swiper-item>
  232 + </swiper>
  233 + <view class="orderBox" wx:if="{{hasValueOrder && openOrder == '1' && marketing.is_order=='1'}}">
  234 + <view class="font32r">提前点餐 到店不用等</view>
  235 + <view wx:if="{{openOrder == '1' && marketing.is_order == '1'}}" bindtap="cookbook" class="font28r cook" style="position: relative;">
  236 + 去点餐
  237 + </view>
  238 + </view>
  239 + </view>
  240 + <!-- 餐厅介绍 -->
  241 + <view class="publicModule" wx:if="{{store && (store.textInfo || store.videoImgsInfo.length>0)}}">
  242 + <view class="chefText font36r">
  243 + <view class="line"></view>
  244 + <view class="font36r chefTextInfo">餐厅介绍</view>
  245 + <view class="line"></view>
  246 + </view>
  247 + <view class="labelBox" wx:if="{{store.textInfo}}">
  248 + <text class="texts font28r" space="nbsp">{{store.textInfo}}</text>
  249 + </view>
  250 + <swiper wx:if="{{store.videoImgsInfo.length>0}}" class="detailBanner" indicator-dots="{{true}}" autoplay="{{true}}" interval="{{2000}}" circular="{{true}}" indicator-color="lightgray" indicator-active-color="#fff">
  251 + <swiper-item wx:for="{{store.videoImgsInfo}}" wx:key="index">
  252 + <video wx:if="{{item.type=='3'}}" class='boxBlock' id="video" src="{{item.content}}" show-center-play-btn="{{true}}" autoplay='{{false}}' object-fit="cover" controls="{{true}}"></video>
  253 + <image wx:if="{{item.type=='1'}}" mode="aspectFit" class="detailBannerImg" src="{{item.content}}" bindtap="previewImage" data-url="{{item.content}}" data-imgs="{{store.imgsInfo}}"></image>
  254 + </swiper-item>
  255 + </swiper>
  256 + </view>
  257 + <!-- 主厨介绍 -->
  258 + <view class="publicModule" wx:if="{{chef && (chef.textInfo || chef.videoImgsInfo.length>0)}}">
  259 + <view class="chefText font36r">
  260 + <view class="line"></view>
  261 + <view class="font36r chefTextInfo">主厨介绍</view>
  262 + <view class="line"></view>
  263 + </view>
  264 + <view class="labelBox" wx:if="{{chef.textInfo}}">
  265 + <text class="texts font28r" space="nbsp">{{chef.textInfo}}</text>
  266 + </view>
  267 + <swiper wx:if="{{chef.videoImgsInfo.length>0}}" class="detailBanner" indicator-dots="{{true}}" autoplay="{{true}}" interval="{{2000}}" circular="{{true}}" indicator-color="lightgray" indicator-active-color="#fff">
  268 + <swiper-item wx:for="{{chef.videoImgsInfo}}" wx:key="index">
  269 + <video wx:if="{{item.type=='3'}}" class='boxBlock' id="video" src="{{item.content}}" show-center-play-btn="{{true}}" autoplay='{{false}}' object-fit="cover" controls="{{true}}"></video>
  270 + <image wx:if="{{item.type=='1'}}" mode="aspectFit" class="detailBannerImg" src="{{item.content}}" bindtap="previewImage" data-url="{{item.content}}" data-imgs="{{chef.imgsInfo}}"></image>
  271 + </swiper-item>
  272 + </swiper>
  273 + </view>
  274 + </block>
  275 + <block wx:if="{{bookType == '2'}}">
  276 + <!-- 餐厅介绍 -->
  277 + <view class="publicModule" id="module1" wx:if="{{marketing.logo || home.image || (store.textInfo || store.videoImgsInfo.length>0)}}">
  278 + <view class="titleBox">
  279 + <view class="titleLine"></view>
  280 + <view class="font32">餐厅介绍</view>
  281 + </view>
  282 + <image wx:if="{{marketing.logo}}" src="{{marketing.logo}}" bindtap="lookImgs" data-url="{{marketing.logo}}" mode="widthFix" />
  283 + <image wx:if="{{home.image}}" src="{{home.image}}" bindtap="lookImgs" data-url="{{home.image}}" class="homeImage" mode="widthFix"></image>
  284 + <view class="labelBox" wx:if="{{store.introduce && store.is_introduce == '1'}}">
  285 + <text space="nbsp" class="texts font28r">{{store.introduce}}</text>
  286 + </view>
  287 + <block wx:if="{{store.images.length>0 && (!store.is_images || store.is_images!='0')}}">
  288 + <block wx:for="{{store.images}}" wx:key="arryIndex" wx:for-index="arryIndex">
  289 + <image src="{{item}}" bindtap="lookImgs" data-url="{{item}}" data-imgs="{{store.images}}" mode="widthFix" />
  290 + </block>
  291 + </block>
  292 + <view class="labelBox" wx:if="{{store.content && store.content.length>0}}">
  293 + <block wx:for="{{store.content}}">
  294 + <image wx:if="{{item.type == '1'}}" bindtap="lookImgs" src="{{item.content}}" data-url="{{item.content}}" mode="widthFix" />
  295 + <text wx:if="{{item.type == '2'}}" space="nbsp" class="texts font28r">{{item.content}}</text>
  296 + <view wx:if="{{item.type == '3'}}" class="videoBox">
  297 + <video object-fit="contain" autoplay="{{true}}" loop="{{true}}" muted="{{true}}" show-mute-btn="{{true}}" vslide-gesture-in-fullscreen="{{true}}" src="{{item.content}}"></video>
  298 + </view>
  299 + </block>
  300 + </view>
  301 + </view>
  302 + <!-- 招牌菜品 -->
  303 + <view class="publicModule" id="module2" wx:if="{{signboard && (signboard.textInfo || signboard.videoImgsInfo.length>0)}}">
  304 + <view class="titleBox">
  305 + <view class="titleLine"></view>
  306 + <view class="font32">招牌菜品</view>
  307 + </view>
  308 + <block wx:for="{{signboard.images}}" wx:key="arryIndex" wx:for-index="arryIndex">
  309 + <image src="{{item}}" bindtap="lookImgs" data-url="{{item}}" data-imgs="{{signboard.images}}" mode="widthFix" />
  310 + </block>
  311 + <view class="labelBox" wx:if="{{signboard.content && signboard.content.length>0}}">
  312 + <block wx:for="{{signboard.content}}">
  313 + <image wx:if="{{item.type == '1'}}" bindtap="lookImgs" src="{{item.content}}" data-url="{{item.content}}" mode="widthFix" />
  314 + <text wx:if="{{item.type == '2'}}" space="nbsp" class="texts font28r">{{item.content}}</text>
  315 + <view wx:if="{{item.type == '3'}}" class="videoBox">
  316 + <video object-fit="contain" autoplay="{{true}}" loop="{{true}}" muted="{{true}}" show-mute-btn="{{true}}" vslide-gesture-in-fullscreen="{{true}}" src="{{item.content}}"></video>
  317 + </view>
  318 + </block>
  319 + </view>
  320 + </view>
  321 + <!-- 停车指引 -->
  322 + <view class="publicModule" id="module3" wx:if="{{reserve && (reserve.textInfo || reserve.videoImgsInfo.length>0)}}">
  323 + <view class="titleBox">
  324 + <view class="titleLine"></view>
  325 + <view class="font32">停车指引</view>
  326 + </view>
  327 + <view class="labelBox" wx:if="{{reserve.park_info}}">
  328 + <text class="texts" space="nbsp">{{reserve.park_info}}</text>
  329 + </view>
  330 + <block wx:for="{{reserve.park_info_images}}" wx:key="arryIndex" wx:for-index="arryIndex">
  331 + <image src="{{item}}" bindtap="lookImgs" data-url="{{item}}" data-imgs="{{reserve.park_info_images}}" mode="widthFix" />
  332 + </block>
  333 + <view class="labelBox" wx:if="{{reserve.content && reserve.content.length>0}}">
  334 + <block wx:for="{{reserve.content}}">
  335 + <image wx:if="{{item.type == '1'}}" bindtap="lookImgs" src="{{item.content}}" data-url="{{item.content}}" mode="widthFix" />
  336 + <text wx:if="{{item.type == '2'}}" space="nbsp" class="texts font28r">{{item.content}}</text>
  337 + <view wx:if="{{item.type == '3'}}" class="videoBox">
  338 + <video object-fit="contain" autoplay="{{true}}" loop="{{true}}" muted="{{true}}" show-mute-btn="{{true}}" vslide-gesture-in-fullscreen="{{true}}" src="{{item.content}}"></video>
  339 + </view>
  340 + </block>
  341 + </view>
  342 + </view>
  343 + <!-- 主厨介绍 -->
  344 + <view class="publicModule" wx:if="{{chef && (chef.textInfo || chef.videoImgsInfo.length>0)}}">
  345 + <view class="titleBox">
  346 + <view class="titleLine"></view>
  347 + <view class="font32">主厨介绍</view>
  348 + </view>
  349 + <view class="labelBox" wx:if="{{(chef.introduce && (!chef.is_introduce || chef.is_introduce!='0'))}}">
  350 + <text class="texts" space="nbsp">{{chef.introduce}}</text>
  351 + </view>
  352 + <image wx:if="{{(!chef.is_images || chef.is_images!='0') && chef.image}}" src="{{chef.image}}" bindtap="lookImgs" data-url="{{chef.image}}" mode="widthFix" />
  353 + <view class="labelBox" wx:if="{{chef.content && chef.content.length>0}}">
  354 + <block wx:for="{{chef.content}}">
  355 + <image wx:if="{{item.type == '1'}}" bindtap="lookImgs" src="{{item.content}}" data-url="{{item.content}}" mode="widthFix" />
  356 + <text wx:if="{{item.type == '2'}}" space="nbsp" class="texts font28r">{{item.content}}</text>
  357 + <view wx:if="{{item.type == '3'}}" class="videoBox">
  358 + <video object-fit="contain" autoplay="{{true}}" loop="{{true}}" muted="{{true}}" show-mute-btn="{{true}}" vslide-gesture-in-fullscreen="{{true}}" src="{{item.content}}"></video>
  359 + </view>
  360 + </block>
  361 + </view>
  362 + </view>
  363 + </block>
  364 + <view class="businessBox font24r">
  365 + 周到安排提供技术支持<text bindtap="call" data-phone="4000009690">4000009690</text>,餐厅入驻请点击
  366 + <view bindtap="gotoJoinSeller" style="text-decoration: underline;">这里</view>
  367 + </view>
  368 + <view class="{{(!marketing || (marketing.is_transpond!='1' && marketing.is_online_book!='1'))?'more more1':'more'}}" wx:if="{{showMoreTip}}">
  369 + <view class="moreText">滑动查看更多</view>
  370 + <image src="https://qn.colorcun.com/jt1.png" mode="" />
  371 + </view>
  372 + <view class="toastBox" wx:if="{{toastBool}}">
  373 + {{toastText}}
  374 + </view>
  375 + <!-- (开启在线预订 显示在线预订) || (未开启在线预订 显示再次预订(打商家电话)) -->
  376 + <!-- (未结束&&未取消 && 开启转发开关 显示 转发邀请函给客人) || (过了当前餐段结束时间||用餐完成||已取消 显示 转发店铺给好友) -->
  377 + <view wx:if="{{isMoreBtn || options.isOrder == '1' || (!isMoreBtn && seller.phone) || (detail.status !='4' && isPaymenBtn) || (detail.status !='4' && isShareItem)}}" class="flex-lr sharewidth">
  378 + <view wx:if="{{isMoreBtn}}" class="flex-cc font30r moreBtn {{((detail.status !='4' && isPaymenBtn) && ((detail.status !='4' && isShareItem) || options.isOrder == '1')) ? 'threeBtn' : ''}}" bindtap="secondbook">再次预订</view>
  379 + <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>
  380 + <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>
  381 + <button wx:if="{{detail.status !='4' && isShareItem}}" class="flex-cc font30r shareItem" open-type="share">转发邀请函给客人</button>
  382 + <button wx:if="{{options.isOrder == '1'}}" class="flex-cc font30r shareItem" data-type="2" open-type="share">转发店铺给好友</button>
  383 + </view>
  384 +</scroll-view>
  385 +<painter palette="{{wxml}}" style="position: absolute; top: -9999rpx;" bind:imgOK="onImgOK" />
  386 +<my-modal id="payModal" fadeStyle="slideUp" height="240px">
  387 + <view slot="modalName" class="titleModal">提示</view>
  388 + <view slot="modalContent">
  389 + <view class="explain">
  390 + 检测到您正在截屏,建议直接把邀请函转发给朋友更有仪式感哦!
  391 + </view>
  392 + <view class="screenshotBtns">
  393 + <button class="font32r btnsLeft" bindtap="closeModal">关闭弹窗</button>
  394 + <button wx:if="{{detail.status !='4' && options.isOrder != '1' && marketing.is_transpond=='1' && imgSrc}}" class="flex-cc font30r btnsRight" open-type="share">立即转发</button>
  395 + </view>
  396 + </view>
  397 +</my-modal>
  1 +/* pack-invitation/pages/detail_owner_invitation11.wxss */
  2 +@import "../../pages/tpl/tpls.wxss";
  3 +
  4 +
  5 +@font-face {
  6 + font-family: 'Abel';
  7 + font-style: normal;
  8 + font-weight: 400;
  9 + src: url(https://fonts.gstatic.com/s/abel/v18/MwQ5bhbm2POE2V9BPQ.woff2) format('woff2');
  10 + 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;
  11 +}
  12 +
  13 +.viewBox1 .reservationInfo {
  14 + background: url('https://qn.colorcun.com/invitation11Bg1.png') no-repeat;
  15 + padding: 220rpx 20rpx 24rpx;
  16 + box-sizing: border-box;
  17 + position: relative;
  18 + color: #000;
  19 + background-size: cover;
  20 +}
  21 +
  22 +.infoTop {
  23 + color: #FFEFC5;
  24 + font-weight: 600;
  25 + font-family: PingFang SC;
  26 + margin-bottom: 32rpx;
  27 + display: flex;
  28 + flex-direction: column;
  29 + align-items: center;
  30 +}
  31 +
  32 +.infoTop .infoTopText3 {
  33 + margin-top: 14rpx;
  34 + margin: 16rpx 0 32rpx 0;
  35 +}
  36 +
  37 +.infoTopBj2 {
  38 + width: 560rpx;
  39 + height: 188rpx;
  40 +}
  41 +
  42 +.informationBox {
  43 + border-radius: 10rpx;
  44 + background: #FFEFD6;
  45 + padding: 40rpx 32rpx;
  46 +}
  47 +
  48 +.infoItem {
  49 + display: flex;
  50 + display: flex;
  51 + line-height: 70rpx;
  52 + font-family: PingFang SC;
  53 + align-items: baseline;
  54 +}
  55 +
  56 +.addressInfo,
  57 +.addressInfo .arrivalBox {
  58 + align-items: baseline;
  59 +}
  60 +
  61 +.infoItem .record {
  62 + font-weight: 400;
  63 + flex-shrink: 0;
  64 + font-family: PingFang SC;
  65 + color: #AE2D2D;
  66 +}
  67 +
  68 +.positioning {
  69 + display: block;
  70 + font-size: 24rpx;
  71 + height: 50rpx;
  72 + padding: 0 34rpx;
  73 + line-height: 48rpx;
  74 + font-family: PingFang SC;
  75 + border-radius: 40rpx;
  76 + background: transparent;
  77 + color: #fff;
  78 + background: #AE2D2D;
  79 +}
  80 +
  81 +.addressImg {
  82 + width: 16rpx;
  83 + height: 16rpx;
  84 +}
  85 +
  86 +.welcomeInfo {
  87 + text-align: center;
  88 + color: #AE2D2D;
  89 + margin-top: 24rpx;
  90 + display: block;
  91 +}
  92 +
  93 +.contentData {
  94 + flex: 1;
  95 + line-height: 60rpx;
  96 + font-family: PingFang SC;
  97 + margin-left: 24rpx;
  98 + font-weight: 600;
  99 + color: #AE2D2D;
  100 +}
  101 +
  102 +.contentDataPhone {
  103 + color: #637FE3;
  104 + text-decoration-line: underline;
  105 +}
  106 +
  107 +.divider {
  108 + color: #637FE3;
  109 + margin: 0 10rpx;
  110 +}
  111 +
  112 +.bookData {
  113 + margin-left: 0;
  114 + font-weight: 400;
  115 +}
  116 +
  117 +.marLeft {
  118 + margin-left: 10rpx;
  119 +}
  120 +
  121 +.receptionBox {
  122 + margin: 0 20rpx;
  123 + display: flex;
  124 + align-items: center;
  125 + border-radius: 10rpx;
  126 + background: #FFEFD6;
  127 + box-shadow: 0rpx 4rpx 8rpx #00000040;
  128 + color: #AE2D2D;
  129 + padding: 56rpx 58rpx 60rpx 72rpx;
  130 +}
  131 +
  132 +.headerimg {
  133 + width: 108rpx;
  134 + height: 108rpx;
  135 + border-radius: 50%;
  136 +}
  137 +
  138 +.peopleInfo {
  139 + display: flex;
  140 + flex-direction: column;
  141 + align-items: center;
  142 +}
  143 +
  144 +.peopleInfo view:nth-of-type(1) {
  145 + margin-top: 10rpx;
  146 +}
  147 +
  148 +.peopleInfo view {
  149 + font-family: "PingFang SC";
  150 + font-weight: 400;
  151 +}
  152 +
  153 +.handleInfo {
  154 + margin-left: 42rpx;
  155 + font-family: "PingFang SC";
  156 + font-weight: 400;
  157 +}
  158 +
  159 +.handleInfo view {
  160 + font-weight: 400;
  161 + letter-spacing: 10rpx;
  162 +}
  163 +
  164 +.handleInfo view:nth-of-type(1) {
  165 + font-weight: 600;
  166 +}
  167 +
  168 +.handleInfo .texts {
  169 + margin: 22rpx 0;
  170 + letter-spacing: 3rpx;
  171 + line-height: 36rpx
  172 +}
  173 +
  174 +.contactBtns {
  175 + display: flex;
  176 + justify-content: space-between;
  177 +}
  178 +
  179 +.brownFont {
  180 + width: 46%;
  181 + background: #AE2D2D;
  182 + color: #fff;
  183 + padding: 10rpx 0;
  184 + border-radius: 22rpx;
  185 + display: flex;
  186 + align-items: center;
  187 + justify-content: center;
  188 + box-shadow: 0rpx 4rpx 8rpx #00000040;
  189 +}
  190 +
  191 +.brownFont image {
  192 + width: 24rpx;
  193 + height: 24rpx;
  194 + margin-right: 10rpx;
  195 +}
  196 +
  197 +.tileBox {
  198 + display: flex;
  199 + align-items: center;
  200 + justify-content: space-evenly;
  201 + width: 100%;
  202 + padding: 40rpx 0 32rpx 0;
  203 +}
  204 +
  205 +.titleItem {
  206 + font-weight: 400;
  207 + background: #FFEFD6;
  208 + color: #000;
  209 + padding: 10rpx 16rpx;
  210 +}
  211 +
  212 +.activeTitleItem::after {
  213 + content: "";
  214 + position: absolute;
  215 + bottom: -30%;
  216 + left: 50%;
  217 + transform: translateX(-50%);
  218 + width: 0;
  219 + height: 0;
  220 + border-left: 20rpx solid transparent;
  221 + border-right: 20rpx solid transparent;
  222 + border-top: 20rpx solid #ae2d2d;
  223 +}
  224 +
  225 +.activeTitleItem {
  226 + position: relative;
  227 + background: #ae2d2d;
  228 + color: #fff;
  229 +}
  230 +
  231 +.publicModule {
  232 + margin: 20rpx;
  233 + padding: 40rpx 20rpx;
  234 + background: #fff;
  235 + border-radius: 20rpx 20rpx 0rpx 0rpx;
  236 + display: flex;
  237 + align-items: center;
  238 + flex-direction: column;
  239 +}
  240 +
  241 +.chefText {
  242 + width: 100%;
  243 + display: flex;
  244 + justify-content: space-between;
  245 + align-items: center;
  246 +}
  247 +
  248 +.chefText .line {
  249 + min-width: 35%;
  250 + height: 2rpx;
  251 + background: #AE2D2D;
  252 +}
  253 +
  254 +.chefTextInfo {
  255 + font-family: PingFang SC;
  256 + font-weight: 400;
  257 + letter-spacing: 8rpx;
  258 + color: #AE2D2D;
  259 +}
  260 +
  261 +.preferentialCoupon {
  262 + padding: 0;
  263 +}
  264 +
  265 +.regionItem {
  266 + width: 100%;
  267 + padding: 40rpx 40rpx 0 40rpx;
  268 + box-sizing: border-box;
  269 + background: #EFEFEF;
  270 +}
  271 +
  272 +.preferentialCoupon navigator {
  273 + width: 100%;
  274 +}
  275 +
  276 +.preferentialItems {
  277 + width: 100%;
  278 + display: flex;
  279 + margin-bottom: 20rpx;
  280 + min-height: 160rpx;
  281 + padding-bottom: 10rpx;
  282 +}
  283 +
  284 +.purchase {
  285 + width: 30%;
  286 + display: flex;
  287 + flex-direction: column;
  288 + justify-content: center;
  289 + align-items: center;
  290 + background: #FFEFD6;
  291 + border-radius: 10rpx;
  292 +}
  293 +
  294 +.discountText {
  295 + text-align: center;
  296 + color: #FFEFC5;
  297 + border-radius: 6rpx;
  298 + font-family: PingFang SC;
  299 + background: #FD4D59;
  300 + width: max-content;
  301 + padding: 6rpx;
  302 + position: absolute;
  303 + left: 16rpx;
  304 + top: 12rpx;
  305 +}
  306 +
  307 +.priceText {
  308 + font-family: PingFang SC;
  309 + color: #FD4D59;
  310 + font-weight: 500;
  311 + margin-top: 6rpx;
  312 + display: flex;
  313 + align-items: center;
  314 + justify-content: center;
  315 +}
  316 +
  317 +.priceText .icons {
  318 + font-family: PingFang SC;
  319 + color: #FD4D59;
  320 +}
  321 +
  322 +.certificateInfo {
  323 + width: 70%;
  324 + padding: 40rpx 10rpx 20rpx 28rpx;
  325 + position: relative;
  326 + background: #fff;
  327 + border-radius: 10rpx;
  328 + display: flex;
  329 + flex-direction: column;
  330 + justify-content: center;
  331 +}
  332 +
  333 +.certificateInfo .limitation {
  334 + line-height: 38rpx;
  335 +}
  336 +
  337 +.ticketName {
  338 + margin: 20rpx 20rpx 0 0;
  339 + display: flex;
  340 + justify-content: space-between;
  341 + align-items: baseline;
  342 + font-weight: 700;
  343 +}
  344 +
  345 +.orderingFood {
  346 + padding: 0 20rpx;
  347 + border-radius: 22rpx;
  348 + text-align: center;
  349 + color: #000;
  350 + border-radius: 20rpx;
  351 + line-height: 44rpx;
  352 + height: 44rpx;
  353 + background: #fff;
  354 + border: 2rpx solid #fff;
  355 + width: max-content;
  356 + margin-top: 24rpx;
  357 + flex-shrink: 0;
  358 +}
  359 +
  360 +.limitation {
  361 + margin-top: 10rpx;
  362 + width: 100%;
  363 + color: #666;
  364 + font-family: PingFang SC;
  365 + font-weight: 500;
  366 + display: -webkit-box;
  367 + word-break: break-all;
  368 + word-wrap: break-word;
  369 + overflow: hidden;
  370 + text-align: left;
  371 + line-height: 30rpx;
  372 +}
  373 +
  374 +.regionItem .limitation {
  375 + display: flex;
  376 + flex-direction: column;
  377 +}
  378 +
  379 +.limitationTitle {
  380 + font-weight: 400;
  381 + line-height: 28rpx;
  382 + color: #000;
  383 + line-height: 40rpx;
  384 + margin: 40rpx 0 20rpx 0;
  385 +}
  386 +
  387 +.certificateBox .limitationTitle {
  388 + text-align: center;
  389 + margin-top: 0;
  390 +}
  391 +
  392 +.rechargeItems {
  393 + display: flex;
  394 + min-height: 160rpx;
  395 + border-radius: 20rpx;
  396 + border: 2rpx solid #000000;
  397 + position: relative;
  398 + padding: 20rpx 40rpx;
  399 + flex-direction: column;
  400 + justify-content: center;
  401 + background: #fff;
  402 + width: 35%;
  403 +}
  404 +
  405 +.checkImg {
  406 + position: absolute;
  407 + bottom: 0;
  408 + right: 20rpx;
  409 + width: 32rpx !important;
  410 + height: 32rpx;
  411 +}
  412 +
  413 +.rechargeTitle {
  414 + font-family: PingFang SC;
  415 + font-weight: 700;
  416 + letter-spacing: 4rpx;
  417 + font-size: 68rpx;
  418 + text-align: center;
  419 +}
  420 +
  421 +.couponBtn {
  422 + width: 70%;
  423 + padding: 6rpx 0;
  424 + background: #AE2D2D;
  425 + color: #fff;
  426 + border-radius: 42rpx;
  427 + text-align: center;
  428 + margin-top: 24rpx;
  429 +}
  430 +
  431 +.rechargeBtn {
  432 + display: flex;
  433 + align-items: center;
  434 + justify-content: space-between;
  435 + margin: 24rpx 0;
  436 +}
  437 +
  438 +.rechargeBtn .favouredPolicy {
  439 + width: 30%;
  440 + padding: 12rpx 0;
  441 + border: 2rpx solid #AE2D2D;
  442 + border-radius: 42rpx;
  443 + color: #AE2D2D;
  444 + text-align: center;
  445 +}
  446 +
  447 +.rechargeBtn navigator {
  448 + width: 63%;
  449 + padding: 12rpx 0;
  450 + background: #AE2D2D;
  451 + border-radius: 42rpx;
  452 + color: #fff;
  453 + text-align: center;
  454 +}
  455 +
  456 +.labelBox {
  457 + width: 100%;
  458 + margin-top: 20rpx;
  459 +}
  460 +
  461 +.labelBox .texts {
  462 + line-height: 40rpx;
  463 + color: #222;
  464 + font-family: PingFang SC;
  465 + font-weight: 500;
  466 + display: block;
  467 + margin-bottom: 20rpx;
  468 +}
  469 +
  470 +.orderBox {
  471 + background: url('https://qn.colorcun.com/invitation11Dc1.png') no-repeat;
  472 + background-size: cover;
  473 + border-radius: 10rpx;
  474 + color: #fff;
  475 + padding: 26rpx 40rpx;
  476 + display: flex;
  477 + align-items: center;
  478 + justify-content: space-between;
  479 + box-sizing: border-box;
  480 + width: 100%;
  481 + margin-top: 20rpx;
  482 +}
  483 +
  484 +.cook {
  485 + border-radius: 24rpx;
  486 + background: #fff;
  487 + color: #AE2D2D;
  488 + padding: 4rpx 36rpx;
  489 +}
  490 +
  491 +.detailBanner {
  492 + width: 100%;
  493 + height: 500rpx;
  494 + background: transparent;
  495 +}
  496 +
  497 +.detailBannerImg {
  498 + width: 100%;
  499 + height: 100%;
  500 + border-radius: 10rpx;
  501 +}
  502 +
  503 +.boxBlock {
  504 + width: 100%;
  505 + height: 500rpx;
  506 +}
  507 +
  508 +.businessBox {
  509 + color: #fff;
  510 + font-family: PingFang SC;
  511 + display: flex;
  512 + justify-content: center;
  513 + align-items: center;
  514 + margin-top: 50rpx;
  515 + margin-bottom: 220rpx;
  516 +}
  517 +
  518 +.businessBox text {
  519 + text-decoration: underline;
  520 +}
  521 +
  522 +.sharewidth {
  523 + position: fixed;
  524 + left: 0;
  525 + bottom: 0;
  526 + height: 160rpx;
  527 + padding: 0 40rpx;
  528 + box-sizing: border-box;
  529 + z-index: 100;
  530 + justify-content: space-between;
  531 + width: 100%;
  532 + background: #fff;
  533 +}
  534 +
  535 +.arrivalBox {
  536 + display: flex;
  537 + width: 100%;
  538 + justify-content: space-between;
  539 + align-items: center;
  540 +}
  541 +
  542 +.arrivalBox button {
  543 + display: flex;
  544 + font-size: 24rpx;
  545 + flex-direction: column;
  546 + height: 50rpx;
  547 + padding: 0 18rpx;
  548 + line-height: 48rpx;
  549 + font-family: PingFang SC;
  550 + border-radius: 40rpx;
  551 + background: transparent;
  552 + color: #AE2D2D;
  553 + border: 2rpx solid #AE2D2D;
  554 +}
  555 +
  556 +.shareItem,
  557 +.moreBtn,
  558 +.paymenBtn {
  559 + width: inherit;
  560 + background: transparent;
  561 + color: #ae2d2d;
  562 + border: 2rpx solid #ae2d2d;
  563 + height: 80rpx;
  564 + border-radius: 42rpx;
  565 + font-weight: 600;
  566 + margin-right: 20rpx;
  567 +}
  568 +
  569 +.threeBtn {
  570 + width: auto;
  571 + padding: 0 24rpx;
  572 + flex-shrink: 0;
  573 +}
  574 +
  575 +.shareItem {
  576 + margin-right: 0;
  577 + background: #ae2d2d;
  578 + color: #fff;
  579 + animation-name: scaleDraw;
  580 + animation-timing-function: ease-in-out;
  581 + animation-iteration-count: infinite;
  582 + animation-duration: 2s;
  583 +}
  584 +
  585 +@keyframes scaleDraw {
  586 + 0% {
  587 + transform: scale(1);
  588 + }
  589 +
  590 + 25% {
  591 + transform: scale(1.1);
  592 + }
  593 +
  594 + 50% {
  595 + transform: scale(1);
  596 + }
  597 +
  598 + 75% {
  599 + transform: scale(1.1);
  600 + }
  601 +}
  602 +
  603 +.more {
  604 + height: 80rpx;
  605 + width: 100%;
  606 + position: fixed;
  607 + bottom: 160rpx;
  608 + display: flex;
  609 + align-items: center;
  610 + justify-content: center;
  611 + flex-direction: column;
  612 + background: rgba(0, 0, 0, .4);
  613 +}
  614 +
  615 +.more1 {
  616 + bottom: 40rpx;
  617 +}
  618 +
  619 +.moreText {
  620 + color: #fff;
  621 +}
  622 +
  623 +.more image {
  624 + width: 30rpx;
  625 + height: 30rpx;
  626 +}
  627 +
  628 +.musicImg {
  629 + width: 62rpx;
  630 + height: 62rpx;
  631 + position: fixed !important;
  632 + right: 8%;
  633 + top: 22%;
  634 + z-index: 200;
  635 +}
  636 +
  637 +.giftImg {
  638 + width: 108rpx;
  639 + height: 108rpx;
  640 + position: fixed !important;
  641 + right: 5%;
  642 + top: 33%;
  643 + z-index: 200;
  644 +}
  645 +
  646 +.cannotImg {
  647 + width: 200rpx;
  648 + height: 66rpx;
  649 + transform: rotate(-45deg);
  650 + position: fixed;
  651 + left: 38%;
  652 + z-index: 999;
  653 + top: 50%;
  654 +}
  655 +
  656 +#payModal {
  657 + display: flex;
  658 + align-items: center;
  659 +}
  660 +
  661 +.titleModal {
  662 + width: 100%;
  663 + margin-top: 48rpx;
  664 + color: #000;
  665 + font-family: PingFang SC;
  666 + font-weight: 500;
  667 + font-size: 44rpx;
  668 + text-align: center;
  669 +}
  670 +
  671 +.explain {
  672 + padding: 0 40rpx;
  673 + font-size: 30rpx;
  674 + color: #000;
  675 + line-height: 40rpx;
  676 + text-align: center;
  677 +}
  678 +
  679 +.screenshotBtns {
  680 + width: 100%;
  681 + display: flex;
  682 + justify-content: space-between;
  683 + box-sizing: border-box;
  684 + padding: 52rpx 22rpx 0 22rpx;
  685 +}
  686 +
  687 +.btnsLeft {
  688 + width: 43%;
  689 + border-radius: 42rpx;
  690 + background: #fff;
  691 + border: 2rpx solid #0346A5;
  692 + bottom: 10%;
  693 + color: #0346A5;
  694 +}
  695 +
  696 +.btnsRight {
  697 + width: 43%;
  698 + border-radius: 42rpx;
  699 + background: linear-gradient(104.24deg, #4c8dad -57.47%, #0143a3 55.72%, #42a5ff 148.72%);
  700 + bottom: 10%;
  701 + color: #fff;
  702 +}
  703 +
  704 +.mymodal {
  705 + top: 30% !important;
  706 + width: 80% !important;
  707 + margin: 0 auto !important;
  708 + left: 0 !important;
  709 + right: 0 !important;
  710 + z-index: 250;
  711 +}
  712 +
  713 +.mymodal .mymodal-content {
  714 + height: auto !important;
  715 +}
  716 +
  717 +.viewBox1 {
  718 + background: #811a1f;
  719 +}
  720 +
  721 +/* 商务宴会 */
  722 +.viewBox2 {
  723 + background: #fff;
  724 +}
  725 +
  726 +.viewBox2 .reservationInfo {
  727 + background: url('https://qn.colorcun.com/invitation12Bj.png') no-repeat;
  728 + padding: 220rpx 20rpx 120rpx;
  729 + box-sizing: border-box;
  730 + position: relative;
  731 + color: #000;
  732 + background-size: cover;
  733 +}
  734 +
  735 +.viewBox2 .infoTopText1 {
  736 + font-size: 60rpx;
  737 + font-family: Sinter;
  738 + line-height: 60rpx;
  739 + letter-spacing: 14rpx;
  740 + font-weight: 500;
  741 + margin-bottom: 40rpx;
  742 +}
  743 +
  744 +.viewBox2 .infoTopText4 {
  745 + font-size: 100rpx;
  746 + line-height: 100rpx;
  747 + letter-spacing: 20rpx;
  748 +}
  749 +
  750 +.viewBox2 .informationBox {
  751 + background: transparent;
  752 + padding: 40rpx 0;
  753 + position: relative;
  754 +}
  755 +
  756 +.viewBox2 .contentData,
  757 +.viewBox2 .infoItem .record {
  758 + color: #fff;
  759 +}
  760 +
  761 +.viewBox2 .contentDataPhone {
  762 + color: #35E084;
  763 +}
  764 +
  765 +.viewBox2 .arrivalBox button {
  766 + color: #fff;
  767 + border: 2rpx solid #fff;
  768 +}
  769 +
  770 +.viewBox2 .positioning {
  771 + background: #E8CEA8;
  772 + color: #000;
  773 +}
  774 +
  775 +.viewBox2 .receptionBox {
  776 + position: absolute;
  777 + bottom: -160rpx;
  778 + background: #fff;
  779 + color: #000;
  780 + width: -webkit-fill-available;
  781 +}
  782 +
  783 +.viewBox2 .brownFont {
  784 + background: #E8CEA8;
  785 + color: #000;
  786 +}
  787 +
  788 +.viewBox2 .reservationInfoBox {
  789 + position: relative;
  790 +}
  791 +
  792 +.viewBox2 .preferentialCoupon {
  793 + margin: 140rpx 0 0 0;
  794 + padding-top: 40rpx;
  795 +}
  796 +
  797 +.viewBox2 .tileBox {
  798 + background: #F0F0F0;
  799 +}
  800 +
  801 +.viewBox2 .regionItem {
  802 + background: #fff;
  803 +}
  804 +
  805 +.viewBox2 .activeTitleItem {
  806 + background: #242424;
  807 +}
  808 +
  809 +.viewBox2 .activeTitleItem::after {
  810 + border-top: 20rpx solid #242424;
  811 +}
  812 +
  813 +.viewBox2 .favouredPolicy {
  814 + border: 2rpx solid #000000;
  815 + color: #000;
  816 +}
  817 +
  818 +.viewBox2 .rechargeBtn navigator {
  819 + background: #E8CEA8;
  820 + color: #000;
  821 +}
  822 +
  823 +.viewBox2 .couponBtn {
  824 + background: #000;
  825 + color: #FFEFD6;
  826 +}
  827 +
  828 +.viewBox2 .shareItem,
  829 +.viewBox2 .moreBtn,
  830 +.viewBox2 .paymenBtn {
  831 + color: #000;
  832 + border: 2rpx solid #000;
  833 +}
  834 +
  835 +.viewBox2 .shareItem {
  836 + background: #E8CEA8;
  837 + border: none;
  838 +}
  839 +
  840 +
  841 +.viewBox2 .pageSpacing {
  842 + position: relative;
  843 + display: flex;
  844 + justify-content: center;
  845 + align-items: center;
  846 + white-space: nowrap;
  847 + width: auto;
  848 + overflow-x: scroll;
  849 + border-bottom-left-radius: 10rpx;
  850 + border-bottom-right-radius: 10rpx;
  851 +}
  852 +
  853 +
  854 +.viewBox2 .pageSpacing1 {
  855 + position: relative;
  856 + display: flex;
  857 + white-space: nowrap;
  858 + width: auto;
  859 + overflow-x: scroll;
  860 + border-bottom-left-radius: 10rpx;
  861 + border-bottom-right-radius: 10rpx;
  862 + padding-left: 20rpx;
  863 +}
  864 +
  865 +.viewBox2 .imgs {
  866 + position: relative;
  867 + display: flex;
  868 + white-space: nowrap;
  869 + width: 640rpx;
  870 + height: 480rpx;
  871 + margin-right: 30rpx;
  872 +}
  873 +
  874 +.viewBox2 .imgs text {
  875 + background: #515151;
  876 + color: #fff;
  877 + position: absolute;
  878 + left: 0;
  879 + bottom: 0;
  880 + height: 64rpx;
  881 + line-height: 64rpx;
  882 + width: 640rpx;
  883 + text-align: center;
  884 + border-bottom-left-radius: 16rpx;
  885 + border-bottom-right-radius: 16rpx;
  886 +}
  887 +
  888 +.viewBox2 .imageStyle {
  889 + display: inline-block;
  890 + width: 640rpx;
  891 + height: 480rpx;
  892 + border-radius: 16rpx;
  893 +}
  894 +
  895 +.viewBox2 .titleLine {
  896 + width: 8rpx;
  897 + height: 36rpx;
  898 + background: #000;
  899 + margin-right: 24rpx;
  900 +}
  901 +
  902 +.viewBox2 .titleBox {
  903 + display: flex;
  904 + align-items: center;
  905 + margin: 0 24rpx 40rpx 0;
  906 +}
  907 +
  908 +.viewBox2 .publicModule {
  909 + align-items: flex-start;
  910 + padding-bottom: 0;
  911 +}
  912 +
  913 +.viewBox2 .publicModule image,
  914 +.viewBox2 .labelBox .texts {
  915 + margin-bottom: 40rpx;
  916 + width: 100%;
  917 +}
  918 +
  919 +.viewBox2 .businessBox {
  920 + margin-top: 30rpx;
  921 +}
  922 +
  923 +.viewBox2 .videoBox {
  924 + display: flex;
  925 + flex-wrap: wrap;
  926 + align-items: center;
  927 + justify-content: center;
  928 +}
  929 +
  930 +.viewBox2 .videoBox video {
  931 + width: 100%;
  932 + box-sizing: border-box;
  933 +}
  934 +
  935 +.viewBox2 .businessBox {
  936 + color: #000;
  937 +}
  938 +
  939 +.viewBox2 .entrance {
  940 + display: flex;
  941 + flex-direction: column;
  942 + position: absolute;
  943 + right: 3%;
  944 + top: -17%;
  945 + z-index: 200;
  946 +}
  947 +
  948 +.viewBox2 .entrance1 {
  949 + top: -35%;
  950 +}
  951 +
  952 +.viewBox2 .entrance image {
  953 + width: 52rpx;
  954 + height: 52rpx;
  955 +}
  956 +
  957 +.viewBox2 .entranceItem {
  958 + display: flex;
  959 + flex-direction: column;
  960 + align-items: center;
  961 + color: #FFF7DA;
  962 + margin-bottom: 32rpx;
  963 +}
  964 +
  965 +.viewBox2 .entranceItem:nth-last-of-type(1) {
  966 + margin-bottom: 0;
  967 +}
  968 +
  969 +.viewBox2 .musicImg {
  970 + top: 14%;
  971 +}
  972 +
  973 +.viewBox2 .infoItem {
  974 + margin-right: 160rpx;
  975 +}
  976 +
  977 +.viewBox2 .addressInfo,
  978 +.viewBox2 .infoRight {
  979 + margin-right: 0;
  980 +}
  981 +
  982 +.viewBox2 .giftImg {
  983 + left: 2%;
  984 + top: 27%;
  985 +}