Commit b2c7d0bd62209198b15de328ab0b21160964898a

Authored by pengye
1 parent 47afa499

转发邀请函默认开启,复制微信提示文字修改

Showing 38 changed files with 483 additions and 122 deletions
@@ -6,6 +6,13 @@ import canvas from '../../pages/customer/canvas'; @@ -6,6 +6,13 @@ import canvas from '../../pages/customer/canvas';
6 const plugin = requirePlugin("WechatSI"); 6 const plugin = requirePlugin("WechatSI");
7 7
8 export default { 8 export default {
  9 + // Default forwarding to enabled; explicit 0 keeps it disabled
  10 + normalizeMarketing(marketing) {
  11 + marketing = marketing && typeof marketing === 'object' ? marketing : {};
  12 + marketing.is_transpond = (marketing.is_transpond === 0 || marketing.is_transpond === '0') ? '0' : '1';
  13 + return marketing;
  14 + },
  15 +
9 // 获取所有的券并且展示(2-13页面) 16 // 获取所有的券并且展示(2-13页面)
10 addCoupons(coupons, couponList) { 17 addCoupons(coupons, couponList) {
11 if (coupons && util.getType(coupons) == 'object') { 18 if (coupons && util.getType(coupons) == 'object') {
@@ -81,6 +88,12 @@ export default { @@ -81,6 +88,12 @@ export default {
81 wx.setClipboardData({ 88 wx.setClipboardData({
82 data: this.data.staffinfo.wechat, 89 data: this.data.staffinfo.wechat,
83 success(res) { 90 success(res) {
  91 + // 覆盖系统默认的「内容已复制」提示
  92 + wx.showToast({
  93 + title: '微信号已复制,去粘贴搜索添加吧!',
  94 + icon: 'none',
  95 + duration: 2000
  96 + })
84 wx.getClipboardData({ 97 wx.getClipboardData({
85 success(res) { 98 success(res) {
86 console.log(res.data) // data 99 console.log(res.data) // data
@@ -150,7 +163,10 @@ export default { @@ -150,7 +163,10 @@ export default {
150 this.setData({ 163 this.setData({
151 timeList, 164 timeList,
152 isMany, 165 isMany,
  166 + mealName: obj && obj.length > 0 ? (obj[0].mname || '') : '', // 多时段餐段名(新版邀请函 {餐段} 用)
153 }) 167 })
  168 + // 页面自行实现 refreshTitleRows 时,多时段数据回来后刷新一次
  169 + if (typeof this.refreshTitleRows === 'function') this.refreshTitleRows();
154 // 获取转发客人卡片设置 170 // 获取转发客人卡片设置
155 let lite = lite_style || '3'; 171 let lite = lite_style || '3';
156 let liteStyle = lite.split('-'); 172 let liteStyle = lite.split('-');
@@ -1152,9 +1168,9 @@ export default { @@ -1152,9 +1168,9 @@ export default {
1152 } 1168 }
1153 intel.imgsInfo = imgs; 1169 intel.imgsInfo = imgs;
1154 if (intel.content && intel.content.length > 0 && intel.is_introduce_all == '1') { 1170 if (intel.content && intel.content.length > 0 && intel.is_introduce_all == '1') {
1155 - intel.textInfo = intel.content.filter(item => item.type === "2").map(item => item.content).join('\n');  
1156 - intel.imgsInfo = intel.content.filter(item => item.type === "1" && item.content).map(item => item.content);  
1157 - intel.videosInfo = intel.content.filter(item => (item.type === "3" && item.content)); 1171 + intel.textInfo = intel.content.filter(item => item.type == "2").map(item => item.content).join('\n');
  1172 + intel.imgsInfo = intel.content.filter(item => item.type == "1" && item.content).map(item => item.content);
  1173 + intel.videosInfo = intel.content.filter(item => (item.type == "3" && item.content));
1158 } 1174 }
1159 return intel 1175 return intel
1160 }, 1176 },
@@ -381,7 +381,7 @@ Page({ @@ -381,7 +381,7 @@ Page({
381 let StyleType, home, chef, marketing, coupon, coupon_data_pay, coupon_data_free, reserve, swich_phone, is_comments, signboard, store; 381 let StyleType, home, chef, marketing, coupon, coupon_data_pay, coupon_data_free, reserve, swich_phone, is_comments, signboard, store;
382 chef = util.determine(data.chef); 382 chef = util.determine(data.chef);
383 reserve = util.determine(data.reserve); 383 reserve = util.determine(data.reserve);
384 - marketing = util.determine(data.marketing); 384 + marketing = this.normalizeMarketing(util.determine(data.marketing));
385 signboard = util.determine(data.signboard); 385 signboard = util.determine(data.signboard);
386 store = util.determine(data.store); 386 store = util.determine(data.store);
387 home = util.determine(data.home); 387 home = util.determine(data.home);
1 <!--pack-invitation/pages/detail_owner_invitation10.wxml--> 1 <!--pack-invitation/pages/detail_owner_invitation10.wxml-->
2 <import src="../common/parts.wxml" /> 2 <import src="../common/parts.wxml" />
3 <import src="../../pages/tpl/invitation"></import> 3 <import src="../../pages/tpl/invitation"></import>
  4 +<view class="pageWrap {{themeColor}} viewBox">
4 <nav hasHome class="navhome" backgroundColor="#ffeddc" place="{{true}}"></nav> 5 <nav hasHome class="navhome" backgroundColor="#ffeddc" place="{{true}}"></nav>
5 <scroll-view scroll-y class="viewBox"> 6 <scroll-view scroll-y class="viewBox">
6 <!-- 音乐开关 --> 7 <!-- 音乐开关 -->
@@ -329,4 +330,5 @@ @@ -329,4 +330,5 @@
329 <!-- 截屏提示弹窗 --> 330 <!-- 截屏提示弹窗 -->
330 <template is="payModal" data="{{detail: detail, options: options, marketing: marketing, imgSrc: imgSrc}}" /> 331 <template is="payModal" data="{{detail: detail, options: options, marketing: marketing, imgSrc: imgSrc}}" />
331 <!-- 领券弹窗(2~12 通用;13 保持页面内独立) --> 332 <!-- 领券弹窗(2~12 通用;13 保持页面内独立) -->
332 -<template is="couponModal" data="{{seller: seller, reserve: reserve, totalPrice: totalPrice, purePhoneNumber: purePhoneNumber, countDown: countDown}}" />  
  333 +<template is="couponModal" data="{{seller: seller, reserve: reserve, totalPrice: totalPrice, purePhoneNumber: purePhoneNumber, countDown: countDown}}" />
  334 +</view>
1 /* pack-invitation/pages/detail_owner_invitation10.wxss */ 1 /* pack-invitation/pages/detail_owner_invitation10.wxss */
2 @import "../../pages/tpl/tpls.wxss"; 2 @import "../../pages/tpl/tpls.wxss";
3 3
  4 +.pageWrap {
  5 + position: relative;
  6 + width: 100%;
  7 + min-height: 100vh;
  8 + overflow-x: hidden;
  9 +}
  10 +
4 11
5 .viewBox { 12 .viewBox {
6 background: #ffeddc; 13 background: #ffeddc;
@@ -398,7 +398,7 @@ Page({ @@ -398,7 +398,7 @@ Page({
398 let StyleType, home, chef, marketing, coupon, coupon_data_pay, coupon_data_free, reserve, swich_phone, is_comments, signboard, store; 398 let StyleType, home, chef, marketing, coupon, coupon_data_pay, coupon_data_free, reserve, swich_phone, is_comments, signboard, store;
399 chef = util.determine(data.chef); 399 chef = util.determine(data.chef);
400 reserve = util.determine(data.reserve); 400 reserve = util.determine(data.reserve);
401 - marketing = util.determine(data.marketing); 401 + marketing = this.normalizeMarketing(util.determine(data.marketing));
402 signboard = util.determine(data.signboard); 402 signboard = util.determine(data.signboard);
403 store = util.determine(data.store); 403 store = util.determine(data.store);
404 home = util.determine(data.home); 404 home = util.determine(data.home);
1 <!--pack-invitation/pages/detail_owner_invitation11.wxml--> 1 <!--pack-invitation/pages/detail_owner_invitation11.wxml-->
2 <import src="../common/parts.wxml" /> 2 <import src="../common/parts.wxml" />
3 <import src="../../pages/tpl/invitation"></import> 3 <import src="../../pages/tpl/invitation"></import>
  4 +<view class="pageWrap {{themeColor}} viewBox viewBox{{bookType}}">
4 <nav hasHome class="navhome" backgroundColor="{{show_white ? colors : 'transparent'}}" place="{{false}}"></nav> 5 <nav hasHome class="navhome" backgroundColor="{{show_white ? colors : 'transparent'}}" place="{{false}}"></nav>
5 <scroll-view scroll-y class="viewBox viewBox{{bookType}}"> 6 <scroll-view scroll-y class="viewBox viewBox{{bookType}}">
6 <!-- 音乐开关 --> 7 <!-- 音乐开关 -->
@@ -672,4 +673,5 @@ @@ -672,4 +673,5 @@
672 <!-- 截屏提示弹窗 --> 673 <!-- 截屏提示弹窗 -->
673 <template is="payModal" data="{{detail: detail, options: options, marketing: marketing, imgSrc: imgSrc}}" /> 674 <template is="payModal" data="{{detail: detail, options: options, marketing: marketing, imgSrc: imgSrc}}" />
674 <!-- 领券弹窗(2~12 通用;13 保持页面内独立) --> 675 <!-- 领券弹窗(2~12 通用;13 保持页面内独立) -->
675 -<template is="couponModal" data="{{seller: seller, reserve: reserve, totalPrice: totalPrice, purePhoneNumber: purePhoneNumber, countDown: countDown}}" />  
  676 +<template is="couponModal" data="{{seller: seller, reserve: reserve, totalPrice: totalPrice, purePhoneNumber: purePhoneNumber, countDown: countDown}}" />
  677 +</view>
1 /* pack-invitation/pages/detail_owner_invitation11.wxss */ 1 /* pack-invitation/pages/detail_owner_invitation11.wxss */
2 @import "../../pages/tpl/tpls.wxss"; 2 @import "../../pages/tpl/tpls.wxss";
3 3
  4 +.pageWrap {
  5 + position: relative;
  6 + width: 100%;
  7 + min-height: 100vh;
  8 + overflow-x: hidden;
  9 +}
  10 +
4 11
5 @font-face { 12 @font-face {
6 font-family: 'Abel'; 13 font-family: 'Abel';
@@ -404,7 +404,7 @@ Page({ @@ -404,7 +404,7 @@ Page({
404 let StyleType, home, chef, marketing, coupon, coupon_data_pay, coupon_data_free, reserve, swich_phone, is_comments, signboard, store; 404 let StyleType, home, chef, marketing, coupon, coupon_data_pay, coupon_data_free, reserve, swich_phone, is_comments, signboard, store;
405 chef = util.determine(data.chef); 405 chef = util.determine(data.chef);
406 reserve = util.determine(data.reserve); 406 reserve = util.determine(data.reserve);
407 - marketing = util.determine(data.marketing); 407 + marketing = this.normalizeMarketing(util.determine(data.marketing));
408 signboard = util.determine(data.signboard); 408 signboard = util.determine(data.signboard);
409 store = util.determine(data.store); 409 store = util.determine(data.store);
410 home = util.determine(data.home); 410 home = util.determine(data.home);
1 <!--pack-invitation/pages/detail_owner_invitation12.wxml--> 1 <!--pack-invitation/pages/detail_owner_invitation12.wxml-->
2 <import src="../common/parts.wxml" /> 2 <import src="../common/parts.wxml" />
3 <import src="../../pages/tpl/invitation"></import> 3 <import src="../../pages/tpl/invitation"></import>
  4 +<view class="pageWrap {{themeColor}} viewBox viewBox{{bookType}}">
4 <nav hasHome class="navhome" backgroundColor="{{show_white ? colors : 'transparent'}}" place="{{false}}"></nav> 5 <nav hasHome class="navhome" backgroundColor="{{show_white ? colors : 'transparent'}}" place="{{false}}"></nav>
5 <scroll-view scroll-y class="viewBox viewBox{{bookType}}"> 6 <scroll-view scroll-y class="viewBox viewBox{{bookType}}">
6 <!-- 音乐开关 --> 7 <!-- 音乐开关 -->
@@ -399,4 +400,5 @@ @@ -399,4 +400,5 @@
399 <!-- 截屏提示弹窗 --> 400 <!-- 截屏提示弹窗 -->
400 <template is="payModal" data="{{detail: detail, options: options, marketing: marketing, imgSrc: imgSrc}}" /> 401 <template is="payModal" data="{{detail: detail, options: options, marketing: marketing, imgSrc: imgSrc}}" />
401 <!-- 领券弹窗(2~12 通用;13 保持页面内独立) --> 402 <!-- 领券弹窗(2~12 通用;13 保持页面内独立) -->
402 -<template is="couponModal" data="{{seller: seller, reserve: reserve, totalPrice: totalPrice, purePhoneNumber: purePhoneNumber, countDown: countDown}}" />  
  403 +<template is="couponModal" data="{{seller: seller, reserve: reserve, totalPrice: totalPrice, purePhoneNumber: purePhoneNumber, countDown: countDown}}" />
  404 +</view>
1 /* pack-invitation/pages/detail_owner_invitation12.wxss */ 1 /* pack-invitation/pages/detail_owner_invitation12.wxss */
2 @import "../../pages/tpl/tpls.wxss"; 2 @import "../../pages/tpl/tpls.wxss";
3 3
  4 +.pageWrap {
  5 + position: relative;
  6 + width: 100%;
  7 + min-height: 100vh;
  8 + overflow-x: hidden;
  9 +}
  10 +
4 @font-face { 11 @font-face {
5 font-family: 'Abel'; 12 font-family: 'Abel';
6 font-style: normal; 13 font-style: normal;
@@ -395,7 +395,7 @@ Page({ @@ -395,7 +395,7 @@ Page({
395 let colors, settingUrl, inviteImgUrl, themeColor, StyleType, titleType, home, chef, marketing, coupon, coupon_data_pay, coupon_data_free, reserve, swich_phone, is_comments, signboard, store; 395 let colors, settingUrl, inviteImgUrl, themeColor, StyleType, titleType, home, chef, marketing, coupon, coupon_data_pay, coupon_data_free, reserve, swich_phone, is_comments, signboard, store;
396 chef = util.determine(data.chef); 396 chef = util.determine(data.chef);
397 reserve = util.determine(data.reserve); 397 reserve = util.determine(data.reserve);
398 - marketing = util.determine(data.marketing); 398 + marketing = this.normalizeMarketing(util.determine(data.marketing));
399 signboard = util.determine(data.signboard); 399 signboard = util.determine(data.signboard);
400 store = util.determine(data.store); 400 store = util.determine(data.store);
401 home = util.determine(data.home); 401 home = util.determine(data.home);
1 <!--pack-invitation/pages/detail_owner_invitation13.wxml--> 1 <!--pack-invitation/pages/detail_owner_invitation13.wxml-->
2 <import src="../common/parts.wxml" /> 2 <import src="../common/parts.wxml" />
3 <import src="../../pages/tpl/invitation"></import> 3 <import src="../../pages/tpl/invitation"></import>
  4 +<view class="pageWrap {{themeColor}} viewBox viewBox11">
4 <nav hasHome id='nav' backgroundColor="{{show_white ? colors : 'transparent'}}" place="{{false}}"></nav> 5 <nav hasHome id='nav' backgroundColor="{{show_white ? colors : 'transparent'}}" place="{{false}}"></nav>
5 <scroll-view scroll-y class="viewBox viewBox11"> 6 <scroll-view scroll-y class="viewBox viewBox11">
6 <!-- 音乐开关 --> 7 <!-- 音乐开关 -->
@@ -304,4 +305,5 @@ @@ -304,4 +305,5 @@
304 </view> 305 </view>
305 <view class="closeBox font28r">{{countDown}} 秒后自动关闭</view> 306 <view class="closeBox font28r">{{countDown}} 秒后自动关闭</view>
306 </view> 307 </view>
307 -</my-modal>  
  308 +</my-modal>
  309 +</view>
1 /* pack-invitation/pages/detail_owner_invitation13.wxss */ 1 /* pack-invitation/pages/detail_owner_invitation13.wxss */
2 @import "../../pages/tpl/tpls.wxss"; 2 @import "../../pages/tpl/tpls.wxss";
3 3
  4 +.pageWrap {
  5 + position: relative;
  6 + width: 100%;
  7 + min-height: 100vh;
  8 + overflow-x: hidden;
  9 +}
  10 +
4 @font-face { 11 @font-face {
5 font-family: 'Abel'; 12 font-family: 'Abel';
6 font-style: normal; 13 font-style: normal;
@@ -7,6 +7,15 @@ import RS from '../../utils/reserveStatus' @@ -7,6 +7,15 @@ import RS from '../../utils/reserveStatus'
7 import inviteBase from '../common/inviteBase'; 7 import inviteBase from '../common/inviteBase';
8 import convertSolarLunar from '../../components/calendar/func/convertSolarLunar'; 8 import convertSolarLunar from '../../components/calendar/func/convertSolarLunar';
9 9
  10 +/** 农历:正月初七(解析失败返回空) */
  11 +function getLunarText(ddate) {
  12 + if (!ddate) return '';
  13 + const time = new Date(ddate * 1000);
  14 + const lunar = convertSolarLunar.solar2lunar(time.getFullYear(), time.getMonth() + 1, time.getDate());
  15 + if (!lunar || lunar === -1) return '';
  16 + return lunar.IMonthCn + lunar.IDayCn;
  17 +}
  18 +
10 /** 用餐日期:2027-02-14 星期六 正月初七 */ 19 /** 用餐日期:2027-02-14 星期六 正月初七 */
11 function formatInviteDate(ddate) { 20 function formatInviteDate(ddate) {
12 if (!ddate) return ''; 21 if (!ddate) return '';
@@ -63,6 +72,11 @@ Page({ @@ -63,6 +72,11 @@ Page({
63 titleStyle: '', //大标题内联色 72 titleStyle: '', //大标题内联色
64 shopStyle: '', //店名内联色 73 shopStyle: '', //店名内联色
65 StyleTypeNum: 1, //样式1234 74 StyleTypeNum: 1, //样式1234
  75 + titleInfo: [], //预订信息配置(接口未就绪,先用死数据)
  76 + mealName: '', //多时段餐段名(getLocalLunchTime 回填,{餐段} 用它)
  77 + titleRows: [], //预订信息行(样式1/3 按配置顺序渲染)
  78 + titleRowMap: {}, //按字段类型索引(样式2/4 固定位置用)
  79 + speakImgMode: '1', // 商家有话说图片:0平铺 1轮播(餐厅介绍/招牌菜品/主厨介绍)
66 isCustom: '0', // 1自定义白字,0主题色 80 isCustom: '0', // 1自定义白字,0主题色
67 options: { 81 options: {
68 tplid: '' 82 tplid: ''
@@ -100,7 +114,6 @@ Page({ @@ -100,7 +114,6 @@ Page({
100 reserveData: {}, //自定义图文数据 114 reserveData: {}, //自定义图文数据
101 showMerchantSpeak: false, // 商家有话说(自定义图文/餐厅/菜品/主厨任一有内容) 115 showMerchantSpeak: false, // 商家有话说(自定义图文/餐厅/菜品/主厨任一有内容)
102 toastBool: false, //支付定金提示框 116 toastBool: false, //支付定金提示框
103 - toastText: '', //支付定金提示文字  
104 paymentId: '', //定金id 117 paymentId: '', //定金id
105 wxml: null, 118 wxml: null,
106 imgSrc: '', //canvas图片地址 119 imgSrc: '', //canvas图片地址
@@ -237,31 +250,10 @@ Page({ @@ -237,31 +250,10 @@ Page({
237 if (shopObj.textFontSize == '1' && shopText.length > 11) shopCls = (shopCls + ' shopWrap').trim(); 250 if (shopObj.textFontSize == '1' && shopText.length > 11) shopCls = (shopCls + ' shopWrap').trim();
238 if (shopObj.textColor) shopStyle = 'color:' + shopObj.textColor; 251 if (shopObj.textColor) shopStyle = 'color:' + shopObj.textColor;
239 252
240 - // 标题:样式2无标题;样式3/4 固定宋体;样式1 可配字体(自定义文案禁用书法)  
241 - if (styleNum === '2') {  
242 - return {  
243 - titleCls: '',  
244 - shopCls,  
245 - titleStyle: '',  
246 - shopStyle  
247 - };  
248 - }  
249 - if (styleNum === '3' || styleNum === '4') {  
250 - titleCls = 'titleFont2';  
251 - if (titleObj.textFontSize) titleCls = (titleCls + ' titleSize' + titleObj.textFontSize).trim();  
252 - if (titleObj.textColor) titleStyle = 'color:' + titleObj.textColor + ';-webkit-text-fill-color:' + titleObj.textColor + ';background-image:none;';  
253 - return {  
254 - titleCls,  
255 - shopCls,  
256 - titleStyle,  
257 - shopStyle  
258 - };  
259 - }  
260 -  
261 - // 样式1 253 + // 大标题:样式1~4 同一套可配(字体/字号/颜色);自定义文案禁用书法
262 const fixedTitle = this.isFixedTitleText(titleObj.textInfo); 254 const fixedTitle = this.isFixedTitleText(titleObj.textInfo);
263 let fontKey = titleObj.textFont ? String(titleObj.textFont) : ''; 255 let fontKey = titleObj.textFont ? String(titleObj.textFont) : '';
264 - if (fontKey === '3' && !fixedTitle) fontKey = '2'; // 自定义文案 → 默认宋体 256 + if (fontKey === '3' && !fixedTitle) fontKey = '1'; // 自定义文案 → 系统默认黑体
265 if (fontKey === '1' || fontKey === '2' || fontKey === '3') titleCls = 'titleFont' + fontKey; 257 if (fontKey === '1' || fontKey === '2' || fontKey === '3') titleCls = 'titleFont' + fontKey;
266 if (titleObj.textFontSize) titleCls = (titleCls + ' titleSize' + titleObj.textFontSize).trim(); 258 if (titleObj.textFontSize) titleCls = (titleCls + ' titleSize' + titleObj.textFontSize).trim();
267 if (titleObj.textColor) titleStyle = 'color:' + titleObj.textColor + ';-webkit-text-fill-color:' + titleObj.textColor + ';background-image:none;'; 259 if (titleObj.textColor) titleStyle = 'color:' + titleObj.textColor + ';-webkit-text-fill-color:' + titleObj.textColor + ';background-image:none;';
@@ -552,7 +544,7 @@ Page({ @@ -552,7 +544,7 @@ Page({
552 reserev.soltName = ''; 544 reserev.soltName = '';
553 const sellerTel = (reserev.seller && reserev.seller.seller_tel) ? reserev.seller.seller_tel : ''; 545 const sellerTel = (reserev.seller && reserev.seller.seller_tel) ? reserev.seller.seller_tel : '';
554 this.setData({ 546 this.setData({
555 - customersList: res.data.openid == getApp().openid ? reserev.customers.slice(1) : [], //预订人返回,邀请人为空 547 + customersList: res.data.openid == getApp().openid ? (reserev.customers || []).slice(1) : [], //预订人返回,邀请人为空
556 reserveOpenid: res.data.openid, 548 reserveOpenid: res.data.openid,
557 detail, 549 detail,
558 is_user_comments: res.data.is_user_comments, 550 is_user_comments: res.data.is_user_comments,
@@ -650,12 +642,93 @@ Page({ @@ -650,12 +642,93 @@ Page({
650 }) 642 })
651 } 643 }
652 }, 644 },
  645 + // 预订信息行:按 titleInfo 的 content 取对应字段(content 只配一个字段;未知字段/空值不显示该行)
  646 + refreshTitleRows(tempDdate) {
  647 + const info = this.data.titleInfo || [];
  648 + const detail = this.data.detail || {};
  649 + const seller = this.data.seller || {};
  650 + const tables = (detail.tables && Array.isArray(detail.tables)) ? detail.tables : [];
  651 + const ddateText = tempDdate || this.data.temp_ddate || '';
  652 + const mealText = this.data.mealName || seller.soltName || '';
  653 + const yearMonthDay = detail.ddate ? util.unixtoTime(detail.ddate, 'YYYY年MM月DD日') : '';
  654 + const weekText = detail.ddate ? util.unixtoTime(detail.ddate, '星期WW') : '';
  655 + const lunarText = getLunarText(detail.ddate);
  656 + const regionText = tables.map(t => t.rname).filter((v, i, arr) => v && arr.indexOf(v) === i).join('、');
  657 + const roomText = tables.map(t => t.name).filter((v, i, arr) => v && arr.indexOf(v) === i).join('、');
  658 + let str = detail.sex == 1 ? '先生' : detail.sex == 2 ? '女士' : detail.sex == 4 ? '贵宾' : '';
  659 + const valueMap = {
  660 + '{姓名}': detail.rname || '',
  661 + "{姓名+称呼}": detail.rname ? (detail.rname + str) : str == '贵宾' ? '贵宾' : '',
  662 + '{公历}': yearMonthDay,
  663 + '{公历+星期}': [yearMonthDay, weekText].filter(v => v).join(' '),
  664 + '{公历+农历}': [yearMonthDay, lunarText].filter(v => v).join(' '),
  665 + '{公历+星期+农历}': [yearMonthDay, weekText, lunarText].filter(v => v).join(' '),
  666 + '{区域名}': regionText,
  667 + '{包间名}': roomText,
  668 + '{区域名+包间名}': seller.tablesText || '',
  669 + '{餐段}': mealText,
  670 + '{就餐时间}': ddateText,
  671 + '{餐段+就餐时间}': [mealText, ddateText].filter(v => v).join(' '),
  672 + '{前台电话}': (seller.tel && seller.tel.length) ? seller.tel.join(' ') : '',
  673 + };
  674 + const typeMap = {
  675 + '{姓名}': 'name',
  676 + '{姓名+称呼}': 'name',
  677 + '{公历}': 'date',
  678 + '{公历+星期}': 'date',
  679 + '{公历+农历}': 'date',
  680 + '{公历+星期+农历}': 'date',
  681 + '{区域名}': 'place',
  682 + '{包间名}': 'place',
  683 + '{区域名+包间名}': 'place',
  684 + '{餐段}': 'time',
  685 + '{就餐时间}': 'time',
  686 + '{餐段+就餐时间}': 'time',
  687 + '{前台电话}': 'phone',
  688 + };
  689 + const rows = [];
  690 + const rowMap = {};
  691 + info.forEach(item => {
  692 + if (!item || !item.content) return;
  693 + const type = typeMap[item.content];
  694 + if (!type) return;
  695 + if (type === 'phone') {
  696 + const values = (seller.tel || []).filter(v => v);
  697 + if (!values.length || rowMap.phone) return;
  698 + rowMap.phone = {
  699 + text: item.text || '',
  700 + content: item.content,
  701 + type,
  702 + value: values.join(' '),
  703 + values,
  704 + };
  705 + return;
  706 + }
  707 + const value = valueMap[item.content] || '';
  708 + if (!value) return;
  709 + const row = {
  710 + text: item.text || '',
  711 + content: item.content,
  712 + type,
  713 + value,
  714 + };
  715 + if (!rowMap[type]) rowMap[type] = row;
  716 + rows.push(row);
  717 + });
  718 + this.setData({
  719 + titleRows: rows,
  720 + titleRowMap: rowMap,
  721 + });
  722 + },
  723 +
653 // 改到店时间(同步 picker index) 724 // 改到店时间(同步 picker index)
654 bindPickerChange(e) { 725 bindPickerChange(e) {
655 this.setData({ 726 this.setData({
656 index: e.detail.value * 1 727 index: e.detail.value * 1
657 }); 728 });
658 inviteBase.bindPickerChange.call(this, e); 729 inviteBase.bindPickerChange.call(this, e);
  730 + const timeList = this.data.timeList || [];
  731 + this.refreshTitleRows(timeList[e.detail.value]);
659 }, 732 },
660 // 去商家主页 733 // 去商家主页
661 sharesettingShop() { 734 sharesettingShop() {
@@ -707,7 +780,7 @@ Page({ @@ -707,7 +780,7 @@ Page({
707 let StyleType, home, chef, marketing, coupon, coupon_data_pay, coupon_data_free, reserve, swich_phone, is_comments, signboard, store; 780 let StyleType, home, chef, marketing, coupon, coupon_data_pay, coupon_data_free, reserve, swich_phone, is_comments, signboard, store;
708 chef = util.determine(data.chef); 781 chef = util.determine(data.chef);
709 reserve = util.determine(data.reserve); 782 reserve = util.determine(data.reserve);
710 - marketing = util.determine(data.marketing); 783 + marketing = this.normalizeMarketing(util.determine(data.marketing));
711 signboard = util.determine(data.signboard); 784 signboard = util.determine(data.signboard);
712 store = util.determine(data.store); 785 store = util.determine(data.store);
713 home = util.determine(data.home); 786 home = util.determine(data.home);
@@ -745,20 +818,101 @@ Page({ @@ -745,20 +818,101 @@ Page({
745 if (store && store.images && store.images.length > 0) store.images = util.determine(store.images); 818 if (store && store.images && store.images.length > 0) store.images = util.determine(store.images);
746 if (reserve && reserve.park_info_images && reserve.park_info_images.length > 0) reserve.park_info_images = util.determine(reserve.park_info_images); 819 if (reserve && reserve.park_info_images && reserve.park_info_images.length > 0) reserve.park_info_images = util.determine(reserve.park_info_images);
747 if (signboard && signboard.images && signboard.images.length > 0) signboard.images = util.determine(signboard.images); 820 if (signboard && signboard.images && signboard.images.length > 0) signboard.images = util.determine(signboard.images);
  821 + // 与模板11 bookType=1 一致:重组文字/轮播图;content 的 type 兼容数字/字符串;无 content 图时回退 images
  822 + if (store) {
  823 + store = this.processInfo(store, '2');
  824 + if (!store.imgsInfo || !store.imgsInfo.length) {
  825 + if (store.images && store.images.length && (!store.is_images || store.is_images != '0')) {
  826 + store.imgsInfo = store.images;
  827 + } else {
  828 + store.imgsInfo = [];
  829 + }
  830 + }
  831 + }
  832 + if (signboard) {
  833 + signboard = this.processInfo(signboard, '3');
  834 + if (!signboard.imgsInfo || !signboard.imgsInfo.length) {
  835 + signboard.imgsInfo = (signboard.images && signboard.images.length) ? signboard.images : [];
  836 + }
  837 + }
  838 + if (chef) {
  839 + chef = this.processInfo(chef, '4');
  840 + if (!chef.imgsInfo || !Array.isArray(chef.imgsInfo) || !chef.imgsInfo.length) {
  841 + if ((!chef.is_images || chef.is_images != '0') && chef.image) {
  842 + chef.imgsInfo = Array.isArray(chef.image) ? chef.image : [chef.image];
  843 + } else {
  844 + chef.imgsInfo = Array.isArray(chef.imgsInfo) ? chef.imgsInfo : (chef.imgsInfo ? [chef.imgsInfo] : []);
  845 + }
  846 + }
  847 + }
748 this.getLocalLunchTime(data.lite_style); 848 this.getLocalLunchTime(data.lite_style);
749 data.is_custom = '0'; 849 data.is_custom = '0';
750 // canChangeBg为1可更换背景图,0不可 850 // canChangeBg为1可更换背景图,0不可
751 let isCustom = data.is_custom == '1' ? '1' : '0'; // 是否自定义:1 是,主题色:0 851 let isCustom = data.is_custom == '1' ? '1' : '0'; // 是否自定义:1 是,主题色:0
752 - let themeColor = isCustom == '1' ? 'pearlWhite' : data.lite_class; 852 + let themeColor = isCustom == '1' ? 'pearlWhite' : data.lite_class ? data.lite_class : 'turmeric';
753 let entranceIcon = 1; 853 let entranceIcon = 1;
754 let actionIcon = 1; 854 let actionIcon = 1;
755 let StyleTypeNum = '1'; //样式类型1234 855 let StyleTypeNum = '1'; //样式类型1234
756 - //大标题(预订安排/邀请函字样) — 内容应固定;自定义文案时书法失效改默认宋体 856 + let titleInfo = [
  857 + // {
  858 + // text:'贵宾1',
  859 + // content:'{姓名}'
  860 + // },
  861 + {
  862 + text: '姓名2',
  863 + content: '{姓名+称呼}'
  864 + },
  865 + // {
  866 + // text:'日期1',
  867 + // content:'{公历}'
  868 + // },
  869 + // {
  870 + // text:'日期2',
  871 + // content:'{公历+星期}'
  872 + // },
  873 + // {
  874 + // text:'日期3',
  875 + // content:'{公历+农历}'
  876 + // },
  877 + {
  878 + text: '日期4',
  879 + content: '{公历+星期+农历}'
  880 + },
  881 + // {
  882 + // text:'包间位置1',
  883 + // content:'{区域名}'
  884 + // },
  885 + // {
  886 + // text:'包间位置2',
  887 + // content:'{包间名}'
  888 + // },
  889 + {
  890 + text: '包间位置3',
  891 + content: '{区域名+包间名}'
  892 + },
  893 + // {
  894 + // text:'就餐时间1',
  895 + // content:'{餐段}'
  896 + // },
  897 + // {
  898 + // text:'就餐时间2',
  899 + // content:'{就餐时间}'
  900 + // },
  901 + {
  902 + text: '就餐时间3',
  903 + content: '{餐段+就餐时间}'
  904 + },
  905 + {
  906 + text: '前台电话',
  907 + content: '{前台电话}'
  908 + }
  909 + ]
  910 + //大标题 — 可配字号/字体/颜色/文案;书法仅「预订安排|邀请函」;换文案时书法降为黑体
757 let titleObj = { 911 let titleObj = {
758 textColor: '#fff', //文字颜色 912 textColor: '#fff', //文字颜色
759 textFont: '3', //文字字体1黑体 2宋体 3书法体(仅固定文案可用) 913 textFont: '3', //文字字体1黑体 2宋体 3书法体(仅固定文案可用)
760 textFontSize: '1', //文字大小 1大号 2中号 3小号 914 textFontSize: '1', //文字大小 1大号 2中号 3小号
761 - textInfo: '邀请函11', //固定:预订安排 / 邀请函 915 + textInfo: '邀请函11', //固定文案:预订安排 / 邀请函
762 } 916 }
763 //店铺名称 — 不可换字体,可换字号/颜色 917 //店铺名称 — 不可换字体,可换字号/颜色
764 let shopObj = { 918 let shopObj = {
@@ -766,6 +920,17 @@ Page({ @@ -766,6 +920,17 @@ Page({
766 textFontSize: '2', 920 textFontSize: '2',
767 textInfo: '长安大排档总店标题', //大号且>11字自动换行 921 textInfo: '长安大排档总店标题', //大号且>11字自动换行
768 } 922 }
  923 + // 商家有话说图片展示:0平铺 1轮播(餐厅介绍 / 招牌菜品 / 主厨介绍)
  924 + let speakImgMode = '0';
  925 + // 轮播时:餐厅介绍把首图、logo 一并并入 imgsInfo(去重,首图/logo 在前)
  926 + if (speakImgMode == '1') {
  927 + store = store || {};
  928 + let headImgs = [];
  929 + if (home && home.image) headImgs.push(home.image);
  930 + if (marketing && marketing.logo) headImgs.push(marketing.logo);
  931 + let rest = (store.imgsInfo || []).filter(url => url && headImgs.indexOf(url) < 0);
  932 + store.imgsInfo = headImgs.concat(rest);
  933 + }
769 const titleShop = this.buildTitleShopStyle(StyleTypeNum, titleObj, shopObj); 934 const titleShop = this.buildTitleShopStyle(StyleTypeNum, titleObj, shopObj);
770 const titleCls = titleShop.titleCls; 935 const titleCls = titleShop.titleCls;
771 const shopCls = titleShop.shopCls; 936 const shopCls = titleShop.shopCls;
@@ -810,11 +975,14 @@ Page({ @@ -810,11 +975,14 @@ Page({
810 shopCls, 975 shopCls,
811 titleStyle, 976 titleStyle,
812 shopStyle, 977 shopStyle,
  978 + speakImgMode,
  979 + titleInfo,
813 isMoreBtn: marketing && marketing.is_online_book == '1' && this.data.options.onlineReserve == '1', 980 isMoreBtn: marketing && marketing.is_online_book == '1' && this.data.options.onlineReserve == '1',
814 isShareItem: this.data.options.isOrder != '1' && marketing && marketing.is_transpond == '1', 981 isShareItem: this.data.options.isOrder != '1' && marketing && marketing.is_transpond == '1',
815 } 982 }
816 console.log('获取数据GetSellerTemplateConf--------------------', obj); 983 console.log('获取数据GetSellerTemplateConf--------------------', obj);
817 this.setData(obj) 984 this.setData(obj)
  985 + this.refreshTitleRows();
818 this.refreshActionBtn(obj) 986 this.refreshActionBtn(obj)
819 this.updateShowMerchantSpeak() 987 this.updateShowMerchantSpeak()
820 this.resolveThemeImg(); 988 this.resolveThemeImg();
@@ -80,28 +80,28 @@ @@ -80,28 +80,28 @@
80 <view class="infoItem" wx:if="{{reserve.swich_booking=='1' && reserve.book_info}}"> 80 <view class="infoItem" wx:if="{{reserve.swich_booking=='1' && reserve.book_info}}">
81 <text space="nbsp" class="contentData font28r bookData">{{reserve.book_info}}</text> 81 <text space="nbsp" class="contentData font28r bookData">{{reserve.book_info}}</text>
82 </view> 82 </view>
83 - <view class="infoItem" wx:if="{{seller.tablesText}}">  
84 - <view class="contentData contentData1">{{seller.tablesText}}</view> 83 + <view class="infoItem" wx:if="{{titleRowMap.place}}">
  84 + <view class="contentData contentData1">{{titleRowMap.place.value}}</view>
85 </view> 85 </view>
86 - <view class="infoItem" wx:if="{{seller.date}}">  
87 - <view class="contentData contentData2">{{seller.date}}</view> 86 + <view class="infoItem" wx:if="{{titleRowMap.date}}">
  87 + <view class="contentData contentData2">{{titleRowMap.date.value}}</view>
88 </view> 88 </view>
89 - <view class="infoItem" wx:if="{{(detail.rnameStr && reserve.swich_customer == '1') || seller.soltName}}"> 89 + <view class="infoItem" wx:if="{{titleRowMap.name || titleRowMap.time}}">
90 <view class="contentData contentWithBtn contentData2 contentData3"> 90 <view class="contentData contentWithBtn contentData2 contentData3">
91 - <text wx:if="{{detail.rnameStr && reserve.swich_customer == '1'}}">{{detail.rnameStr}}订</text>  
92 - <text class="texts1" wx:if="{{detail.rnameStr && reserve.swich_customer == '1' && seller.soltName}}"> | </text>  
93 - <text wx:if="{{seller.soltName}}">{{seller.soltName}}<text wx:if="{{temp_ddate}}"> {{temp_ddate}}</text></text>  
94 - <picker wx:if="{{detail && options && options.isOrder != '1' && (detail.status =='1' || detail.status =='2') && options.hasSellerShare == '1' && seller.soltName}}" bindchange="bindPickerChange" value="{{index}}" range="{{timeList}}"> 91 + <text wx:if="{{titleRowMap.name}}">{{titleRowMap.name.value}}订</text>
  92 + <text class="texts1" wx:if="{{titleRowMap.name && titleRowMap.time}}"> | </text>
  93 + <text wx:if="{{titleRowMap.time}}">{{titleRowMap.time.value}}</text>
  94 + <picker wx:if="{{titleRowMap.time && detail && options && options.isOrder != '1' && (detail.status =='1' || detail.status =='2') && options.hasSellerShare == '1' && seller.soltName}}" bindchange="bindPickerChange" value="{{index}}" range="{{timeList}}">
95 <view class="miniBtn"> 95 <view class="miniBtn">
96 <image class="arrivalImg" src="https://qn.colorcun.com/editTimeIcon{{actionIcon}}.png" mode="" /><text>改时间</text> 96 <image class="arrivalImg" src="https://qn.colorcun.com/editTimeIcon{{actionIcon}}.png" mode="" /><text>改时间</text>
97 </view> 97 </view>
98 </picker> 98 </picker>
99 </view> 99 </view>
100 </view> 100 </view>
101 - <view class="infoItem" wx:if="{{swich_phone!='0' && seller.tel && seller.tel.length>0}}"> 101 + <view class="infoItem" wx:if="{{titleRowMap.phone}}">
102 <view class="contentData contentWithBtn contentData2"> 102 <view class="contentData contentWithBtn contentData2">
103 <text>前台电话</text> 103 <text>前台电话</text>
104 - <text wx:for="{{seller.tel}}" wx:key="index" data-phone="{{item}}" class="contentDataPhone" bindtap="call"> {{item}}</text> 104 + <text wx:for="{{titleRowMap.phone.values}}" wx:key="index" data-phone="{{item}}" class="contentDataPhone" bindtap="call"> {{item}}</text>
105 <view class="miniBtn" data-phone="{{contactPhone || seller.tel[0]}}" bindtap="call"> 105 <view class="miniBtn" data-phone="{{contactPhone || seller.tel[0]}}" bindtap="call">
106 <image src="https://qn.colorcun.com/contactMeIcon{{actionIcon}}.png" mode="" /><text>联系我</text> 106 <image src="https://qn.colorcun.com/contactMeIcon{{actionIcon}}.png" mode="" /><text>联系我</text>
107 </view> 107 </view>
@@ -128,15 +128,14 @@ @@ -128,15 +128,14 @@
128 <view class="infoItem" wx:if="{{reserve.swich_booking=='1' && reserve.book_info}}"> 128 <view class="infoItem" wx:if="{{reserve.swich_booking=='1' && reserve.book_info}}">
129 <text space="nbsp" class="contentData font28r bookData">{{reserve.book_info}}</text> 129 <text space="nbsp" class="contentData font28r bookData">{{reserve.book_info}}</text>
130 </view> 130 </view>
131 - <view class="bookInvite">{{detail.rnameStr ? detail.rnameStr + '邀您赴宴' : '邀您赴宴'}}</view> 131 + <view class="bookInvite">{{titleRowMap.name ? titleRowMap.name.value + '邀您赴宴' : '邀您赴宴'}}</view>
132 <view class="bookDivider"></view> 132 <view class="bookDivider"></view>
133 - <view class="infoItem style4Item" wx:if="{{seller.date || seller.soltName || temp_ddate}}"> 133 + <view class="infoItem style4Item" wx:if="{{titleRowMap.date || titleRowMap.time}}">
134 <view class="label font24r">时间</view> 134 <view class="label font24r">时间</view>
135 <view class="contentData timeBox"> 135 <view class="contentData timeBox">
136 - <view class="timeDate" wx:if="{{seller.date}}">{{seller.date}}</view>  
137 - <view class="contentWithBtn timeSlot" wx:if="{{seller.soltName || temp_ddate}}">  
138 - <text wx:if="{{seller.soltName}}">{{seller.soltName}}</text>  
139 - <text wx:if="{{temp_ddate}}"> {{temp_ddate}}</text> 136 + <view class="timeDate" wx:if="{{titleRowMap.date}}">{{titleRowMap.date.value}}</view>
  137 + <view class="contentWithBtn timeSlot" wx:if="{{titleRowMap.time}}">
  138 + <text>{{titleRowMap.time.value}}</text>
140 <picker wx:if="{{detail && options && options.isOrder != '1' && (detail.status =='1' || detail.status =='2') && options.hasSellerShare == '1'}}" bindchange="bindPickerChange" value="{{index}}" range="{{timeList}}"> 139 <picker wx:if="{{detail && options && options.isOrder != '1' && (detail.status =='1' || detail.status =='2') && options.hasSellerShare == '1'}}" bindchange="bindPickerChange" value="{{index}}" range="{{timeList}}">
141 <view class="miniBtn"> 140 <view class="miniBtn">
142 <image class="arrivalImg" src="https://qn.colorcun.com/editTimeIcon{{actionIcon}}.png" mode="" /><text>改时间</text> 141 <image class="arrivalImg" src="https://qn.colorcun.com/editTimeIcon{{actionIcon}}.png" mode="" /><text>改时间</text>
@@ -145,17 +144,17 @@ @@ -145,17 +144,17 @@
145 </view> 144 </view>
146 </view> 145 </view>
147 </view> 146 </view>
148 - <view class="infoItem style4Item" wx:if="{{seller.name || reserve.seller_name || seller.tablesText}}"> 147 + <view class="infoItem style4Item" wx:if="{{seller.name || reserve.seller_name || titleRowMap.place}}">
149 <view class="label font24r">地点及餐位</view> 148 <view class="label font24r">地点及餐位</view>
150 <view class="contentData placeBox"> 149 <view class="contentData placeBox">
151 <view class="placeShop" wx:if="{{seller.name || reserve.seller_name}}">{{seller.name || reserve.seller_name}}</view> 150 <view class="placeShop" wx:if="{{seller.name || reserve.seller_name}}">{{seller.name || reserve.seller_name}}</view>
152 - <view class="placeTable" wx:if="{{seller.tablesText}}">{{seller.tablesText}}</view> 151 + <view class="placeTable" wx:if="{{titleRowMap.place}}">{{titleRowMap.place.value}}</view>
153 </view> 152 </view>
154 </view> 153 </view>
155 - <view class="infoItem style4Item" wx:if="{{swich_phone!='0' && seller.tel && seller.tel.length>0}}"> 154 + <view class="infoItem style4Item" wx:if="{{titleRowMap.phone}}">
156 <view class="label font24r">前台电话</view> 155 <view class="label font24r">前台电话</view>
157 <view class="contentData contentWithBtn"> 156 <view class="contentData contentWithBtn">
158 - <text wx:for="{{seller.tel}}" wx:key="index" data-phone="{{item}}" class="contentDataPhone" bindtap="call">{{index > 0 ? ' ' : ''}}{{item}}</text> 157 + <text wx:for="{{titleRowMap.phone.values}}" wx:key="index" data-phone="{{item}}" class="contentDataPhone" bindtap="call">{{index > 0 ? ' ' : ''}}{{item}}</text>
159 <view class="miniBtn" data-phone="{{contactPhone || seller.tel[0]}}" bindtap="call"> 158 <view class="miniBtn" data-phone="{{contactPhone || seller.tel[0]}}" bindtap="call">
160 <image src="https://qn.colorcun.com/contactMeIcon{{actionIcon}}.png" mode="" /><text>联系我</text> 159 <image src="https://qn.colorcun.com/contactMeIcon{{actionIcon}}.png" mode="" /><text>联系我</text>
161 </view> 160 </view>
@@ -176,35 +175,29 @@ @@ -176,35 +175,29 @@
176 <view class="infoItem" wx:if="{{(StyleTypeNum == 3 || StyleTypeNum == '3') && reserve.swich_booking=='1' && reserve.book_info}}"> 175 <view class="infoItem" wx:if="{{(StyleTypeNum == 3 || StyleTypeNum == '3') && reserve.swich_booking=='1' && reserve.book_info}}">
177 <text space="nbsp" class="contentData font28r bookData">{{reserve.book_info}}</text> 176 <text space="nbsp" class="contentData font28r bookData">{{reserve.book_info}}</text>
178 </view> 177 </view>
179 - <view class="infoItem" wx:if="{{detail.rnameStr && reserve.swich_customer == '1'}}">  
180 - <view class="label font24r">预订贵宾</view>  
181 - <view class="contentData">{{detail.rnameStr}}</view>  
182 - </view>  
183 - <view class="infoItem" wx:if="{{seller.date}}">  
184 - <view class="label font24r">用餐日期</view>  
185 - <view class="contentData">{{seller.date}}</view>  
186 - </view>  
187 - <view class="infoItem" wx:if="{{seller.tablesText}}">  
188 - <view class="label font24r">用餐位置</view>  
189 - <view class="contentData">{{seller.tablesText}}</view>  
190 - </view>  
191 - <view class="infoItem" wx:if="{{seller.soltName}}">  
192 - <view class="label font24r">用餐时间</view>  
193 - <view class="valueRow">  
194 - <view class="contentData">{{seller.soltName}}<text class="marLeft" wx:if="{{temp_ddate}}">{{temp_ddate}}</text></view>  
195 - <picker wx:if="{{detail && options && options.isOrder != '1' && (detail.status =='1' || detail.status =='2') && options.hasSellerShare == '1'}}" bindchange="bindPickerChange" value="{{index}}" range="{{timeList}}">  
196 - <view class="miniBtn">  
197 - <image class="arrivalImg" src="https://qn.colorcun.com/editTimeIcon{{actionIcon}}.png" mode="" /><text>改时间</text>  
198 - </view>  
199 - </picker> 178 + <block wx:for="{{titleRows}}" wx:key="index">
  179 + <view class="infoItem" wx:if="{{item.type != 'time'}}">
  180 + <view class="label font24r">{{item.text}}</view>
  181 + <view class="contentData">{{item.value}}</view>
200 </view> 182 </view>
201 - </view> 183 + <view class="infoItem" wx:else>
  184 + <view class="label font24r">{{item.text}}</view>
  185 + <view class="valueRow">
  186 + <view class="contentData">{{item.value}}</view>
  187 + <picker wx:if="{{detail && options && options.isOrder != '1' && (detail.status =='1' || detail.status =='2') && options.hasSellerShare == '1'}}" bindchange="bindPickerChange" value="{{index}}" range="{{timeList}}">
  188 + <view class="miniBtn">
  189 + <image class="arrivalImg" src="https://qn.colorcun.com/editTimeIcon{{actionIcon}}.png" mode="" /><text>改时间</text>
  190 + </view>
  191 + </picker>
  192 + </view>
  193 + </view>
  194 + </block>
202 <!-- 样式3:标签固定左侧,右侧内容折行 --> 195 <!-- 样式3:标签固定左侧,右侧内容折行 -->
203 <block wx:if="{{StyleTypeNum == 3 || StyleTypeNum == '3'}}"> 196 <block wx:if="{{StyleTypeNum == 3 || StyleTypeNum == '3'}}">
204 - <view class="infoItem infoLine" wx:if="{{swich_phone!='0' && seller.tel && seller.tel.length>0}}"> 197 + <view class="infoItem infoLine" wx:if="{{titleRowMap.phone}}">
205 <view class="label font24r">前台电话</view> 198 <view class="label font24r">前台电话</view>
206 <view class="contentData contentWithBtn infoRight"> 199 <view class="contentData contentWithBtn infoRight">
207 - <text wx:for="{{seller.tel}}" wx:key="index" data-phone="{{item}}" class="contentDataPhone" bindtap="call">{{index > 0 ? ' ' : ''}}{{item}}</text> 200 + <text wx:for="{{titleRowMap.phone.values}}" wx:key="index" data-phone="{{item}}" class="contentDataPhone" bindtap="call">{{index > 0 ? ' ' : ''}}{{item}}</text>
208 <view class="miniBtn" data-phone="{{contactPhone || seller.tel[0]}}" bindtap="call"> 201 <view class="miniBtn" data-phone="{{contactPhone || seller.tel[0]}}" bindtap="call">
209 <image src="https://qn.colorcun.com/contactMeIcon{{actionIcon}}.png" mode="" /><text>联系我</text> 202 <image src="https://qn.colorcun.com/contactMeIcon{{actionIcon}}.png" mode="" /><text>联系我</text>
210 </view> 203 </view>
@@ -221,10 +214,10 @@ @@ -221,10 +214,10 @@
221 </view> 214 </view>
222 </block> 215 </block>
223 <block wx:else> 216 <block wx:else>
224 - <view class="infoItem" wx:if="{{swich_phone!='0' && seller.tel && seller.tel.length>0}}"> 217 + <view class="infoItem" wx:if="{{titleRowMap.phone}}">
225 <view class="label font24r">前台电话</view> 218 <view class="label font24r">前台电话</view>
226 - <block wx:if="{{seller.tel.length == 1}}">  
227 - <view class="phoneRow contentData" wx:for="{{seller.tel}}" wx:key="index"> 219 + <block wx:if="{{titleRowMap.phone.values.length == 1}}">
  220 + <view class="phoneRow contentData" wx:for="{{titleRowMap.phone.values}}" wx:key="index">
228 <text data-phone="{{item}}" class="contentDataPhone" bindtap="call">{{item}}</text> 221 <text data-phone="{{item}}" class="contentDataPhone" bindtap="call">{{item}}</text>
229 <view class="miniBtn" data-phone="{{item}}" bindtap="call"> 222 <view class="miniBtn" data-phone="{{item}}" bindtap="call">
230 <image src="https://qn.colorcun.com/contactMeIcon{{actionIcon}}.png" mode="" /><text>联系我</text> 223 <image src="https://qn.colorcun.com/contactMeIcon{{actionIcon}}.png" mode="" /><text>联系我</text>
@@ -233,7 +226,7 @@ @@ -233,7 +226,7 @@
233 </block> 226 </block>
234 <block wx:else> 227 <block wx:else>
235 <view class="contentData phoneMultiList"> 228 <view class="contentData phoneMultiList">
236 - <text wx:for="{{seller.tel}}" wx:key="index" data-phone="{{item}}" class="contentDataPhone phoneMultiItem" bindtap="call">{{item}}</text> 229 + <text wx:for="{{titleRowMap.phone.values}}" wx:key="index" data-phone="{{item}}" class="contentDataPhone phoneMultiItem" bindtap="call">{{item}}</text>
237 </view> 230 </view>
238 <view class="miniBtn phoneMultiBtn" wx:if="{{contactPhone}}" data-phone="{{contactPhone}}" bindtap="call"> 231 <view class="miniBtn phoneMultiBtn" wx:if="{{contactPhone}}" data-phone="{{contactPhone}}" bindtap="call">
239 <image src="https://qn.colorcun.com/contactMeIcon{{actionIcon}}.png" mode="" /><text>联系我</text> 232 <image src="https://qn.colorcun.com/contactMeIcon{{actionIcon}}.png" mode="" /><text>联系我</text>
@@ -357,7 +350,23 @@ @@ -357,7 +350,23 @@
357 <text space="nbsp" class="items font28r" wx:if="{{item.type == '2'}}">{{item.content}}</text> 350 <text space="nbsp" class="items font28r" wx:if="{{item.type == '2'}}">{{item.content}}</text>
358 </block> 351 </block>
359 </view> 352 </view>
360 - <view class="introduce" wx:if="{{marketing.logo || home.image || (store && ((store.introduce && (!store.is_introduce || store.is_introduce!='0')) || (store.images && store.images.length>0 && (!store.is_images || store.is_images!='0')) || (store.content && store.content.length>0)))}}"> 353 + <!-- 餐厅介绍:speakImgMode=1 轮播(含首图 home.image、logo) -->
  354 + <view class="introduce" wx:if="{{speakImgMode=='1' && store && (store.textInfo || (store.imgsInfo && store.imgsInfo.length>0) || (store.videosInfo && store.videosInfo.length>0))}}">
  355 + <view class="titleInfo">{{store.title ? store.title : '餐厅介绍'}}</view>
  356 + <view class="labelBox" wx:if="{{store.textInfo}}">
  357 + <text space="nbsp" class="texts font28r">{{store.textInfo}}</text>
  358 + </view>
  359 + <swiper wx:if="{{store.imgsInfo.length>1}}" class="detailBanner" indicator-dots="{{true}}" autoplay="{{true}}" interval="{{2000}}" circular="{{true}}" indicator-color="lightgray" indicator-active-color="#fff">
  360 + <swiper-item wx:for="{{store.imgsInfo}}" wx:key="index">
  361 + <image mode="aspectFill" class="detailBannerImg" src="{{item}}" bindtap="lookImgs" data-url="{{item}}" data-imgs="{{store.imgsInfo}}"></image>
  362 + </swiper-item>
  363 + </swiper>
  364 + <image wx:if="{{store.imgsInfo.length == 1 || store.imgsInfo.length == '1'}}" mode="widthFix" class="detailBannerImg1" src="{{store.imgsInfo[0]}}" bindtap="lookImgs" data-url="{{store.imgsInfo[0]}}" data-imgs="{{store.imgsInfo}}"></image>
  365 + <block wx:for="{{store.videosInfo}}" wx:key="index">
  366 + <video class="boxBlock" src="{{item.content}}" show-center-play-btn="{{true}}" autoplay="{{false}}" object-fit="cover" controls="{{true}}"></video>
  367 + </block>
  368 + </view>
  369 + <view class="introduce" wx:elif="{{speakImgMode!='1' && (marketing.logo || home.image || (store && ((store.introduce && (!store.is_introduce || store.is_introduce!='0')) || (store.images && store.images.length>0 && (!store.is_images || store.is_images!='0')) || (store.content && store.content.length>0))))}}">
361 <view class="titleInfo">{{store.title ? store.title : '餐厅介绍'}}</view> 370 <view class="titleInfo">{{store.title ? store.title : '餐厅介绍'}}</view>
362 <image wx:if="{{marketing.logo}}" src="{{marketing.logo}}" bindtap="lookImgs" data-url="{{marketing.logo}}" mode="widthFix" /> 371 <image wx:if="{{marketing.logo}}" src="{{marketing.logo}}" bindtap="lookImgs" data-url="{{marketing.logo}}" mode="widthFix" />
363 <image wx:if="{{home.image}}" src="{{home.image}}" bindtap="lookImgs" data-url="{{home.image}}" class="homeImage" mode="widthFix"></image> 372 <image wx:if="{{home.image}}" src="{{home.image}}" bindtap="lookImgs" data-url="{{home.image}}" class="homeImage" mode="widthFix"></image>
@@ -373,7 +382,23 @@ @@ -373,7 +382,23 @@
373 <template is="richText" data="{{content: store.content, imgs: '', textClass: 'font32r'}}" /> 382 <template is="richText" data="{{content: store.content, imgs: '', textClass: 'font32r'}}" />
374 </view> 383 </view>
375 </view> 384 </view>
376 - <view class="introduce" wx:if="{{signboard && ((signboard.swich=='1' && signboard.images && signboard.images.length>0) || (signboard.content && signboard.content.length>0))}}"> 385 + <!-- 招牌菜品 -->
  386 + <view class="introduce" wx:if="{{speakImgMode=='1' && signboard && signboard.swich=='1' && (signboard.textInfo || (signboard.imgsInfo && signboard.imgsInfo.length>0) || (signboard.videosInfo && signboard.videosInfo.length>0))}}">
  387 + <view class="titleInfo">{{signboard.title ? signboard.title : '特色菜品'}}</view>
  388 + <view class="labelBox" wx:if="{{signboard.textInfo}}">
  389 + <text space="nbsp" class="texts font28r">{{signboard.textInfo}}</text>
  390 + </view>
  391 + <swiper wx:if="{{signboard.imgsInfo.length>1}}" class="detailBanner" indicator-dots="{{true}}" autoplay="{{true}}" interval="{{2000}}" circular="{{true}}" indicator-color="lightgray" indicator-active-color="#fff">
  392 + <swiper-item wx:for="{{signboard.imgsInfo}}" wx:key="index">
  393 + <image mode="aspectFill" class="detailBannerImg" src="{{item}}" bindtap="lookImgs" data-url="{{item}}" data-imgs="{{signboard.imgsInfo}}"></image>
  394 + </swiper-item>
  395 + </swiper>
  396 + <image wx:if="{{signboard.imgsInfo.length == 1 || signboard.imgsInfo.length == '1'}}" mode="widthFix" class="detailBannerImg1" src="{{signboard.imgsInfo[0]}}" bindtap="lookImgs" data-url="{{signboard.imgsInfo[0]}}" data-imgs="{{signboard.imgsInfo}}"></image>
  397 + <block wx:for="{{signboard.videosInfo}}" wx:key="index">
  398 + <video class="boxBlock" src="{{item.content}}" show-center-play-btn="{{true}}" autoplay="{{false}}" object-fit="cover" controls="{{true}}"></video>
  399 + </block>
  400 + </view>
  401 + <view class="introduce" wx:elif="{{speakImgMode!='1' && signboard && ((signboard.swich=='1' && signboard.images && signboard.images.length>0) || (signboard.content && signboard.content.length>0))}}">
377 <view class="titleInfo">{{signboard.title ? signboard.title : '特色菜品'}}</view> 402 <view class="titleInfo">{{signboard.title ? signboard.title : '特色菜品'}}</view>
378 <block wx:if="{{signboard.images && signboard.images.length>0}}"> 403 <block wx:if="{{signboard.images && signboard.images.length>0}}">
379 <block wx:for="{{signboard.images}}" wx:key="arryIndex" wx:for-index="arryIndex"> 404 <block wx:for="{{signboard.images}}" wx:key="arryIndex" wx:for-index="arryIndex">
@@ -384,11 +409,27 @@ @@ -384,11 +409,27 @@
384 <template is="richText" data="{{content: signboard.content, imgs: '', textClass: 'font32r'}}" /> 409 <template is="richText" data="{{content: signboard.content, imgs: '', textClass: 'font32r'}}" />
385 </view> 410 </view>
386 </view> 411 </view>
387 - <block wx:if="{{chef && ((chef.introduce && (!chef.is_introduce || chef.is_introduce!='0')) || (chef.image && (!chef.is_images || chef.is_images!='0')) || (chef.content && chef.content.length>0))}}"> 412 + <!-- 主厨介绍 -->
  413 + <view class="introduce" wx:if="{{speakImgMode=='1' && chef && (chef.textInfo || (chef.imgsInfo && chef.imgsInfo.length>0) || (chef.videosInfo && chef.videosInfo.length>0))}}">
  414 + <view class="titleInfo">{{chef.title ? chef.title : '主厨介绍'}}</view>
  415 + <view class="labelBox" wx:if="{{chef.textInfo}}">
  416 + <text class="texts font28r" space="nbsp">{{chef.textInfo}}</text>
  417 + </view>
  418 + <swiper wx:if="{{chef.imgsInfo.length>1}}" class="detailBanner" indicator-dots="{{true}}" autoplay="{{true}}" interval="{{2000}}" circular="{{true}}" indicator-color="lightgray" indicator-active-color="#fff">
  419 + <swiper-item wx:for="{{chef.imgsInfo}}" wx:key="index">
  420 + <image mode="aspectFill" class="detailBannerImg" src="{{item}}" bindtap="lookImgs" data-url="{{item}}" data-imgs="{{chef.imgsInfo}}"></image>
  421 + </swiper-item>
  422 + </swiper>
  423 + <image wx:if="{{chef.imgsInfo.length == 1 || chef.imgsInfo.length == '1'}}" mode="widthFix" class="detailBannerImg1" src="{{chef.imgsInfo[0]}}" bindtap="lookImgs" data-url="{{chef.imgsInfo[0]}}" data-imgs="{{chef.imgsInfo}}"></image>
  424 + <block wx:for="{{chef.videosInfo}}" wx:key="index">
  425 + <video class="boxBlock" src="{{item.content}}" show-center-play-btn="{{true}}" autoplay="{{false}}" object-fit="cover" controls="{{true}}"></video>
  426 + </block>
  427 + </view>
  428 + <block wx:elif="{{speakImgMode!='1' && chef && ((chef.introduce && (!chef.is_introduce || chef.is_introduce!='0')) || (chef.image && (!chef.is_images || chef.is_images!='0')) || (chef.content && chef.content.length>0))}}">
388 <view class="introduce"> 429 <view class="introduce">
389 <view class="titleInfo">{{chef.title ? chef.title : '主厨介绍'}}</view> 430 <view class="titleInfo">{{chef.title ? chef.title : '主厨介绍'}}</view>
390 <view class="labelBox" wx:if="{{chef.introduce && (!chef.is_introduce || chef.is_introduce!='0')}}"> 431 <view class="labelBox" wx:if="{{chef.introduce && (!chef.is_introduce || chef.is_introduce!='0')}}">
391 - <text class="texts" space="nbsp">{{chef.introduce}}</text> 432 + <text class="texts font28r" space="nbsp">{{chef.introduce}}</text>
392 </view> 433 </view>
393 <image wx:if="{{(!chef.is_images || chef.is_images!='0') && chef.image}}" src="{{chef.image}}" bindtap="lookImgs" data-url="{{chef.image}}" mode="widthFix" /> 434 <image wx:if="{{(!chef.is_images || chef.is_images!='0') && chef.image}}" src="{{chef.image}}" bindtap="lookImgs" data-url="{{chef.image}}" mode="widthFix" />
394 <view class="labelBox" wx:if="{{chef.content && chef.content.length>0}}"> 435 <view class="labelBox" wx:if="{{chef.content && chef.content.length>0}}">
@@ -400,7 +441,7 @@ @@ -400,7 +441,7 @@
400 <view class="sectionTitle">{{reserve.title ? reserve.title : '停车指引'}}</view> 441 <view class="sectionTitle">{{reserve.title ? reserve.title : '停车指引'}}</view>
401 <block wx:if="{{!reserve.content || reserve.content.length == '0'}}"> 442 <block wx:if="{{!reserve.content || reserve.content.length == '0'}}">
402 <view class="labelBox" wx:if="{{reserve.park_info}}"> 443 <view class="labelBox" wx:if="{{reserve.park_info}}">
403 - <text class="texts" space="nbsp">{{reserve.park_info}}</text> 444 + <text class="texts font28r" space="nbsp">{{reserve.park_info}}</text>
404 </view> 445 </view>
405 <block wx:for="{{reserve.park_info_images}}" wx:key="arryIndex" wx:for-index="arryIndex"> 446 <block wx:for="{{reserve.park_info_images}}" wx:key="arryIndex" wx:for-index="arryIndex">
406 <image src="{{item}}" bindtap="lookImgs" data-url="{{item}}" data-imgs="{{reserve.park_info_images}}" mode="widthFix" /> 447 <image src="{{item}}" bindtap="lookImgs" data-url="{{item}}" data-imgs="{{reserve.park_info_images}}" mode="widthFix" />
@@ -421,9 +462,6 @@ @@ -421,9 +462,6 @@
421 <view class="moreText">滑动查看更多</view> 462 <view class="moreText">滑动查看更多</view>
422 <image src="https://qn.colorcun.com/jt1.png" mode="" /> 463 <image src="https://qn.colorcun.com/jt1.png" mode="" />
423 </view> 464 </view>
424 - <view class="toastBox" wx:if="{{toastBool}}">  
425 - {{toastText}}  
426 - </view>  
427 </view> 465 </view>
428 </view> 466 </view>
429 </scroll-view> 467 </scroll-view>
@@ -196,6 +196,16 @@ @@ -196,6 +196,16 @@
196 background: transparent; 196 background: transparent;
197 } 197 }
198 198
  199 +.heroBlock.style4 {
  200 + box-sizing: border-box;
  201 + padding: 32rpx 22rpx 10rpx;
  202 + margin: 0 40rpx 60rpx;
  203 + border-radius: 20rpx;
  204 + border: none;
  205 + background: transparent;
  206 + text-align: left;
  207 +}
  208 +
199 .bgEditBar { 209 .bgEditBar {
200 display: flex; 210 display: flex;
201 justify-content: center; 211 justify-content: center;
@@ -310,8 +320,7 @@ @@ -310,8 +320,7 @@
310 } 320 }
311 321
312 .contentWithBtn>text, 322 .contentWithBtn>text,
313 -.contentDataPhone,  
314 -.divider { 323 +.contentDataPhone {
315 display: inline; 324 display: inline;
316 vertical-align: middle; 325 vertical-align: middle;
317 } 326 }
@@ -550,6 +559,11 @@ @@ -550,6 +559,11 @@
550 margin-bottom: 20rpx; 559 margin-bottom: 20rpx;
551 } 560 }
552 561
  562 +/* 样式1:entrance 是右侧绝对定位的图标列,给正文留出它的宽度,长文案(如 公历+星期+农历)自动折行,避免被图标压住 */
  563 +.style1 .bookInfo .contentData {
  564 + max-width: calc(100% - 140rpx);
  565 +}
  566 +
553 .style2 .entrance, 567 .style2 .entrance,
554 .style3 .entrance, 568 .style3 .entrance,
555 .style4 .entrance { 569 .style4 .entrance {
@@ -955,6 +969,39 @@ @@ -955,6 +969,39 @@
955 margin-bottom: 80rpx; 969 margin-bottom: 80rpx;
956 } 970 }
957 971
  972 +.introduce .roomSwiperWrap {
  973 + padding: 0;
  974 + margin-bottom: 20rpx;
  975 +}
  976 +
  977 +/* 商家有话说轮播(对齐模板11 bookType=1 detailBanner) */
  978 +.detailBanner {
  979 + width: 100%;
  980 + height: 500rpx;
  981 + background: transparent;
  982 + margin-top: 20rpx;
  983 + margin-bottom: 20rpx;
  984 +}
  985 +
  986 +.detailBannerImg {
  987 + width: 100%;
  988 + height: 100%;
  989 + border-radius: 10rpx;
  990 +}
  991 +
  992 +.detailBannerImg1 {
  993 + width: 100%;
  994 + border-radius: 10rpx;
  995 + margin-bottom: 20rpx;
  996 + display: block;
  997 +}
  998 +
  999 +.boxBlock {
  1000 + width: 100%;
  1001 + border-radius: 10rpx;
  1002 + margin-top: 20rpx;
  1003 +}
  1004 +
958 .roomSwiper { 1005 .roomSwiper {
959 width: 100%; 1006 width: 100%;
960 height: 480rpx; 1007 height: 480rpx;
@@ -1152,10 +1199,6 @@ @@ -1152,10 +1199,6 @@
1152 line-height: 56rpx; 1199 line-height: 56rpx;
1153 } 1200 }
1154 1201
1155 -.heroBlock .bookSectionTitle {  
1156 - display: none;  
1157 -}  
1158 -  
1159 .sectionTitle::before { 1202 .sectionTitle::before {
1160 content: ''; 1203 content: '';
1161 flex: 1; 1204 flex: 1;
@@ -1824,7 +1867,6 @@ @@ -1824,7 +1867,6 @@
1824 .pageturmeric .infoItem>.contentData:not(.bookData):not(.contentWithBtn), 1867 .pageturmeric .infoItem>.contentData:not(.bookData):not(.contentWithBtn),
1825 .pageturmeric .valueRow>.contentData, 1868 .pageturmeric .valueRow>.contentData,
1826 .pageturmeric .contentDataPhone, 1869 .pageturmeric .contentDataPhone,
1827 -.pageturmeric .divider,  
1828 .pageturmeric .contentWithBtn>text, 1870 .pageturmeric .contentWithBtn>text,
1829 .pageturmeric .sectionTitle, 1871 .pageturmeric .sectionTitle,
1830 .pageturmeric .peopleName, 1872 .pageturmeric .peopleName,
@@ -1919,14 +1961,13 @@ @@ -1919,14 +1961,13 @@
1919 .pagecolor .infoItem>.contentData:not(.bookData):not(.contentWithBtn), 1961 .pagecolor .infoItem>.contentData:not(.bookData):not(.contentWithBtn),
1920 .pagecolor .valueRow>.contentData, 1962 .pagecolor .valueRow>.contentData,
1921 .pagecolor .contentDataPhone, 1963 .pagecolor .contentDataPhone,
1922 -.pagecolor .divider,  
1923 .pagecolor .contentWithBtn>text, 1964 .pagecolor .contentWithBtn>text,
1924 .pagecolor .welcomeInfo, 1965 .pagecolor .welcomeInfo,
1925 .pagecolor .sectionTitle, 1966 .pagecolor .sectionTitle,
1926 .pagecolor .style2 .heroSeller, 1967 .pagecolor .style2 .heroSeller,
1927 .pagecolor .style2 .heroSlogan, 1968 .pagecolor .style2 .heroSlogan,
1928 .pagecolor .style2 .bookData, 1969 .pagecolor .style2 .bookData,
1929 -.pagecolor .style2.welcomeInf, 1970 +.pagecolor .style2.welcomeInfo,
1930 .pagecolor .style3 .heroSeller, 1971 .pagecolor .style3 .heroSeller,
1931 .pagecolor .style3 .heroSlogan { 1972 .pagecolor .style3 .heroSlogan {
1932 background-image: linear-gradient(180deg, #ffe6c5 0%, #c7a17d 100%); 1973 background-image: linear-gradient(180deg, #ffe6c5 0%, #c7a17d 100%);
@@ -2095,7 +2136,6 @@ @@ -2095,7 +2136,6 @@
2095 * ============================================================================ */ 2136 * ============================================================================ */
2096 2137
2097 /* --- 渐变描边公用(主题色非金 entrance / 自定义版块) --- */ 2138 /* --- 渐变描边公用(主题色非金 entrance / 自定义版块) --- */
2098 -.panelGradBorder::before,  
2099 .pagecolor.style2 .entrance::before, 2139 .pagecolor.style2 .entrance::before,
2100 .pagecolor.style3 .entrance::before, 2140 .pagecolor.style3 .entrance::before,
2101 .pagecolor.style4 .entrance::before, 2141 .pagecolor.style4 .entrance::before,
@@ -371,7 +371,7 @@ Page({ @@ -371,7 +371,7 @@ Page({
371 let themeColor, StyleType, titleType, themeSixteen, home, chef, marketing, coupon, coupon_data_pay, coupon_data_free, reserve, swich_phone, is_comments, signboard, store; 371 let themeColor, StyleType, titleType, themeSixteen, home, chef, marketing, coupon, coupon_data_pay, coupon_data_free, reserve, swich_phone, is_comments, signboard, store;
372 chef = util.determine(data.chef); 372 chef = util.determine(data.chef);
373 reserve = util.determine(data.reserve); 373 reserve = util.determine(data.reserve);
374 - marketing = util.determine(data.marketing); 374 + marketing = this.normalizeMarketing(util.determine(data.marketing));
375 signboard = util.determine(data.signboard); 375 signboard = util.determine(data.signboard);
376 store = util.determine(data.store); 376 store = util.determine(data.store);
377 home = util.determine(data.home); 377 home = util.determine(data.home);
1 <!--pack-invitation/pages/detail_owner_invitation2.wxml--> 1 <!--pack-invitation/pages/detail_owner_invitation2.wxml-->
2 <import src="../../pages/tpl/invitation"></import> 2 <import src="../../pages/tpl/invitation"></import>
3 <import src="../common/parts.wxml" /> 3 <import src="../common/parts.wxml" />
  4 +<view class="pageWrap {{themeColor}}">
4 <nav hasHome backgroundColor="{{themeSixteen}}" color="{{themeColor == 'pearlWhite'?'#515151':'#fff'}}" class="navhome" place="{{true}}">{{seller.name||reserve.seller_name}}</nav> 5 <nav hasHome backgroundColor="{{themeSixteen}}" color="{{themeColor == 'pearlWhite'?'#515151':'#fff'}}" class="navhome" place="{{true}}">{{seller.name||reserve.seller_name}}</nav>
5 <scroll-view scroll-y class="{{themeColor}}"> 6 <scroll-view scroll-y class="{{themeColor}}">
6 <!-- 音乐开关 --> 7 <!-- 音乐开关 -->
@@ -230,4 +231,5 @@ @@ -230,4 +231,5 @@
230 <!-- 截屏提示弹窗 --> 231 <!-- 截屏提示弹窗 -->
231 <template is="payModal" data="{{detail: detail, options: options, marketing: marketing, imgSrc: imgSrc}}" /> 232 <template is="payModal" data="{{detail: detail, options: options, marketing: marketing, imgSrc: imgSrc}}" />
232 <!-- 领券弹窗(2~12 通用;13 保持页面内独立) --> 233 <!-- 领券弹窗(2~12 通用;13 保持页面内独立) -->
233 -<template is="couponModal" data="{{seller: seller, reserve: reserve, totalPrice: totalPrice, purePhoneNumber: purePhoneNumber, countDown: countDown}}" />  
  234 +<template is="couponModal" data="{{seller: seller, reserve: reserve, totalPrice: totalPrice, purePhoneNumber: purePhoneNumber, countDown: countDown}}" />
  235 +</view>
1 /* pack-invitation/pages/detail_owner_invitation2.wxss */ 1 /* pack-invitation/pages/detail_owner_invitation2.wxss */
2 @import "../../pages/tpl/tpls.wxss"; 2 @import "../../pages/tpl/tpls.wxss";
3 3
  4 +.pageWrap {
  5 + position: relative;
  6 + width: 100%;
  7 + min-height: 100vh;
  8 + overflow-x: hidden;
  9 +}
  10 +
4 @font-face { 11 @font-face {
5 font-family: 'Abel'; 12 font-family: 'Abel';
6 font-style: normal; 13 font-style: normal;
@@ -371,7 +371,7 @@ Page({ @@ -371,7 +371,7 @@ Page({
371 let themeColor, StyleType, titleType, home, chef, marketing, coupon, coupon_data_pay, coupon_data_free, reserve, swich_phone, is_comments, signboard, store; 371 let themeColor, StyleType, titleType, home, chef, marketing, coupon, coupon_data_pay, coupon_data_free, reserve, swich_phone, is_comments, signboard, store;
372 chef = util.determine(data.chef); 372 chef = util.determine(data.chef);
373 reserve = util.determine(data.reserve); 373 reserve = util.determine(data.reserve);
374 - marketing = util.determine(data.marketing); 374 + marketing = this.normalizeMarketing(util.determine(data.marketing));
375 signboard = util.determine(data.signboard); 375 signboard = util.determine(data.signboard);
376 store = util.determine(data.store); 376 store = util.determine(data.store);
377 home = util.determine(data.home); 377 home = util.determine(data.home);
1 <!--pack-invitation/pages/detail_owner_invitation3.wxml--> 1 <!--pack-invitation/pages/detail_owner_invitation3.wxml-->
2 <import src="../../pages/tpl/invitation"></import> 2 <import src="../../pages/tpl/invitation"></import>
3 <import src="../common/parts.wxml" /> 3 <import src="../common/parts.wxml" />
  4 +<view class="pageWrap {{themeColor}}">
4 <nav hasHome class="navhome" place="{{true}}">{{seller.name||reserve.seller_name}}</nav> 5 <nav hasHome class="navhome" place="{{true}}">{{seller.name||reserve.seller_name}}</nav>
5 <scroll-view scroll-y class="{{themeColor}}"> 6 <scroll-view scroll-y class="{{themeColor}}">
6 <!-- 音乐开关 --> 7 <!-- 音乐开关 -->
@@ -235,4 +236,5 @@ @@ -235,4 +236,5 @@
235 <!-- 截屏提示弹窗 --> 236 <!-- 截屏提示弹窗 -->
236 <template is="payModal" data="{{detail: detail, options: options, marketing: marketing, imgSrc: imgSrc}}" /> 237 <template is="payModal" data="{{detail: detail, options: options, marketing: marketing, imgSrc: imgSrc}}" />
237 <!-- 领券弹窗(2~12 通用;13 保持页面内独立) --> 238 <!-- 领券弹窗(2~12 通用;13 保持页面内独立) -->
238 -<template is="couponModal" data="{{seller: seller, reserve: reserve, totalPrice: totalPrice, purePhoneNumber: purePhoneNumber, countDown: countDown}}" />  
  239 +<template is="couponModal" data="{{seller: seller, reserve: reserve, totalPrice: totalPrice, purePhoneNumber: purePhoneNumber, countDown: countDown}}" />
  240 +</view>
1 /* pack-invitation/pages/detail_owner_invitation3.wxss */ 1 /* pack-invitation/pages/detail_owner_invitation3.wxss */
2 @import "../../pages/tpl/tpls.wxss"; 2 @import "../../pages/tpl/tpls.wxss";
3 3
  4 +.pageWrap {
  5 + position: relative;
  6 + width: 100%;
  7 + min-height: 100vh;
  8 + overflow-x: hidden;
  9 +}
  10 +
4 @font-face { 11 @font-face {
5 font-family: 'Abel'; 12 font-family: 'Abel';
6 font-style: normal; 13 font-style: normal;
@@ -371,7 +371,7 @@ Page({ @@ -371,7 +371,7 @@ Page({
371 let themeColor, StyleType, titleType, home, chef, marketing, coupon, coupon_data_pay, coupon_data_free, reserve, swich_phone, is_comments, signboard, store; 371 let themeColor, StyleType, titleType, home, chef, marketing, coupon, coupon_data_pay, coupon_data_free, reserve, swich_phone, is_comments, signboard, store;
372 chef = util.determine(data.chef); 372 chef = util.determine(data.chef);
373 reserve = util.determine(data.reserve); 373 reserve = util.determine(data.reserve);
374 - marketing = util.determine(data.marketing); 374 + marketing = this.normalizeMarketing(util.determine(data.marketing));
375 signboard = util.determine(data.signboard); 375 signboard = util.determine(data.signboard);
376 store = util.determine(data.store); 376 store = util.determine(data.store);
377 home = util.determine(data.home); 377 home = util.determine(data.home);
1 <!--pack-invitation/pages/detail_owner_invitation4.wxml--> 1 <!--pack-invitation/pages/detail_owner_invitation4.wxml-->
2 <import src="../common/parts.wxml" /> 2 <import src="../common/parts.wxml" />
  3 +<view class="pageWrap {{themeColor}}">
3 <nav hasHome class="navhome" place="{{true}}">{{seller.name||reserve.seller_name}}</nav> 4 <nav hasHome class="navhome" place="{{true}}">{{seller.name||reserve.seller_name}}</nav>
4 <scroll-view scroll-y class="{{themeColor}}"> 5 <scroll-view scroll-y class="{{themeColor}}">
5 <!-- 音乐开关 --> 6 <!-- 音乐开关 -->
@@ -218,4 +219,5 @@ @@ -218,4 +219,5 @@
218 <!-- 截屏提示弹窗 --> 219 <!-- 截屏提示弹窗 -->
219 <template is="payModal" data="{{detail: detail, options: options, marketing: marketing, imgSrc: imgSrc}}" /> 220 <template is="payModal" data="{{detail: detail, options: options, marketing: marketing, imgSrc: imgSrc}}" />
220 <!-- 领券弹窗(2~12 通用;13 保持页面内独立) --> 221 <!-- 领券弹窗(2~12 通用;13 保持页面内独立) -->
221 -<template is="couponModal" data="{{seller: seller, reserve: reserve, totalPrice: totalPrice, purePhoneNumber: purePhoneNumber, countDown: countDown}}" />  
  222 +<template is="couponModal" data="{{seller: seller, reserve: reserve, totalPrice: totalPrice, purePhoneNumber: purePhoneNumber, countDown: countDown}}" />
  223 +</view>
1 /* pack-invitation/pages/detail_owner_invitation4.wxss */ 1 /* pack-invitation/pages/detail_owner_invitation4.wxss */
2 @import "../../pages/tpl/tpls.wxss"; 2 @import "../../pages/tpl/tpls.wxss";
3 3
  4 +.pageWrap {
  5 + position: relative;
  6 + width: 100%;
  7 + min-height: 100vh;
  8 + overflow-x: hidden;
  9 +}
  10 +
4 @font-face { 11 @font-face {
5 font-family: 'Abel'; 12 font-family: 'Abel';
6 font-style: normal; 13 font-style: normal;
@@ -370,7 +370,7 @@ Page({ @@ -370,7 +370,7 @@ Page({
370 let themeColor, StyleType, titleType, home, chef, marketing, coupon, coupon_data_pay, coupon_data_free, reserve, swich_phone, is_comments, signboard, store; 370 let themeColor, StyleType, titleType, home, chef, marketing, coupon, coupon_data_pay, coupon_data_free, reserve, swich_phone, is_comments, signboard, store;
371 chef = util.determine(data.chef); 371 chef = util.determine(data.chef);
372 reserve = util.determine(data.reserve); 372 reserve = util.determine(data.reserve);
373 - marketing = util.determine(data.marketing); 373 + marketing = this.normalizeMarketing(util.determine(data.marketing));
374 signboard = util.determine(data.signboard); 374 signboard = util.determine(data.signboard);
375 store = util.determine(data.store); 375 store = util.determine(data.store);
376 home = util.determine(data.home); 376 home = util.determine(data.home);
1 <!--pack-invitation/pages/detail_owner_invitation5.wxml--> 1 <!--pack-invitation/pages/detail_owner_invitation5.wxml-->
2 <import src="../common/parts.wxml" /> 2 <import src="../common/parts.wxml" />
  3 +<view class="pageWrap {{themeColor}}">
3 <nav hasHome class="navhome" place="{{true}}">{{seller.name||reserve.seller_name}}</nav> 4 <nav hasHome class="navhome" place="{{true}}">{{seller.name||reserve.seller_name}}</nav>
4 <scroll-view scroll-y class="{{themeColor}}"> 5 <scroll-view scroll-y class="{{themeColor}}">
5 <!-- 音乐开关 --> 6 <!-- 音乐开关 -->
@@ -217,4 +218,5 @@ @@ -217,4 +218,5 @@
217 <!-- 截屏提示弹窗 --> 218 <!-- 截屏提示弹窗 -->
218 <template is="payModal" data="{{detail: detail, options: options, marketing: marketing, imgSrc: imgSrc}}" /> 219 <template is="payModal" data="{{detail: detail, options: options, marketing: marketing, imgSrc: imgSrc}}" />
219 <!-- 领券弹窗(2~12 通用;13 保持页面内独立) --> 220 <!-- 领券弹窗(2~12 通用;13 保持页面内独立) -->
220 -<template is="couponModal" data="{{seller: seller, reserve: reserve, totalPrice: totalPrice, purePhoneNumber: purePhoneNumber, countDown: countDown}}" />  
  221 +<template is="couponModal" data="{{seller: seller, reserve: reserve, totalPrice: totalPrice, purePhoneNumber: purePhoneNumber, countDown: countDown}}" />
  222 +</view>
1 /* pack-invitation/pages/detail_owner_invitation5.wxss */ 1 /* pack-invitation/pages/detail_owner_invitation5.wxss */
2 @import "../../pages/tpl/tpls.wxss"; 2 @import "../../pages/tpl/tpls.wxss";
3 3
  4 +.pageWrap {
  5 + position: relative;
  6 + width: 100%;
  7 + min-height: 100vh;
  8 + overflow-x: hidden;
  9 +}
  10 +
4 @font-face { 11 @font-face {
5 font-family: 'Abel'; 12 font-family: 'Abel';
6 font-style: normal; 13 font-style: normal;
@@ -328,7 +328,7 @@ Page({ @@ -328,7 +328,7 @@ Page({
328 let themeColor, StyleType, titleType, whiteBj, home, chef, marketing, coupon, coupon_data_pay, coupon_data_free, reserve, swich_phone, is_comments, signboard, store; 328 let themeColor, StyleType, titleType, whiteBj, home, chef, marketing, coupon, coupon_data_pay, coupon_data_free, reserve, swich_phone, is_comments, signboard, store;
329 chef = util.determine(data.chef); 329 chef = util.determine(data.chef);
330 reserve = util.determine(data.reserve); 330 reserve = util.determine(data.reserve);
331 - marketing = util.determine(data.marketing); 331 + marketing = this.normalizeMarketing(util.determine(data.marketing));
332 signboard = util.determine(data.signboard); 332 signboard = util.determine(data.signboard);
333 store = util.determine(data.store); 333 store = util.determine(data.store);
334 home = util.determine(data.home); 334 home = util.determine(data.home);
1 <!--pack-invitation/pages/detail_owner_invitation6.wxml--> 1 <!--pack-invitation/pages/detail_owner_invitation6.wxml-->
2 <import src="../common/parts.wxml" /> 2 <import src="../common/parts.wxml" />
3 <import src="../../pages/tpl/invitation"></import> 3 <import src="../../pages/tpl/invitation"></import>
  4 +<view class="pageWrap {{themeColor}}">
4 <nav hasHome class="navhome" place="{{true}}">{{seller.name||reserve.seller_name}}</nav> 5 <nav hasHome class="navhome" place="{{true}}">{{seller.name||reserve.seller_name}}</nav>
5 <scroll-view scroll-y class="{{themeColor}}"> 6 <scroll-view scroll-y class="{{themeColor}}">
6 <!-- 音乐开关 --> 7 <!-- 音乐开关 -->
@@ -255,4 +256,5 @@ @@ -255,4 +256,5 @@
255 <!-- 截屏提示弹窗 --> 256 <!-- 截屏提示弹窗 -->
256 <template is="payModal" data="{{detail: detail, options: options, marketing: marketing, imgSrc: imgSrc}}" /> 257 <template is="payModal" data="{{detail: detail, options: options, marketing: marketing, imgSrc: imgSrc}}" />
257 <!-- 领券弹窗(2~12 通用;13 保持页面内独立) --> 258 <!-- 领券弹窗(2~12 通用;13 保持页面内独立) -->
258 -<template is="couponModal" data="{{seller: seller, reserve: reserve, totalPrice: totalPrice, purePhoneNumber: purePhoneNumber, countDown: countDown}}" />  
  259 +<template is="couponModal" data="{{seller: seller, reserve: reserve, totalPrice: totalPrice, purePhoneNumber: purePhoneNumber, countDown: countDown}}" />
  260 +</view>
1 /* pack-invitation/pages/detail_owner_invitation6.wxss */ 1 /* pack-invitation/pages/detail_owner_invitation6.wxss */
2 @import "../../pages/tpl/tpls.wxss"; 2 @import "../../pages/tpl/tpls.wxss";
3 3
  4 +.pageWrap {
  5 + position: relative;
  6 + width: 100%;
  7 + min-height: 100vh;
  8 + overflow-x: hidden;
  9 +}
  10 +
4 .titleImg { 11 .titleImg {
5 top: 160rpx; 12 top: 160rpx;
6 left: 1rpx; 13 left: 1rpx;
@@ -371,7 +371,7 @@ Page({ @@ -371,7 +371,7 @@ Page({
371 let themeColor, StyleType, titleType, home, chef, marketing, coupon, coupon_data_pay, coupon_data_free, reserve, swich_phone, is_comments, signboard, store; 371 let themeColor, StyleType, titleType, home, chef, marketing, coupon, coupon_data_pay, coupon_data_free, reserve, swich_phone, is_comments, signboard, store;
372 chef = util.determine(data.chef); 372 chef = util.determine(data.chef);
373 reserve = util.determine(data.reserve); 373 reserve = util.determine(data.reserve);
374 - marketing = util.determine(data.marketing); 374 + marketing = this.normalizeMarketing(util.determine(data.marketing));
375 signboard = util.determine(data.signboard); 375 signboard = util.determine(data.signboard);
376 store = util.determine(data.store); 376 store = util.determine(data.store);
377 home = util.determine(data.home); 377 home = util.determine(data.home);
1 <!--pack-invitation/pages/detail_owner_invitation7.wxml--> 1 <!--pack-invitation/pages/detail_owner_invitation7.wxml-->
2 <import src="../common/parts.wxml" /> 2 <import src="../common/parts.wxml" />
3 <import src="../../pages/tpl/invitation"></import> 3 <import src="../../pages/tpl/invitation"></import>
  4 +<view class="pageWrap {{themeColor}}">
4 <nav hasHome class="navhome" place="{{true}}">{{seller.name||reserve.seller_name}}</nav> 5 <nav hasHome class="navhome" place="{{true}}">{{seller.name||reserve.seller_name}}</nav>
5 <scroll-view scroll-y class="{{themeColor}}"> 6 <scroll-view scroll-y class="{{themeColor}}">
6 <!-- 音乐开关 --> 7 <!-- 音乐开关 -->
@@ -230,4 +231,5 @@ @@ -230,4 +231,5 @@
230 <!-- 截屏提示弹窗 --> 231 <!-- 截屏提示弹窗 -->
231 <template is="payModal" data="{{detail: detail, options: options, marketing: marketing, imgSrc: imgSrc}}" /> 232 <template is="payModal" data="{{detail: detail, options: options, marketing: marketing, imgSrc: imgSrc}}" />
232 <!-- 领券弹窗(2~12 通用;13 保持页面内独立) --> 233 <!-- 领券弹窗(2~12 通用;13 保持页面内独立) -->
233 -<template is="couponModal" data="{{seller: seller, reserve: reserve, totalPrice: totalPrice, purePhoneNumber: purePhoneNumber, countDown: countDown}}" />  
  234 +<template is="couponModal" data="{{seller: seller, reserve: reserve, totalPrice: totalPrice, purePhoneNumber: purePhoneNumber, countDown: countDown}}" />
  235 +</view>
1 /* pack-invitation/pages/detail_owner_invitation7.wxss */ 1 /* pack-invitation/pages/detail_owner_invitation7.wxss */
2 @import "../../pages/tpl/tpls.wxss"; 2 @import "../../pages/tpl/tpls.wxss";
3 3
  4 +.pageWrap {
  5 + position: relative;
  6 + width: 100%;
  7 + min-height: 100vh;
  8 + overflow-x: hidden;
  9 +}
  10 +
4 @font-face { 11 @font-face {
5 font-family: 'Abel'; 12 font-family: 'Abel';
6 font-style: normal; 13 font-style: normal;
@@ -370,7 +370,7 @@ Page({ @@ -370,7 +370,7 @@ Page({
370 let themeColor, StyleType, titleType, home, chef, marketing, coupon, coupon_data_pay, coupon_data_free, reserve, swich_phone, is_comments, signboard, store; 370 let themeColor, StyleType, titleType, home, chef, marketing, coupon, coupon_data_pay, coupon_data_free, reserve, swich_phone, is_comments, signboard, store;
371 chef = util.determine(data.chef); 371 chef = util.determine(data.chef);
372 reserve = util.determine(data.reserve); 372 reserve = util.determine(data.reserve);
373 - marketing = util.determine(data.marketing); 373 + marketing = this.normalizeMarketing(util.determine(data.marketing));
374 signboard = util.determine(data.signboard); 374 signboard = util.determine(data.signboard);
375 store = util.determine(data.store); 375 store = util.determine(data.store);
376 home = util.determine(data.home); 376 home = util.determine(data.home);
1 <!--pack-invitation/pages/detail_owner_invitation8.wxml--> 1 <!--pack-invitation/pages/detail_owner_invitation8.wxml-->
2 <import src="../common/parts.wxml" /> 2 <import src="../common/parts.wxml" />
3 <import src="../../pages/tpl/invitation"></import> 3 <import src="../../pages/tpl/invitation"></import>
  4 +<view class="pageWrap {{themeColor}}">
4 <nav hasHome class="navhome" place="{{true}}">{{seller.name||reserve.seller_name}}</nav> 5 <nav hasHome class="navhome" place="{{true}}">{{seller.name||reserve.seller_name}}</nav>
5 <scroll-view scroll-y class="{{themeColor}}"> 6 <scroll-view scroll-y class="{{themeColor}}">
6 <!-- 音乐开关 --> 7 <!-- 音乐开关 -->
@@ -229,4 +230,5 @@ @@ -229,4 +230,5 @@
229 <template is="payModal" data="{{detail: detail, options: options, marketing: marketing, imgSrc: imgSrc}}" /> 230 <template is="payModal" data="{{detail: detail, options: options, marketing: marketing, imgSrc: imgSrc}}" />
230 231
231 <!-- 领券弹窗(2~12 通用;13 保持页面内独立) --> 232 <!-- 领券弹窗(2~12 通用;13 保持页面内独立) -->
232 -<template is="couponModal" data="{{seller: seller, reserve: reserve, totalPrice: totalPrice, purePhoneNumber: purePhoneNumber, countDown: countDown}}" />  
  233 +<template is="couponModal" data="{{seller: seller, reserve: reserve, totalPrice: totalPrice, purePhoneNumber: purePhoneNumber, countDown: countDown}}" />
  234 +</view>
1 /* pack-invitation/pages/detail_owner_invitation8.wxss */ 1 /* pack-invitation/pages/detail_owner_invitation8.wxss */
2 @import "../../pages/tpl/tpls.wxss"; 2 @import "../../pages/tpl/tpls.wxss";
3 3
  4 +.pageWrap {
  5 + position: relative;
  6 + width: 100%;
  7 + min-height: 100vh;
  8 + overflow-x: hidden;
  9 +}
  10 +
4 @font-face { 11 @font-face {
5 font-family: 'Abel'; 12 font-family: 'Abel';
6 font-style: normal; 13 font-style: normal;
@@ -388,7 +388,7 @@ Page({ @@ -388,7 +388,7 @@ Page({
388 let colors, settingUrl, inviteImgUrl, themeColor, StyleType, titleType, home, chef, marketing, coupon, coupon_data_pay, coupon_data_free, reserve, swich_phone, is_comments, signboard, store; 388 let colors, settingUrl, inviteImgUrl, themeColor, StyleType, titleType, home, chef, marketing, coupon, coupon_data_pay, coupon_data_free, reserve, swich_phone, is_comments, signboard, store;
389 chef = util.determine(data.chef); 389 chef = util.determine(data.chef);
390 reserve = util.determine(data.reserve); 390 reserve = util.determine(data.reserve);
391 - marketing = util.determine(data.marketing); 391 + marketing = this.normalizeMarketing(util.determine(data.marketing));
392 signboard = util.determine(data.signboard); 392 signboard = util.determine(data.signboard);
393 store = util.determine(data.store); 393 store = util.determine(data.store);
394 home = util.determine(data.home); 394 home = util.determine(data.home);