预约规则
This commit is contained in:
parent
8529fd1575
commit
33bb1bbd56
53
backend/src/migrations/011-create-booking-rules-table.js
Normal file
53
backend/src/migrations/011-create-booking-rules-table.js
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
'use strict';
|
||||
|
||||
module.exports = {
|
||||
up: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.createTable('booking_rules', {
|
||||
id: {
|
||||
type: Sequelize.UUID,
|
||||
defaultValue: Sequelize.UUIDV4,
|
||||
primaryKey: true,
|
||||
},
|
||||
service_type: {
|
||||
type: Sequelize.STRING(50),
|
||||
allowNull: false,
|
||||
unique: true,
|
||||
comment: '服务类型标识',
|
||||
},
|
||||
rules: {
|
||||
type: Sequelize.TEXT,
|
||||
allowNull: true,
|
||||
comment: '预约登记规则内容',
|
||||
},
|
||||
status: {
|
||||
type: Sequelize.ENUM('active', 'inactive'),
|
||||
defaultValue: 'active',
|
||||
allowNull: false,
|
||||
comment: '状态',
|
||||
},
|
||||
created_at: {
|
||||
type: Sequelize.DATE,
|
||||
allowNull: false,
|
||||
defaultValue: Sequelize.literal('CURRENT_TIMESTAMP'),
|
||||
},
|
||||
updated_at: {
|
||||
type: Sequelize.DATE,
|
||||
allowNull: false,
|
||||
defaultValue: Sequelize.literal('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP'),
|
||||
},
|
||||
});
|
||||
|
||||
// 添加索引
|
||||
await queryInterface.addIndex('booking_rules', ['service_type'], {
|
||||
unique: true,
|
||||
name: 'booking_rules_service_type_unique'
|
||||
});
|
||||
await queryInterface.addIndex('booking_rules', ['status'], {
|
||||
name: 'booking_rules_status'
|
||||
});
|
||||
},
|
||||
|
||||
down: async (queryInterface, Sequelize) => {
|
||||
await queryInterface.dropTable('booking_rules');
|
||||
}
|
||||
};
|
||||
|
|
@ -39,4 +39,14 @@ const BookingRule = sequelize.define('BookingRule', {
|
|||
],
|
||||
});
|
||||
|
||||
// 自动同步表结构
|
||||
(async () => {
|
||||
try {
|
||||
await BookingRule.sync();
|
||||
console.log('BookingRule table synced successfully');
|
||||
} catch (err) {
|
||||
console.error('BookingRule sync error:', err.message);
|
||||
}
|
||||
})();
|
||||
|
||||
module.exports = BookingRule;
|
||||
|
|
|
|||
|
|
@ -11,8 +11,8 @@ var Config = Config || {}
|
|||
|
||||
// API 基础地址
|
||||
// 注意:微信小程序开发工具无法访问localhost,需要使用本机IP地址
|
||||
Config.API_BASE_URL = 'https://sub.zpc-xy.com' // 本地开发环境(使用本机IP)
|
||||
// Config.API_BASE_URL = 'http://localhost:3000' // 本地开发环境(浏览器可用)
|
||||
// Config.API_BASE_URL = 'https://sub.zpc-xy.com' // 本地开发环境(使用本机IP)
|
||||
Config.API_BASE_URL = 'http://localhost:3000' // 本地开发环境(浏览器可用)
|
||||
// Config.API_BASE_URL = 'https://your-production-domain.com' // 生产环境(待配置)
|
||||
|
||||
// ============================================
|
||||
|
|
|
|||
|
|
@ -12,7 +12,12 @@
|
|||
<!-- 可滚动内容区域 -->
|
||||
<view class="scroll-content">
|
||||
<view class="content">
|
||||
<view class=""
|
||||
<!-- 预约登记规则区域 -->
|
||||
<view class="booking-rules-box" v-if="bookingRules">
|
||||
<view class="rules-title">预约登记规则</view>
|
||||
<view class="rules-content">{{ bookingRules }}</view>
|
||||
</view>
|
||||
<view v-else class=""
|
||||
style="width: 680rpx; height: 396rpx; background-image: linear-gradient(-45deg, #60D7FF, #68BBD7); margin-top: 32rpx; border-radius: 20rpx; box-shadow: 0 0 10rpx 10rpx rgba(0, 0, 0, 0.1);">
|
||||
</view>
|
||||
|
||||
|
|
@ -122,9 +127,11 @@
|
|||
|
||||
<script>
|
||||
import { AppServer } from '@/modules/api/AppServer.js'
|
||||
import bookingRulesMixin from '@/mixins/bookingRulesMixin.js'
|
||||
const appServer = new AppServer()
|
||||
|
||||
export default {
|
||||
mixins: [bookingRulesMixin],
|
||||
data() {
|
||||
return {
|
||||
serviceId: "",
|
||||
|
|
@ -157,6 +164,8 @@
|
|||
if (options.title) {
|
||||
this.serviceTitle = decodeURIComponent(options.title)
|
||||
}
|
||||
// 加载预约规则
|
||||
this.loadBookingRules('air_logistics')
|
||||
},
|
||||
methods: {
|
||||
checkData() {
|
||||
|
|
@ -352,4 +361,29 @@
|
|||
.flash-animation {
|
||||
animation: flash 0.5s ease-in-out 3;
|
||||
}
|
||||
|
||||
/* 预约登记规则样式 */
|
||||
.booking-rules-box {
|
||||
width: 680rpx;
|
||||
margin-top: 32rpx;
|
||||
padding: 30rpx;
|
||||
background-image: linear-gradient(-45deg, #60D7FF, #68BBD7);
|
||||
border-radius: 20rpx;
|
||||
box-shadow: 0 0 10rpx 10rpx rgba(0, 0, 0, 0.1);
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.rules-title {
|
||||
font-size: 32rpx;
|
||||
font-weight: bold;
|
||||
color: #fff;
|
||||
margin-bottom: 20rpx;
|
||||
}
|
||||
|
||||
.rules-content {
|
||||
font-size: 26rpx;
|
||||
color: #fff;
|
||||
line-height: 1.6;
|
||||
white-space: pre-wrap;
|
||||
}
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -12,7 +12,12 @@
|
|||
<!-- 可滚动内容区域 -->
|
||||
<view class="scroll-content">
|
||||
<view class="content">
|
||||
<view class=""
|
||||
<!-- 预约登记规则区域 -->
|
||||
<view class="booking-rules-box" v-if="bookingRules">
|
||||
<view class="rules-title">预约登记规则</view>
|
||||
<view class="rules-content">{{ bookingRules }}</view>
|
||||
</view>
|
||||
<view v-else class=""
|
||||
style="width: 680rpx; height: 396rpx; background-image: linear-gradient(-45deg, #60D7FF, #68BBD7); margin-top: 32rpx; border-radius: 20rpx; box-shadow: 0 0 10rpx 10rpx rgba(0, 0, 0, 0.1);">
|
||||
</view>
|
||||
|
||||
|
|
@ -147,9 +152,11 @@
|
|||
|
||||
<script>
|
||||
import { AppServer } from '@/modules/api/AppServer.js'
|
||||
import bookingRulesMixin from '@/mixins/bookingRulesMixin.js'
|
||||
const appServer = new AppServer()
|
||||
|
||||
export default {
|
||||
mixins: [bookingRulesMixin],
|
||||
data() {
|
||||
return {
|
||||
serviceId: "",
|
||||
|
|
@ -187,6 +194,8 @@
|
|||
if (options.title) {
|
||||
this.serviceTitle = decodeURIComponent(options.title)
|
||||
}
|
||||
// 加载预约规则
|
||||
this.loadBookingRules('airport_transfer')
|
||||
},
|
||||
methods: {
|
||||
initDateRange() {
|
||||
|
|
@ -475,4 +484,29 @@
|
|||
min-width: 80rpx;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
/* 预约登记规则样式 */
|
||||
.booking-rules-box {
|
||||
width: 680rpx;
|
||||
margin-top: 32rpx;
|
||||
padding: 30rpx;
|
||||
background-image: linear-gradient(-45deg, #60D7FF, #68BBD7);
|
||||
border-radius: 20rpx;
|
||||
box-shadow: 0 0 10rpx 10rpx rgba(0, 0, 0, 0.1);
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.rules-title {
|
||||
font-size: 32rpx;
|
||||
font-weight: bold;
|
||||
color: #fff;
|
||||
margin-bottom: 20rpx;
|
||||
}
|
||||
|
||||
.rules-content {
|
||||
font-size: 26rpx;
|
||||
color: #fff;
|
||||
line-height: 1.6;
|
||||
white-space: pre-wrap;
|
||||
}
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -200,17 +200,17 @@
|
|||
'lounge': 'vip-lounge-page',
|
||||
'airport_transfer': 'airport-transfer-page',
|
||||
'unaccompanied_minor': 'unaccompanied-minor-page',
|
||||
'rail_ticket': 'rail-ticket-page',
|
||||
'medical_consultation': 'medical-consultation-page',
|
||||
'train': 'rail-ticket-page',
|
||||
'telemedicine': 'medical-consultation-page',
|
||||
'special_passenger': 'special-needs-page',
|
||||
'pet_transportation': 'pet-transportation-page',
|
||||
'pet_transport': 'pet-transportation-page',
|
||||
'guide_translation': 'guide-translation-page',
|
||||
'visa_consultation': 'visa-consultation-page',
|
||||
'exhibition_service': 'exhibition-service-page',
|
||||
'visa': 'visa-consultation-page',
|
||||
'exhibition': 'exhibition-service-page',
|
||||
'air_logistics': 'air-logistics-page',
|
||||
'sea_freight': 'sea-freight-page',
|
||||
'travel_planning': 'travel-planning-page',
|
||||
'insurance_consultation': 'insurance-consultation-page'
|
||||
'insurance': 'insurance-consultation-page'
|
||||
}
|
||||
|
||||
const serviceType = service.serviceType
|
||||
|
|
|
|||
|
|
@ -12,7 +12,12 @@
|
|||
<!-- 可滚动内容区域 -->
|
||||
<view class="scroll-content">
|
||||
<view class="content">
|
||||
<view class=""
|
||||
<!-- 预约登记规则区域 -->
|
||||
<view class="booking-rules-box" v-if="bookingRules">
|
||||
<view class="rules-title">预约登记规则</view>
|
||||
<view class="rules-content">{{ bookingRules }}</view>
|
||||
</view>
|
||||
<view v-else class=""
|
||||
style="width: 680rpx; height: 396rpx; background-image: linear-gradient(-45deg, #60D7FF, #68BBD7); margin-top: 32rpx; border-radius: 20rpx; box-shadow: 0 0 10rpx 10rpx rgba(0, 0, 0, 0.1);">
|
||||
</view>
|
||||
|
||||
|
|
@ -105,9 +110,11 @@
|
|||
|
||||
<script>
|
||||
import { AppServer } from '@/modules/api/AppServer.js'
|
||||
import bookingRulesMixin from '@/mixins/bookingRulesMixin.js'
|
||||
const appServer = new AppServer()
|
||||
|
||||
export default {
|
||||
mixins: [bookingRulesMixin],
|
||||
data() {
|
||||
return {
|
||||
serviceId: "",
|
||||
|
|
@ -137,6 +144,8 @@
|
|||
if (options.title) {
|
||||
this.serviceTitle = decodeURIComponent(options.title)
|
||||
}
|
||||
// 加载预约规则
|
||||
this.loadBookingRules('exhibition')
|
||||
},
|
||||
methods: {
|
||||
checkData() {
|
||||
|
|
@ -311,4 +320,29 @@
|
|||
.flash-animation {
|
||||
animation: flash 0.5s ease-in-out 3;
|
||||
}
|
||||
|
||||
/* 预约登记规则样式 */
|
||||
.booking-rules-box {
|
||||
width: 680rpx;
|
||||
margin-top: 32rpx;
|
||||
padding: 30rpx;
|
||||
background-image: linear-gradient(-45deg, #60D7FF, #68BBD7);
|
||||
border-radius: 20rpx;
|
||||
box-shadow: 0 0 10rpx 10rpx rgba(0, 0, 0, 0.1);
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.rules-title {
|
||||
font-size: 32rpx;
|
||||
font-weight: bold;
|
||||
color: #fff;
|
||||
margin-bottom: 20rpx;
|
||||
}
|
||||
|
||||
.rules-content {
|
||||
font-size: 26rpx;
|
||||
color: #fff;
|
||||
line-height: 1.6;
|
||||
white-space: pre-wrap;
|
||||
}
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -12,7 +12,12 @@
|
|||
<!-- 可滚动内容区域 -->
|
||||
<view class="scroll-content">
|
||||
<view class="content">
|
||||
<view class=""
|
||||
<!-- 预约登记规则区域 -->
|
||||
<view class="booking-rules-box" v-if="bookingRules">
|
||||
<view class="rules-title">预约登记规则</view>
|
||||
<view class="rules-content">{{ bookingRules }}</view>
|
||||
</view>
|
||||
<view v-else class=""
|
||||
style="width: 680rpx; height: 396rpx; background-image: linear-gradient(-45deg, #60D7FF, #68BBD7); margin-top: 32rpx; border-radius: 20rpx; box-shadow: 0 0 10rpx 10rpx rgba(0, 0, 0, 0.1);">
|
||||
</view>
|
||||
|
||||
|
|
@ -116,9 +121,11 @@
|
|||
|
||||
<script>
|
||||
import { AppServer } from '@/modules/api/AppServer.js'
|
||||
import bookingRulesMixin from '@/mixins/bookingRulesMixin.js'
|
||||
const appServer = new AppServer()
|
||||
|
||||
export default {
|
||||
mixins: [bookingRulesMixin],
|
||||
data() {
|
||||
return {
|
||||
serviceId: "",
|
||||
|
|
@ -153,6 +160,8 @@
|
|||
if (options.title) {
|
||||
this.serviceTitle = decodeURIComponent(options.title)
|
||||
}
|
||||
// 加载预约规则
|
||||
this.loadBookingRules('guide_translation')
|
||||
},
|
||||
methods: {
|
||||
initDateRange() {
|
||||
|
|
@ -377,4 +386,29 @@
|
|||
.flash-animation {
|
||||
animation: flash 0.5s ease-in-out 3;
|
||||
}
|
||||
|
||||
/* 预约登记规则样式 */
|
||||
.booking-rules-box {
|
||||
width: 680rpx;
|
||||
margin-top: 32rpx;
|
||||
padding: 30rpx;
|
||||
background-image: linear-gradient(-45deg, #60D7FF, #68BBD7);
|
||||
border-radius: 20rpx;
|
||||
box-shadow: 0 0 10rpx 10rpx rgba(0, 0, 0, 0.1);
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.rules-title {
|
||||
font-size: 32rpx;
|
||||
font-weight: bold;
|
||||
color: #fff;
|
||||
margin-bottom: 20rpx;
|
||||
}
|
||||
|
||||
.rules-content {
|
||||
font-size: 26rpx;
|
||||
color: #fff;
|
||||
line-height: 1.6;
|
||||
white-space: pre-wrap;
|
||||
}
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -12,7 +12,12 @@
|
|||
<!-- 可滚动内容区域 -->
|
||||
<view class="scroll-content">
|
||||
<view class="content">
|
||||
<view class=""
|
||||
<!-- 预约登记规则区域 -->
|
||||
<view class="booking-rules-box" v-if="bookingRules">
|
||||
<view class="rules-title">预约登记规则</view>
|
||||
<view class="rules-content">{{ bookingRules }}</view>
|
||||
</view>
|
||||
<view v-else class=""
|
||||
style="width: 680rpx; height: 396rpx; background-image: linear-gradient(-45deg, #60D7FF, #68BBD7); margin-top: 32rpx; border-radius: 20rpx; box-shadow: 0 0 10rpx 10rpx rgba(0, 0, 0, 0.1);">
|
||||
</view>
|
||||
|
||||
|
|
@ -105,9 +110,11 @@
|
|||
|
||||
<script>
|
||||
import { AppServer } from '@/modules/api/AppServer.js'
|
||||
import bookingRulesMixin from '@/mixins/bookingRulesMixin.js'
|
||||
const appServer = new AppServer()
|
||||
|
||||
export default {
|
||||
mixins: [bookingRulesMixin],
|
||||
data() {
|
||||
return {
|
||||
serviceId: "",
|
||||
|
|
@ -137,6 +144,8 @@
|
|||
if (options.title) {
|
||||
this.serviceTitle = decodeURIComponent(options.title)
|
||||
}
|
||||
// 加载预约规则
|
||||
this.loadBookingRules('insurance')
|
||||
},
|
||||
methods: {
|
||||
checkData() {
|
||||
|
|
@ -311,4 +320,29 @@
|
|||
.flash-animation {
|
||||
animation: flash 0.5s ease-in-out 3;
|
||||
}
|
||||
|
||||
/* 预约登记规则样式 */
|
||||
.booking-rules-box {
|
||||
width: 680rpx;
|
||||
margin-top: 32rpx;
|
||||
padding: 30rpx;
|
||||
background-image: linear-gradient(-45deg, #60D7FF, #68BBD7);
|
||||
border-radius: 20rpx;
|
||||
box-shadow: 0 0 10rpx 10rpx rgba(0, 0, 0, 0.1);
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.rules-title {
|
||||
font-size: 32rpx;
|
||||
font-weight: bold;
|
||||
color: #fff;
|
||||
margin-bottom: 20rpx;
|
||||
}
|
||||
|
||||
.rules-content {
|
||||
font-size: 26rpx;
|
||||
color: #fff;
|
||||
line-height: 1.6;
|
||||
white-space: pre-wrap;
|
||||
}
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -12,7 +12,12 @@
|
|||
<!-- 可滚动内容区域 -->
|
||||
<view class="scroll-content">
|
||||
<view class="content">
|
||||
<view class=""
|
||||
<!-- 预约登记规则区域 -->
|
||||
<view class="booking-rules-box" v-if="bookingRules">
|
||||
<view class="rules-title">预约登记规则</view>
|
||||
<view class="rules-content">{{ bookingRules }}</view>
|
||||
</view>
|
||||
<view v-else class=""
|
||||
style="width: 680rpx; height: 396rpx; background-image: linear-gradient(-45deg, #60D7FF, #68BBD7); margin-top: 32rpx; border-radius: 20rpx; box-shadow: 0 0 10rpx 10rpx rgba(0, 0, 0, 0.1);">
|
||||
</view>
|
||||
|
||||
|
|
@ -139,9 +144,11 @@
|
|||
|
||||
<script>
|
||||
import { AppServer } from '@/modules/api/AppServer.js'
|
||||
import bookingRulesMixin from '@/mixins/bookingRulesMixin.js'
|
||||
const appServer = new AppServer()
|
||||
|
||||
export default {
|
||||
mixins: [bookingRulesMixin],
|
||||
data() {
|
||||
return {
|
||||
serviceId: "",
|
||||
|
|
@ -178,6 +185,8 @@
|
|||
if (options.title) {
|
||||
this.serviceTitle = decodeURIComponent(options.title)
|
||||
}
|
||||
// 加载预约规则
|
||||
this.loadBookingRules('telemedicine')
|
||||
},
|
||||
methods: {
|
||||
initDateRange() {
|
||||
|
|
@ -416,4 +425,29 @@
|
|||
.flash-animation {
|
||||
animation: flash 0.5s ease-in-out 3;
|
||||
}
|
||||
|
||||
/* 预约登记规则样式 */
|
||||
.booking-rules-box {
|
||||
width: 680rpx;
|
||||
margin-top: 32rpx;
|
||||
padding: 30rpx;
|
||||
background-image: linear-gradient(-45deg, #60D7FF, #68BBD7);
|
||||
border-radius: 20rpx;
|
||||
box-shadow: 0 0 10rpx 10rpx rgba(0, 0, 0, 0.1);
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.rules-title {
|
||||
font-size: 32rpx;
|
||||
font-weight: bold;
|
||||
color: #fff;
|
||||
margin-bottom: 20rpx;
|
||||
}
|
||||
|
||||
.rules-content {
|
||||
font-size: 26rpx;
|
||||
color: #fff;
|
||||
line-height: 1.6;
|
||||
white-space: pre-wrap;
|
||||
}
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -12,7 +12,12 @@
|
|||
<!-- 可滚动内容区域 -->
|
||||
<view class="scroll-content">
|
||||
<view class="content">
|
||||
<view class=""
|
||||
<!-- 预约登记规则区域 -->
|
||||
<view class="booking-rules-box" v-if="bookingRules">
|
||||
<view class="rules-title">预约登记规则</view>
|
||||
<view class="rules-content">{{ bookingRules }}</view>
|
||||
</view>
|
||||
<view v-else class=""
|
||||
style="width: 680rpx; height: 396rpx; background-image: linear-gradient(-45deg, #60D7FF, #68BBD7); margin-top: 32rpx; border-radius: 20rpx; box-shadow: 0 0 10rpx 10rpx rgba(0, 0, 0, 0.1);">
|
||||
</view>
|
||||
|
||||
|
|
@ -165,9 +170,11 @@
|
|||
|
||||
<script>
|
||||
import { AppServer } from '@/modules/api/AppServer.js'
|
||||
import bookingRulesMixin from '@/mixins/bookingRulesMixin.js'
|
||||
const appServer = new AppServer()
|
||||
|
||||
export default {
|
||||
mixins: [bookingRulesMixin],
|
||||
data() {
|
||||
return {
|
||||
serviceId: "",
|
||||
|
|
@ -226,6 +233,8 @@
|
|||
if (options.title) {
|
||||
this.serviceTitle = decodeURIComponent(options.title)
|
||||
}
|
||||
// 加载预约规则
|
||||
this.loadBookingRules('pet_transport')
|
||||
},
|
||||
methods: {
|
||||
initDateRange() {
|
||||
|
|
@ -485,4 +494,29 @@
|
|||
.flash-animation {
|
||||
animation: flash 0.5s ease-in-out 3;
|
||||
}
|
||||
|
||||
/* 预约登记规则样式 */
|
||||
.booking-rules-box {
|
||||
width: 680rpx;
|
||||
margin-top: 32rpx;
|
||||
padding: 30rpx;
|
||||
background-image: linear-gradient(-45deg, #60D7FF, #68BBD7);
|
||||
border-radius: 20rpx;
|
||||
box-shadow: 0 0 10rpx 10rpx rgba(0, 0, 0, 0.1);
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.rules-title {
|
||||
font-size: 32rpx;
|
||||
font-weight: bold;
|
||||
color: #fff;
|
||||
margin-bottom: 20rpx;
|
||||
}
|
||||
|
||||
.rules-content {
|
||||
font-size: 26rpx;
|
||||
color: #fff;
|
||||
line-height: 1.6;
|
||||
white-space: pre-wrap;
|
||||
}
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -12,7 +12,12 @@
|
|||
<!-- 可滚动内容区域 -->
|
||||
<view class="scroll-content">
|
||||
<view class="content">
|
||||
<view class=""
|
||||
<!-- 预约登记规则区域 -->
|
||||
<view class="booking-rules-box" v-if="bookingRules">
|
||||
<view class="rules-title">预约登记规则</view>
|
||||
<view class="rules-content">{{ bookingRules }}</view>
|
||||
</view>
|
||||
<view v-else class=""
|
||||
style="width: 680rpx; height: 396rpx; background-image: linear-gradient(-45deg, #60D7FF, #68BBD7); margin-top: 32rpx; border-radius: 20rpx; box-shadow: 0 0 10rpx 10rpx rgba(0, 0, 0, 0.1);">
|
||||
</view>
|
||||
|
||||
|
|
@ -160,9 +165,11 @@
|
|||
|
||||
<script>
|
||||
import { AppServer } from '@/modules/api/AppServer.js'
|
||||
import bookingRulesMixin from '@/mixins/bookingRulesMixin.js'
|
||||
const appServer = new AppServer()
|
||||
|
||||
export default {
|
||||
mixins: [bookingRulesMixin],
|
||||
data() {
|
||||
return {
|
||||
serviceId: "",
|
||||
|
|
@ -223,6 +230,8 @@
|
|||
if (options.title) {
|
||||
this.serviceTitle = decodeURIComponent(options.title)
|
||||
}
|
||||
// 加载预约规则
|
||||
this.loadBookingRules('train')
|
||||
},
|
||||
methods: {
|
||||
initDateRange() {
|
||||
|
|
@ -528,4 +537,29 @@
|
|||
min-width: 80rpx;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
/* 预约登记规则样式 */
|
||||
.booking-rules-box {
|
||||
width: 680rpx;
|
||||
margin-top: 32rpx;
|
||||
padding: 30rpx;
|
||||
background-image: linear-gradient(-45deg, #60D7FF, #68BBD7);
|
||||
border-radius: 20rpx;
|
||||
box-shadow: 0 0 10rpx 10rpx rgba(0, 0, 0, 0.1);
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.rules-title {
|
||||
font-size: 32rpx;
|
||||
font-weight: bold;
|
||||
color: #fff;
|
||||
margin-bottom: 20rpx;
|
||||
}
|
||||
|
||||
.rules-content {
|
||||
font-size: 26rpx;
|
||||
color: #fff;
|
||||
line-height: 1.6;
|
||||
white-space: pre-wrap;
|
||||
}
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -12,7 +12,12 @@
|
|||
<!-- 可滚动内容区域 -->
|
||||
<view class="scroll-content">
|
||||
<view class="content">
|
||||
<view class=""
|
||||
<!-- 预约登记规则区域 -->
|
||||
<view class="booking-rules-box" v-if="bookingRules">
|
||||
<view class="rules-title">预约登记规则</view>
|
||||
<view class="rules-content">{{ bookingRules }}</view>
|
||||
</view>
|
||||
<view v-else class=""
|
||||
style="width: 680rpx; height: 396rpx; background-image: linear-gradient(-45deg, #60D7FF, #68BBD7); margin-top: 32rpx; border-radius: 20rpx; box-shadow: 0 0 10rpx 10rpx rgba(0, 0, 0, 0.1);">
|
||||
</view>
|
||||
|
||||
|
|
@ -122,9 +127,11 @@
|
|||
|
||||
<script>
|
||||
import { AppServer } from '@/modules/api/AppServer.js'
|
||||
import bookingRulesMixin from '@/mixins/bookingRulesMixin.js'
|
||||
const appServer = new AppServer()
|
||||
|
||||
export default {
|
||||
mixins: [bookingRulesMixin],
|
||||
data() {
|
||||
return {
|
||||
serviceId: "",
|
||||
|
|
@ -157,6 +164,8 @@
|
|||
if (options.title) {
|
||||
this.serviceTitle = decodeURIComponent(options.title)
|
||||
}
|
||||
// 加载预约规则
|
||||
this.loadBookingRules('sea_freight')
|
||||
},
|
||||
methods: {
|
||||
checkData() {
|
||||
|
|
@ -352,4 +361,29 @@
|
|||
.flash-animation {
|
||||
animation: flash 0.5s ease-in-out 3;
|
||||
}
|
||||
|
||||
/* 预约登记规则样式 */
|
||||
.booking-rules-box {
|
||||
width: 680rpx;
|
||||
margin-top: 32rpx;
|
||||
padding: 30rpx;
|
||||
background-image: linear-gradient(-45deg, #60D7FF, #68BBD7);
|
||||
border-radius: 20rpx;
|
||||
box-shadow: 0 0 10rpx 10rpx rgba(0, 0, 0, 0.1);
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.rules-title {
|
||||
font-size: 32rpx;
|
||||
font-weight: bold;
|
||||
color: #fff;
|
||||
margin-bottom: 20rpx;
|
||||
}
|
||||
|
||||
.rules-content {
|
||||
font-size: 26rpx;
|
||||
color: #fff;
|
||||
line-height: 1.6;
|
||||
white-space: pre-wrap;
|
||||
}
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -12,7 +12,12 @@
|
|||
<!-- 可滚动内容区域 -->
|
||||
<view class="scroll-content">
|
||||
<view class="content">
|
||||
<view class=""
|
||||
<!-- 预约登记规则区域 -->
|
||||
<view class="booking-rules-box" v-if="bookingRules">
|
||||
<view class="rules-title">预约登记规则</view>
|
||||
<view class="rules-content">{{ bookingRules }}</view>
|
||||
</view>
|
||||
<view v-else class=""
|
||||
style="width: 680rpx; height: 396rpx; background-image: linear-gradient(-45deg, #60D7FF, #68BBD7); margin-top: 32rpx; border-radius: 20rpx; box-shadow: 0 0 10rpx 10rpx rgba(0, 0, 0, 0.1);">
|
||||
</view>
|
||||
|
||||
|
|
@ -131,9 +136,11 @@
|
|||
|
||||
<script>
|
||||
import { AppServer } from '@/modules/api/AppServer.js'
|
||||
import bookingRulesMixin from '@/mixins/bookingRulesMixin.js'
|
||||
const appServer = new AppServer()
|
||||
|
||||
export default {
|
||||
mixins: [bookingRulesMixin],
|
||||
data() {
|
||||
return {
|
||||
serviceId: "",
|
||||
|
|
@ -169,6 +176,8 @@
|
|||
if (options.title) {
|
||||
this.serviceTitle = decodeURIComponent(options.title)
|
||||
}
|
||||
// 加载预约规则
|
||||
this.loadBookingRules('special_passenger')
|
||||
},
|
||||
methods: {
|
||||
initDateRange() {
|
||||
|
|
@ -400,4 +409,29 @@
|
|||
.flash-animation {
|
||||
animation: flash 0.5s ease-in-out 3;
|
||||
}
|
||||
|
||||
/* 预约登记规则样式 */
|
||||
.booking-rules-box {
|
||||
width: 680rpx;
|
||||
margin-top: 32rpx;
|
||||
padding: 30rpx;
|
||||
background-image: linear-gradient(-45deg, #60D7FF, #68BBD7);
|
||||
border-radius: 20rpx;
|
||||
box-shadow: 0 0 10rpx 10rpx rgba(0, 0, 0, 0.1);
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.rules-title {
|
||||
font-size: 32rpx;
|
||||
font-weight: bold;
|
||||
color: #fff;
|
||||
margin-bottom: 20rpx;
|
||||
}
|
||||
|
||||
.rules-content {
|
||||
font-size: 26rpx;
|
||||
color: #fff;
|
||||
line-height: 1.6;
|
||||
white-space: pre-wrap;
|
||||
}
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -12,7 +12,12 @@
|
|||
<!-- 可滚动内容区域 -->
|
||||
<view class="scroll-content">
|
||||
<view class="content">
|
||||
<view class=""
|
||||
<!-- 预约登记规则区域 -->
|
||||
<view class="booking-rules-box" v-if="bookingRules">
|
||||
<view class="rules-title">预约登记规则</view>
|
||||
<view class="rules-content">{{ bookingRules }}</view>
|
||||
</view>
|
||||
<view v-else class=""
|
||||
style="width: 680rpx; height: 396rpx; background-image: linear-gradient(-45deg, #60D7FF, #68BBD7); margin-top: 32rpx; border-radius: 20rpx; box-shadow: 0 0 10rpx 10rpx rgba(0, 0, 0, 0.1);">
|
||||
</view>
|
||||
|
||||
|
|
@ -190,9 +195,11 @@
|
|||
|
||||
<script>
|
||||
import { AppServer } from '@/modules/api/AppServer.js'
|
||||
import bookingRulesMixin from '@/mixins/bookingRulesMixin.js'
|
||||
const appServer = new AppServer()
|
||||
|
||||
export default {
|
||||
mixins: [bookingRulesMixin],
|
||||
data() {
|
||||
return {
|
||||
serviceId: "",
|
||||
|
|
@ -232,6 +239,8 @@
|
|||
if (options.title) {
|
||||
this.serviceTitle = decodeURIComponent(options.title)
|
||||
}
|
||||
// 加载预约规则
|
||||
this.loadBookingRules('travel_planning')
|
||||
},
|
||||
methods: {
|
||||
initDateRange() {
|
||||
|
|
@ -555,4 +564,29 @@
|
|||
min-width: 80rpx;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
/* 预约登记规则样式 */
|
||||
.booking-rules-box {
|
||||
width: 680rpx;
|
||||
margin-top: 32rpx;
|
||||
padding: 30rpx;
|
||||
background-image: linear-gradient(-45deg, #60D7FF, #68BBD7);
|
||||
border-radius: 20rpx;
|
||||
box-shadow: 0 0 10rpx 10rpx rgba(0, 0, 0, 0.1);
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.rules-title {
|
||||
font-size: 32rpx;
|
||||
font-weight: bold;
|
||||
color: #fff;
|
||||
margin-bottom: 20rpx;
|
||||
}
|
||||
|
||||
.rules-content {
|
||||
font-size: 26rpx;
|
||||
color: #fff;
|
||||
line-height: 1.6;
|
||||
white-space: pre-wrap;
|
||||
}
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -12,7 +12,12 @@
|
|||
<!-- 可滚动内容区域 -->
|
||||
<view class="scroll-content">
|
||||
<view class="content">
|
||||
<view class=""
|
||||
<!-- 预约登记规则区域 -->
|
||||
<view class="booking-rules-box" v-if="bookingRules">
|
||||
<view class="rules-title">预约登记规则</view>
|
||||
<view class="rules-content">{{ bookingRules }}</view>
|
||||
</view>
|
||||
<view v-else class=""
|
||||
style="width: 680rpx; height: 396rpx; background-image: linear-gradient(-45deg, #60D7FF, #68BBD7); margin-top: 32rpx; border-radius: 20rpx; box-shadow: 0 0 10rpx 10rpx rgba(0, 0, 0, 0.1);">
|
||||
</view>
|
||||
|
||||
|
|
@ -165,9 +170,11 @@
|
|||
|
||||
<script>
|
||||
import { AppServer } from '@/modules/api/AppServer.js'
|
||||
import bookingRulesMixin from '@/mixins/bookingRulesMixin.js'
|
||||
const appServer = new AppServer()
|
||||
|
||||
export default {
|
||||
mixins: [bookingRulesMixin],
|
||||
data() {
|
||||
return {
|
||||
serviceId: "",
|
||||
|
|
@ -205,6 +212,8 @@
|
|||
if (options.title) {
|
||||
this.serviceTitle = decodeURIComponent(options.title)
|
||||
}
|
||||
// 加载预约规则
|
||||
this.loadBookingRules('unaccompanied_minor')
|
||||
},
|
||||
methods: {
|
||||
initDateRange() {
|
||||
|
|
@ -516,4 +525,29 @@
|
|||
min-width: 80rpx;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
/* 预约登记规则样式 */
|
||||
.booking-rules-box {
|
||||
width: 680rpx;
|
||||
margin-top: 32rpx;
|
||||
padding: 30rpx;
|
||||
background-image: linear-gradient(-45deg, #60D7FF, #68BBD7);
|
||||
border-radius: 20rpx;
|
||||
box-shadow: 0 0 10rpx 10rpx rgba(0, 0, 0, 0.1);
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.rules-title {
|
||||
font-size: 32rpx;
|
||||
font-weight: bold;
|
||||
color: #fff;
|
||||
margin-bottom: 20rpx;
|
||||
}
|
||||
|
||||
.rules-content {
|
||||
font-size: 26rpx;
|
||||
color: #fff;
|
||||
line-height: 1.6;
|
||||
white-space: pre-wrap;
|
||||
}
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -12,7 +12,12 @@
|
|||
<!-- 可滚动内容区域 -->
|
||||
<view class="scroll-content">
|
||||
<view class="content">
|
||||
<view class=""
|
||||
<!-- 预约登记规则区域 -->
|
||||
<view class="booking-rules-box" v-if="bookingRules">
|
||||
<view class="rules-title">预约登记规则</view>
|
||||
<view class="rules-content">{{ bookingRules }}</view>
|
||||
</view>
|
||||
<view v-else class=""
|
||||
style="width: 680rpx; height: 396rpx; background-image: linear-gradient(-45deg, #60D7FF, #68BBD7); margin-top: 32rpx; border-radius: 20rpx; box-shadow: 0 0 10rpx 10rpx rgba(0, 0, 0, 0.1);">
|
||||
</view>
|
||||
|
||||
|
|
@ -170,9 +175,11 @@
|
|||
|
||||
<script>
|
||||
import { AppServer } from '@/modules/api/AppServer.js'
|
||||
import bookingRulesMixin from '@/mixins/bookingRulesMixin.js'
|
||||
const appServer = new AppServer()
|
||||
|
||||
export default {
|
||||
mixins: [bookingRulesMixin],
|
||||
data() {
|
||||
return {
|
||||
serviceId: "",
|
||||
|
|
@ -211,6 +218,8 @@
|
|||
if (options.title) {
|
||||
this.serviceTitle = decodeURIComponent(options.title)
|
||||
}
|
||||
// 加载预约规则
|
||||
this.loadBookingRules('lounge')
|
||||
},
|
||||
methods: {
|
||||
initDateRange() {
|
||||
|
|
@ -517,4 +526,29 @@
|
|||
min-width: 80rpx;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
/* 预约登记规则样式 */
|
||||
.booking-rules-box {
|
||||
width: 680rpx;
|
||||
margin-top: 32rpx;
|
||||
padding: 30rpx;
|
||||
background-image: linear-gradient(-45deg, #60D7FF, #68BBD7);
|
||||
border-radius: 20rpx;
|
||||
box-shadow: 0 0 10rpx 10rpx rgba(0, 0, 0, 0.1);
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.rules-title {
|
||||
font-size: 32rpx;
|
||||
font-weight: bold;
|
||||
color: #fff;
|
||||
margin-bottom: 20rpx;
|
||||
}
|
||||
|
||||
.rules-content {
|
||||
font-size: 26rpx;
|
||||
color: #fff;
|
||||
line-height: 1.6;
|
||||
white-space: pre-wrap;
|
||||
}
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -12,7 +12,12 @@
|
|||
<!-- 可滚动内容区域 -->
|
||||
<view class="scroll-content">
|
||||
<view class="content">
|
||||
<view class=""
|
||||
<!-- 预约登记规则区域 -->
|
||||
<view class="booking-rules-box" v-if="bookingRules">
|
||||
<view class="rules-title">预约登记规则</view>
|
||||
<view class="rules-content">{{ bookingRules }}</view>
|
||||
</view>
|
||||
<view v-else class=""
|
||||
style="width: 680rpx; height: 396rpx; background-image: linear-gradient(-45deg, #60D7FF, #68BBD7); margin-top: 32rpx; border-radius: 20rpx; box-shadow: 0 0 10rpx 10rpx rgba(0, 0, 0, 0.1);">
|
||||
</view>
|
||||
|
||||
|
|
@ -105,9 +110,11 @@
|
|||
|
||||
<script>
|
||||
import { AppServer } from '@/modules/api/AppServer.js'
|
||||
import bookingRulesMixin from '@/mixins/bookingRulesMixin.js'
|
||||
const appServer = new AppServer()
|
||||
|
||||
export default {
|
||||
mixins: [bookingRulesMixin],
|
||||
data() {
|
||||
return {
|
||||
serviceId: "",
|
||||
|
|
@ -137,6 +144,8 @@
|
|||
if (options.title) {
|
||||
this.serviceTitle = decodeURIComponent(options.title)
|
||||
}
|
||||
// 加载预约规则
|
||||
this.loadBookingRules('visa')
|
||||
},
|
||||
methods: {
|
||||
checkData() {
|
||||
|
|
@ -311,4 +320,29 @@
|
|||
.flash-animation {
|
||||
animation: flash 0.5s ease-in-out 3;
|
||||
}
|
||||
|
||||
/* 预约登记规则样式 */
|
||||
.booking-rules-box {
|
||||
width: 680rpx;
|
||||
margin-top: 32rpx;
|
||||
padding: 30rpx;
|
||||
background-image: linear-gradient(-45deg, #60D7FF, #68BBD7);
|
||||
border-radius: 20rpx;
|
||||
box-shadow: 0 0 10rpx 10rpx rgba(0, 0, 0, 0.1);
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.rules-title {
|
||||
font-size: 32rpx;
|
||||
font-weight: bold;
|
||||
color: #fff;
|
||||
margin-bottom: 20rpx;
|
||||
}
|
||||
|
||||
.rules-content {
|
||||
font-size: 26rpx;
|
||||
color: #fff;
|
||||
line-height: 1.6;
|
||||
white-space: pre-wrap;
|
||||
}
|
||||
</style>
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user