Commit 4b099a312cec3a70c885f047a0ded30e93233220

Authored by pengye
1 parent a3b362d4

邀请函--生日宴用餐类型

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