698 lines
33 KiB
JavaScript
698 lines
33 KiB
JavaScript
(function (vc, vm) {
|
||
vc.extends({
|
||
data: {
|
||
editCommunitySpaceInfo: {
|
||
spaceId: '',
|
||
venueId: '',
|
||
name: '',
|
||
startTime: '',
|
||
endTime: '',
|
||
bookingType: '',
|
||
adminName: '',
|
||
tel: '',
|
||
state: '',
|
||
communityId: '',
|
||
pricingByDay: 'N', // 是否按天定义收费,默认为否
|
||
uniformFullPrice: 0, // 统一全场价格
|
||
uniformHalfPrice: 0, // 统一半场价格
|
||
dayPricing: [
|
||
{ dayOfWeek: 'Monday', fullPrice: 0, halfPrice: 0 },
|
||
{ dayOfWeek: 'Tuesday', fullPrice: 0, halfPrice: 0 },
|
||
{ dayOfWeek: 'Wednesday', fullPrice: 0, halfPrice: 0 },
|
||
{ dayOfWeek: 'Thursday', fullPrice: 0, halfPrice: 0 },
|
||
{ dayOfWeek: 'Friday', fullPrice: 0, halfPrice: 0 },
|
||
{ dayOfWeek: 'Saturday', fullPrice: 0, halfPrice: 0 },
|
||
{ dayOfWeek: 'Sunday', fullPrice: 0, halfPrice: 0 }
|
||
] // 按天定义的价格规则
|
||
}
|
||
},
|
||
_initMethod: function () {
|
||
let that = vc.component;
|
||
|
||
// 获取传递的参数
|
||
let _spaceInfo = vc.param('spaceInfo');
|
||
if (_spaceInfo) {
|
||
that.editCommunitySpaceInfo = _spaceInfo;
|
||
|
||
// 保存原始收费模式,防止在编辑时被修改
|
||
that.editCommunitySpaceInfo._originalPricingByDay = _spaceInfo.pricingByDay;
|
||
}
|
||
|
||
// 初始化价格规则数据
|
||
that._initPriceRuleData();
|
||
},
|
||
_initEvent: function () {
|
||
vc.on('editCommunitySpace', 'openEditCommunitySpaceModal', function (_params) {
|
||
vc.component.refreshEditCommunitySpaceInfo();
|
||
$('#editCommunitySpaceModel').modal('show');
|
||
|
||
// 先复制参数,确保priceRules数据被正确复制
|
||
vc.copyObject(_params, vc.component.editCommunitySpaceInfo);
|
||
vc.component.editCommunitySpaceInfo.communityId = vc.getCurrentCommunity().communityId;
|
||
|
||
// 打印接收到的参数,以便调试
|
||
console.log('接收到的参数:', _params);
|
||
console.log('复制后的editCommunitySpaceInfo:', vc.component.editCommunitySpaceInfo);
|
||
|
||
// 确保在复制数据后立即初始化价格规则数据
|
||
vc.component._initPriceRuleData();
|
||
});
|
||
},
|
||
methods: {
|
||
/**
|
||
* 初始化价格规则数据
|
||
*/
|
||
_initPriceRuleData: function () {
|
||
const that = vc.component;
|
||
let priceRules = that.editCommunitySpaceInfo.priceRules;
|
||
console.log('初始化价格规则数据:', priceRules);
|
||
|
||
// 重置价格数据,避免旧数据干扰
|
||
that.editCommunitySpaceInfo.uniformFullPrice = 0;
|
||
that.editCommunitySpaceInfo.uniformHalfPrice = 0;
|
||
that.editCommunitySpaceInfo.dayPricing.forEach(day => {
|
||
day.fullPrice = 0;
|
||
day.halfPrice = 0;
|
||
});
|
||
|
||
if (priceRules && Array.isArray(priceRules) && priceRules.length > 0) {
|
||
console.log('开始处理价格规则,数量:', priceRules.length);
|
||
|
||
// 智能判断收费模式
|
||
let hasDayPricing = priceRules.some(rule =>
|
||
rule.ruleName && (rule.ruleName.includes('星期') || rule.ruleName.includes('周'))
|
||
);
|
||
|
||
if (hasDayPricing) {
|
||
that.editCommunitySpaceInfo.pricingByDay = 'Y';
|
||
console.log('检测到按天收费规则,设置为按天收费模式');
|
||
} else {
|
||
that.editCommunitySpaceInfo.pricingByDay = 'N';
|
||
console.log('未检测到按天收费规则,设置为统一收费模式');
|
||
}
|
||
|
||
// 处理价格规则
|
||
priceRules.forEach((rule, index) => {
|
||
console.log(`处理规则 ${index}:`, rule);
|
||
|
||
if (that.editCommunitySpaceInfo.pricingByDay === 'Y') {
|
||
// 按天收费模式
|
||
let dayOfWeek = null;
|
||
|
||
// 多种方式提取星期信息
|
||
if (rule.day) {
|
||
dayOfWeek = rule.day;
|
||
} else if (rule.ruleName) {
|
||
// 从ruleName中提取
|
||
if (rule.ruleName.includes('一') || rule.ruleName.includes('MONDAY') || rule.ruleName.includes('Monday')) {
|
||
dayOfWeek = 'Monday';
|
||
} else if (rule.ruleName.includes('二') || rule.ruleName.includes('TUESDAY') || rule.ruleName.includes('Tuesday')) {
|
||
dayOfWeek = 'Tuesday';
|
||
} else if (rule.ruleName.includes('三') || rule.ruleName.includes('WEDNESDAY') || rule.ruleName.includes('Wednesday')) {
|
||
dayOfWeek = 'Wednesday';
|
||
} else if (rule.ruleName.includes('四') || rule.ruleName.includes('THURSDAY') || rule.ruleName.includes('Thursday')) {
|
||
dayOfWeek = 'Thursday';
|
||
} else if (rule.ruleName.includes('五') || rule.ruleName.includes('FRIDAY') || rule.ruleName.includes('Friday')) {
|
||
dayOfWeek = 'Friday';
|
||
} else if (rule.ruleName.includes('六') || rule.ruleName.includes('SATURDAY') || rule.ruleName.includes('Saturday')) {
|
||
dayOfWeek = 'Saturday';
|
||
} else if (rule.ruleName.includes('日') || rule.ruleName.includes('天') || rule.ruleName.includes('SUNDAY') || rule.ruleName.includes('Sunday')) {
|
||
dayOfWeek = 'Sunday';
|
||
}
|
||
}
|
||
|
||
if (dayOfWeek) {
|
||
let dayIndex = that._getDayIndex(dayOfWeek);
|
||
if (dayIndex >= 0) {
|
||
if (rule.ruleType === '1001' || rule.ruleName.includes('全场')) {
|
||
that.editCommunitySpaceInfo.dayPricing[dayIndex].fullPrice = parseFloat(rule.price) || 0;
|
||
console.log(`设置 ${dayOfWeek} 全场价格:`, rule.price);
|
||
} else if (rule.ruleType === '2002' || rule.ruleName.includes('半场')) {
|
||
that.editCommunitySpaceInfo.dayPricing[dayIndex].halfPrice = parseFloat(rule.price) || 0;
|
||
console.log(`设置 ${dayOfWeek} 半场价格:`, rule.price);
|
||
}
|
||
}
|
||
}
|
||
} else {
|
||
// 统一收费模式
|
||
if (rule.ruleType === '1001' || rule.ruleName.includes('全场')) {
|
||
that.editCommunitySpaceInfo.uniformFullPrice = parseFloat(rule.price) || 0;
|
||
console.log('设置统一全场价格:', rule.price);
|
||
} else if (rule.ruleType === '2002' || rule.ruleName.includes('半场')) {
|
||
that.editCommunitySpaceInfo.uniformHalfPrice = parseFloat(rule.price) || 0;
|
||
console.log('设置统一半场价格:', rule.price);
|
||
}
|
||
}
|
||
});
|
||
} else {
|
||
console.log('没有priceRules数据,使用默认值');
|
||
}
|
||
|
||
console.log('初始化后的价格数据:', {
|
||
uniformFullPrice: that.editCommunitySpaceInfo.uniformFullPrice,
|
||
uniformHalfPrice: that.editCommunitySpaceInfo.uniformHalfPrice,
|
||
dayPricing: that.editCommunitySpaceInfo.dayPricing
|
||
});
|
||
},
|
||
|
||
/**
|
||
* 根据星期几获取索引
|
||
* @param {String} dayOfWeek 星期几
|
||
* @return {Number} 索引
|
||
*/
|
||
_getDayIndex: function (dayOfWeek) {
|
||
const dayMap = {
|
||
'Monday': 0,
|
||
'Tuesday': 1,
|
||
'Wednesday': 2,
|
||
'Thursday': 3,
|
||
'Friday': 4,
|
||
'Saturday': 5,
|
||
'Sunday': 6,
|
||
'星期一': 0,
|
||
'星期二': 1,
|
||
'星期三': 2,
|
||
'星期四': 3,
|
||
'星期五': 4,
|
||
'星期六': 5,
|
||
'星期日': 6,
|
||
'星期天': 6,
|
||
'MONDAY': 0,
|
||
'TUESDAY': 1,
|
||
'WEDNESDAY': 2,
|
||
'THURSDAY': 3,
|
||
'FRIDAY': 4,
|
||
'SATURDAY': 5,
|
||
'SUNDAY': 6
|
||
};
|
||
|
||
// 清理dayOfWeek参数,去除前后空格
|
||
const cleanedDayOfWeek = dayOfWeek ? dayOfWeek.trim() : dayOfWeek;
|
||
|
||
console.log('_getDayIndex调用: dayOfWeek="' + dayOfWeek + '", 清理后:"' + cleanedDayOfWeek + '", 类型:', typeof dayOfWeek);
|
||
console.log('dayMap检查:', dayMap[cleanedDayOfWeek]);
|
||
console.log('dayMap中MONDAY的值:', dayMap['MONDAY']);
|
||
console.log('dayMap中MONDAY是否存在:', 'MONDAY' in dayMap);
|
||
|
||
// 使用清理后的参数进行查找
|
||
const result = dayMap[cleanedDayOfWeek] !== undefined ? dayMap[cleanedDayOfWeek] : -1;
|
||
console.log('_getDayIndex返回结果:', result);
|
||
|
||
return result;
|
||
},
|
||
|
||
/**
|
||
* 改变预约类型
|
||
*/
|
||
_changeBookingType: function () {
|
||
// 这里可以添加预约类型改变时的逻辑
|
||
},
|
||
|
||
editCommunitySpaceValidate: function () {
|
||
return vc.validate.validate({
|
||
editCommunitySpaceInfo: vc.component.editCommunitySpaceInfo
|
||
}, {
|
||
'editCommunitySpaceInfo.name': [
|
||
{
|
||
limit: "required",
|
||
param: "",
|
||
errInfo: "名称不能为空"
|
||
},
|
||
{
|
||
limit: "maxLength",
|
||
param: "50",
|
||
errInfo: "名称不能超过50"
|
||
}
|
||
],
|
||
'editCommunitySpaceInfo.startTime': [
|
||
{
|
||
limit: "required",
|
||
param: "",
|
||
errInfo: "预约开始时间不能为空"
|
||
},
|
||
{
|
||
limit: "maxLength",
|
||
param: "64",
|
||
errInfo: "预约开始时间不能超过64"
|
||
}
|
||
],
|
||
'editCommunitySpaceInfo.endTime': [
|
||
{
|
||
limit: "required",
|
||
param: "",
|
||
errInfo: "预约结束时间不能为空"
|
||
},
|
||
{
|
||
limit: "maxLength",
|
||
param: "64",
|
||
errInfo: "预约结束时间不能超过64"
|
||
}
|
||
],
|
||
'editCommunitySpaceInfo.bookingType': [
|
||
{
|
||
limit: "required",
|
||
param: "",
|
||
errInfo: "预约类型不能为空"
|
||
},
|
||
{
|
||
limit: "maxLength",
|
||
param: "12",
|
||
errInfo: "预约类型不能超过12"
|
||
}
|
||
],
|
||
'editCommunitySpaceInfo.adminName': [
|
||
{
|
||
limit: "required",
|
||
param: "",
|
||
errInfo: "管理员不能为空"
|
||
},
|
||
{
|
||
limit: "maxLength",
|
||
param: "64",
|
||
errInfo: "管理员不能超过64"
|
||
}
|
||
],
|
||
'editCommunitySpaceInfo.tel': [
|
||
{
|
||
limit: "required",
|
||
param: "",
|
||
errInfo: "管理员电话不能为空"
|
||
},
|
||
{
|
||
limit: "maxLength",
|
||
param: "11",
|
||
errInfo: "管理员电话不能超过11"
|
||
}
|
||
],
|
||
'editCommunitySpaceInfo.state': [
|
||
{
|
||
limit: "required",
|
||
param: "",
|
||
errInfo: "状态不能为空"
|
||
},
|
||
{
|
||
limit: "maxLength",
|
||
param: "12",
|
||
errInfo: "状态不能超过12"
|
||
}
|
||
],
|
||
'editCommunitySpaceInfo.spaceId': [
|
||
{
|
||
limit: "required",
|
||
param: "",
|
||
errInfo: "编号不能为空"
|
||
}
|
||
]
|
||
});
|
||
},
|
||
editCommunitySpace: function () {
|
||
if (!vc.component.editCommunitySpaceValidate()) {
|
||
vc.toast(vc.validate.errInfo);
|
||
return;
|
||
}
|
||
|
||
// 验证价格规则
|
||
if (vc.component.editCommunitySpaceInfo.pricingByDay === 'Y') {
|
||
// 按天定义收费
|
||
let hasPrice = false;
|
||
vc.component.editCommunitySpaceInfo.dayPricing.forEach(day => {
|
||
if ((vc.component.editCommunitySpaceInfo.bookingType === 'Full' || vc.component.editCommunitySpaceInfo.bookingType === 'Half') && day.fullPrice > 0) {
|
||
hasPrice = true;
|
||
}
|
||
if (vc.component.editCommunitySpaceInfo.bookingType === 'Half' && day.halfPrice > 0) {
|
||
hasPrice = true;
|
||
}
|
||
});
|
||
if (!hasPrice) {
|
||
vc.toast("请设置至少一天的价格");
|
||
return;
|
||
}
|
||
} else {
|
||
// 统一收费
|
||
if ((vc.component.editCommunitySpaceInfo.bookingType === 'Full' || vc.component.editCommunitySpaceInfo.bookingType === 'Half') && vc.component.editCommunitySpaceInfo.uniformFullPrice <= 0) {
|
||
vc.toast("请设置全场收费标准");
|
||
return;
|
||
}
|
||
if (vc.component.editCommunitySpaceInfo.bookingType === 'Half' && vc.component.editCommunitySpaceInfo.uniformHalfPrice <= 0) {
|
||
vc.toast("请设置半场收费标准");
|
||
return;
|
||
}
|
||
}
|
||
|
||
vc.http.apiPost(
|
||
'/communitySpace.updateCommunitySpace',
|
||
JSON.stringify(vc.component.editCommunitySpaceInfo), {
|
||
emulateJSON: true
|
||
},
|
||
function (json, res) {
|
||
//vm.menus = vm.refreshMenuActive(JSON.parse(json),0);
|
||
let _json = JSON.parse(json);
|
||
if (_json.code == 0) {
|
||
// 保存价格规则
|
||
vc.component._savePriceRule();
|
||
} else {
|
||
vc.toast(_json.msg);
|
||
}
|
||
},
|
||
function (errInfo, error) {
|
||
console.log('请求失败处理');
|
||
vc.message(errInfo);
|
||
});
|
||
},
|
||
|
||
/**
|
||
* 生成规则ID
|
||
*/
|
||
generateRuleId: function() {
|
||
// 生成一个基于时间戳和随机数的唯一ID
|
||
return '14' + new Date().getTime() + Math.floor(Math.random() * 10000);
|
||
},
|
||
|
||
/**
|
||
* 保存价格规则
|
||
*/
|
||
_savePriceRule: function () {
|
||
let that = this;
|
||
|
||
// 直接从组件数据中获取现有规则
|
||
let existingPriceRules = vc.component.editCommunitySpaceInfo.priceRules || [];
|
||
console.log('组件中的现有规则:', existingPriceRules);
|
||
|
||
// 获取收费模式(不可修改,使用原始值)
|
||
let pricingByDay = vc.component.editCommunitySpaceInfo.pricingByDay;
|
||
console.log('当前收费模式(不可修改):', pricingByDay);
|
||
|
||
// 构建新的价格规则数组
|
||
let priceRules = [];
|
||
|
||
if (pricingByDay === 'Y') {
|
||
// 按天定义收费 - 只能更新现有的按天收费规则
|
||
vc.component.editCommunitySpaceInfo.dayPricing.forEach(day => {
|
||
console.log('处理按天收费规则,星期:', day.dayOfWeek, '全场价:', day.fullPrice, '半场价:', day.halfPrice);
|
||
|
||
// 处理全场价格规则
|
||
if (vc.component.editCommunitySpaceInfo.bookingType === 'Full' ||
|
||
vc.component.editCommunitySpaceInfo.bookingType === 'Half') {
|
||
|
||
// 全场价格规则
|
||
let fullPriceRule = {
|
||
ruleType: 'DAY_PRICING_FULL',
|
||
feeType: '1001',
|
||
price: day.fullPrice || 0,
|
||
day: day.dayOfWeek // 添加day字段,移除ruleName,由后端生成
|
||
};
|
||
|
||
// 改进的匹配逻辑:通过规则名称中的星期几信息来匹配
|
||
let existingFullRule = that._findPriceRuleByDay(existingPriceRules, day.dayOfWeek, '1001');
|
||
|
||
if (existingFullRule) {
|
||
fullPriceRule.ruleId = existingFullRule.ruleId;
|
||
console.log('找到星期' + that._getDayChineseName(day.dayOfWeek) + '的现有全场规则,ruleId:', existingFullRule.ruleId);
|
||
|
||
// 只有当有现有规则时才添加(确保只更新,不插入)
|
||
priceRules.push(fullPriceRule);
|
||
} else {
|
||
console.log('未找到星期' + that._getDayChineseName(day.dayOfWeek) + '的现有全场规则,跳过该规则');
|
||
}
|
||
}
|
||
|
||
// 处理半场价格规则
|
||
if (vc.component.editCommunitySpaceInfo.bookingType === 'Half') {
|
||
// 半场价格规则
|
||
let halfPriceRule = {
|
||
ruleType: 'DAY_PRICING_HALF',
|
||
feeType: '1001',
|
||
price: day.halfPrice || 0,
|
||
day: day.dayOfWeek // 添加day字段,移除ruleName,由后端生成
|
||
};
|
||
|
||
// 改进的匹配逻辑:通过规则名称中的星期几信息来匹配
|
||
let existingHalfRule = that._findPriceRuleByDay(existingPriceRules, day.dayOfWeek, '2002');
|
||
|
||
if (existingHalfRule) {
|
||
halfPriceRule.ruleId = existingHalfRule.ruleId;
|
||
console.log('找到星期' + that._getDayChineseName(day.dayOfWeek) + '的现有半场规则,ruleId:', existingHalfRule.ruleId);
|
||
|
||
// 只有当有现有规则时才添加(确保只更新,不插入)
|
||
priceRules.push(halfPriceRule);
|
||
} else {
|
||
console.log('未找到星期' + that._getDayChineseName(day.dayOfWeek) + '的现有半场规则,跳过该规则');
|
||
}
|
||
}
|
||
});
|
||
} else {
|
||
// 统一收费 - 只能更新现有的统一收费规则
|
||
if (vc.component.editCommunitySpaceInfo.bookingType === 'Full' ||
|
||
vc.component.editCommunitySpaceInfo.bookingType === 'Half') {
|
||
|
||
let fullPriceRule = {
|
||
ruleType: 'UNIFORM_PRICING_FULL',
|
||
feeType: '1001',
|
||
price: vc.component.editCommunitySpaceInfo.uniformFullPrice || 0
|
||
// 移除ruleName,由后端生成
|
||
};
|
||
|
||
// 查找现有规则中的全场规则
|
||
let existingFullRule = existingPriceRules.find(rule => rule.ruleType === '1001');
|
||
if (existingFullRule) {
|
||
fullPriceRule.ruleId = existingFullRule.ruleId;
|
||
console.log('找到现有统一全场规则,ruleId:', existingFullRule.ruleId);
|
||
|
||
// 只有当有现有规则时才添加(确保只更新,不插入)
|
||
priceRules.push(fullPriceRule);
|
||
} else {
|
||
console.log('未找到现有的统一全场规则,跳过该规则');
|
||
}
|
||
}
|
||
|
||
if (vc.component.editCommunitySpaceInfo.bookingType === 'Half') {
|
||
let halfPriceRule = {
|
||
ruleType: 'UNIFORM_PRICING_HALF',
|
||
feeType: '1001',
|
||
price: vc.component.editCommunitySpaceInfo.uniformHalfPrice || 0
|
||
// 移除ruleName,由后端生成
|
||
};
|
||
|
||
// 查找现有规则中的半场规则
|
||
let existingHalfRule = existingPriceRules.find(rule => rule.ruleType === '2002');
|
||
if (existingHalfRule) {
|
||
halfPriceRule.ruleId = existingHalfRule.ruleId;
|
||
console.log('找到现有统一半场规则,ruleId:', existingHalfRule.ruleId);
|
||
|
||
// 只有当有现有规则时才添加(确保只更新,不插入)
|
||
priceRules.push(halfPriceRule);
|
||
} else {
|
||
console.log('未找到现有的统一半场规则,跳过该规则');
|
||
}
|
||
}
|
||
}
|
||
|
||
// 构建请求数据
|
||
let requestData = {
|
||
spaceId: vc.component.editCommunitySpaceInfo.spaceId,
|
||
venueId: vc.component.editCommunitySpaceInfo.venueId,
|
||
communityId: vc.component.editCommunitySpaceInfo.communityId,
|
||
rules: priceRules
|
||
};
|
||
|
||
console.log('准备发送的价格规则数据:', JSON.stringify(requestData, null, 2));
|
||
|
||
// 检查是否有规则需要发送
|
||
if (priceRules.length === 0) {
|
||
console.log('没有价格规则需要保存,直接关闭模态框');
|
||
// 如果没有规则需要保存,直接关闭模态框
|
||
$('#editCommunitySpaceModel').modal('hide');
|
||
vc.emit('communitySpaceManage', 'listCommunitySpace', {});
|
||
vc.toast("修改成功");
|
||
return;
|
||
}
|
||
|
||
// 发送请求
|
||
vc.http.apiPost(
|
||
'/communitySpacePriceRule.saveCommunitySpacePriceRules',
|
||
JSON.stringify(requestData), {
|
||
emulateJSON: true,
|
||
headers: {
|
||
'Content-Type': 'application/json'
|
||
}
|
||
},
|
||
function (json, res) {
|
||
let _json = JSON.parse(json);
|
||
if (_json.code == 0) {
|
||
//关闭modal
|
||
$('#editCommunitySpaceModel').modal('hide');
|
||
vc.emit('communitySpaceManage', 'listCommunitySpace', {});
|
||
vc.toast("修改成功");
|
||
} else {
|
||
vc.toast(_json.msg || "价格规则保存失败");
|
||
}
|
||
},
|
||
function (errInfo, error) {
|
||
console.log('请求失败处理');
|
||
vc.message(errInfo);
|
||
});
|
||
},
|
||
_findExistingRule: function(dayOfWeek, ruleType) {
|
||
let existingRules = vc.component.editCommunitySpaceInfo.priceRules;
|
||
if (!existingRules || !Array.isArray(existingRules)) {
|
||
return null;
|
||
}
|
||
|
||
return existingRules.find(rule => {
|
||
if (rule.ruleType !== ruleType) {
|
||
return false;
|
||
}
|
||
|
||
if (dayOfWeek) {
|
||
// 按天收费规则,需要匹配星期
|
||
return rule.dayOfWeek === dayOfWeek ||
|
||
(rule.ruleName && rule.ruleName.includes(that._getDayChineseName(dayOfWeek)));
|
||
} else {
|
||
// 统一收费规则
|
||
return !rule.dayOfWeek &&
|
||
(rule.ruleName && (rule.ruleName.includes('统一') || rule.ruleName.includes('全场') || rule.ruleName.includes('半场')));
|
||
}
|
||
});
|
||
},
|
||
|
||
/**
|
||
* 根据星期几和规则类型查找价格规则
|
||
*/
|
||
_findPriceRuleByDay: function(existingPriceRules, dayOfWeek, ruleType) {
|
||
let that = this;
|
||
|
||
// 将星期几转换为大写英文格式(因为规则名称中使用的是英文)
|
||
let englishDay = dayOfWeek.toUpperCase();
|
||
console.log('查找规则: 星期英文名=' + englishDay + ', 规则类型=' + ruleType);
|
||
|
||
return existingPriceRules.find(function(rule) {
|
||
console.log('检查规则: ruleId=' + rule.ruleId + ', ruleName=' + rule.ruleName + ', ruleType=' + rule.ruleType);
|
||
|
||
// 1. 首先检查规则类型是否匹配
|
||
if (rule.ruleType !== ruleType) {
|
||
console.log('规则类型不匹配: 期望=' + ruleType + ', 实际=' + rule.ruleType);
|
||
return false;
|
||
}
|
||
|
||
// 2. 检查规则名称是否包含英文星期名称
|
||
if (rule.ruleName && rule.ruleName.includes(englishDay)) {
|
||
console.log('规则名称匹配成功: ' + rule.ruleName + ' 包含 ' + englishDay);
|
||
return true;
|
||
}
|
||
|
||
// 3. 检查规则名称是否包含中文星期名称(兼容性检查)
|
||
let chineseDay = that._getDayChineseName(dayOfWeek);
|
||
if (rule.ruleName && rule.ruleName.includes('星期' + chineseDay)) {
|
||
console.log('规则名称匹配成功(中文): ' + rule.ruleName + ' 包含 星期' + chineseDay);
|
||
return true;
|
||
}
|
||
|
||
// 4. 如果有dayOfWeek字段,直接比较
|
||
if (rule.dayOfWeek && rule.dayOfWeek.toUpperCase() === englishDay) {
|
||
console.log('dayOfWeek字段匹配成功: ' + rule.dayOfWeek + ' = ' + englishDay);
|
||
return true;
|
||
}
|
||
|
||
console.log('规则不匹配');
|
||
return false;
|
||
});
|
||
},
|
||
|
||
/**
|
||
* 修改收费模式改变事件
|
||
*/
|
||
_changePricingByDay: function() {
|
||
// 在编辑模式下,不允许修改收费模式
|
||
if (vc.component.editCommunitySpaceInfo.spaceId) {
|
||
// 如果是编辑模式,恢复原来的收费模式
|
||
let originalPricingByDay = vc.component.editCommunitySpaceInfo._originalPricingByDay;
|
||
if (originalPricingByDay) {
|
||
vc.component.editCommunitySpaceInfo.pricingByDay = originalPricingByDay;
|
||
}
|
||
vc.toast("编辑模式下不允许修改收费模式");
|
||
return;
|
||
}
|
||
|
||
// 新增模式下,正常处理收费模式改变
|
||
vc.component._initPriceRuleData();
|
||
},
|
||
|
||
/**
|
||
* 将日期类型与星期几匹配
|
||
*/
|
||
_matchDateTypeWithDay: function(dateType, dayOfWeek) {
|
||
// 将星期几转换为标准格式
|
||
let normalizedDay = dayOfWeek.toUpperCase();
|
||
|
||
// 匹配周末
|
||
if (dateType === 'WEEKEND' && (normalizedDay === 'SATURDAY' || normalizedDay === 'SUNDAY')) {
|
||
return true;
|
||
}
|
||
|
||
// 匹配工作日
|
||
if (dateType === 'WEEKDAY' &&
|
||
(normalizedDay === 'MONDAY' || normalizedDay === 'TUESDAY' ||
|
||
normalizedDay === 'WEDNESDAY' || normalizedDay === 'THURSDAY' ||
|
||
normalizedDay === 'FRIDAY')) {
|
||
return true;
|
||
}
|
||
|
||
// 可以添加其他日期类型匹配逻辑
|
||
return false;
|
||
},
|
||
/**
|
||
* 将英文星期转换为中文数字
|
||
*/
|
||
_getDayChineseName: function(dayOfWeek) {
|
||
const dayMap = {
|
||
'Monday': '一',
|
||
'Tuesday': '二',
|
||
'Wednesday': '三',
|
||
'Thursday': '四',
|
||
'Friday': '五',
|
||
'Saturday': '六',
|
||
'Sunday': '日',
|
||
'MONDAY': '一',
|
||
'TUESDAY': '二',
|
||
'WEDNESDAY': '三',
|
||
'THURSDAY': '四',
|
||
'FRIDAY': '五',
|
||
'SATURDAY': '六',
|
||
'SUNDAY': '日'
|
||
};
|
||
return dayMap[dayOfWeek] || dayOfWeek;
|
||
},
|
||
|
||
refreshEditCommunitySpaceInfo: function () {
|
||
// 保存现有的priceRules数据
|
||
const existingPriceRules = vc.component.editCommunitySpaceInfo ? vc.component.editCommunitySpaceInfo.priceRules : null;
|
||
|
||
vc.component.editCommunitySpaceInfo = {
|
||
spaceId: '',
|
||
venueId: '',
|
||
name: '',
|
||
startTime: '',
|
||
endTime: '',
|
||
bookingType: '',
|
||
adminName: '',
|
||
tel: '',
|
||
state: '',
|
||
communityId: '',
|
||
pricingByDay: 'N', // 是否按天定义收费,默认为否
|
||
uniformFullPrice: 0, // 统一全场价格
|
||
uniformHalfPrice: 0, // 统一半场价格
|
||
dayPricing: [
|
||
{ dayOfWeek: 'Monday', fullPrice: 0, halfPrice: 0 },
|
||
{ dayOfWeek: 'Tuesday', fullPrice: 0, halfPrice: 0 },
|
||
{ dayOfWeek: 'Wednesday', fullPrice: 0, halfPrice: 0 },
|
||
{ dayOfWeek: 'Thursday', fullPrice: 0, halfPrice: 0 },
|
||
{ dayOfWeek: 'Friday', fullPrice: 0, halfPrice: 0 },
|
||
{ dayOfWeek: 'Saturday', fullPrice: 0, halfPrice: 0 },
|
||
{ dayOfWeek: 'Sunday', fullPrice: 0, halfPrice: 0 }
|
||
], // 按天定义的价格规则
|
||
priceRules: existingPriceRules // 保留现有的priceRules数据
|
||
}
|
||
}
|
||
}
|
||
});
|
||
})(window.vc, window.vc.component); |