Commit e5663098cc70b07c72a6e7ccfe9003cf5cb66a72

Authored by pengye
1 parent 44e25a90

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

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