Files
PropertyDeployment/resources/Web/MicroCommunityWeb/html/components/property/addCommunitySpace/addCommunitySpace.js
2025-12-09 20:22:03 +08:00

327 lines
13 KiB
JavaScript

(function (vc) {
vc.extends({
propTypes: {
callBackListener: vc.propTypes.string, //父组件名称
callBackFunction: vc.propTypes.string //父组件监听方法
},
data: {
addCommunitySpaceInfo: {
spaceId: '',
name: '',
startTime: '00:00',
endTime: '23:59',
adminName: '',
tel: '',
state: '',
bookingType: '',
venueId: '',
// 是否按天定义收费
pricingByDay: 'N',
// 统一收费标准(不按天定义收费时使用)
uniformFullPrice: 0,
uniformHalfPrice: 0,
// 按天定义收费标准(按天定义收费时使用)
dayPricing: [
{ day: 'MONDAY', dayName: '周一', fullPrice: 0, halfPrice: 0 },
{ day: 'TUESDAY', dayName: '周二', fullPrice: 0, halfPrice: 0 },
{ day: 'WEDNESDAY', dayName: '周三', fullPrice: 0, halfPrice: 0 },
{ day: 'THURSDAY', dayName: '周四', fullPrice: 0, halfPrice: 0 },
{ day: 'FRIDAY', dayName: '周五', fullPrice: 0, halfPrice: 0 },
{ day: 'SATURDAY', dayName: '周六', fullPrice: 0, halfPrice: 0 },
{ day: 'SUNDAY', dayName: '周日', fullPrice: 0, halfPrice: 0 }
],
// 价格规则相关字段
priceType: 'HOUR',
basePrice: 0,
specialPrices: [],
timePrices: []
}
},
_initMethod: function () {
//addSpaceStartTime
// vc.initHourMinute('addSpaceStartTime', function(_value) {
// $that.addCommunitySpaceInfo.startTime = _value;
// });
// vc.initHourMinute('addSpaceEndTime', function(_value) {
// $that.addCommunitySpaceInfo.endTime = _value;
// });
},
_initEvent: function () {
vc.on('addCommunitySpace', 'openAddCommunitySpaceModal', function (_param) {
$that.addCommunitySpaceInfo.venueId = _param.venueId;
$('#addCommunitySpaceModel').modal('show');
});
},
methods: {
addCommunitySpaceValidate() {
return vc.validate.validate({
addCommunitySpaceInfo: vc.component.addCommunitySpaceInfo
}, {
'addCommunitySpaceInfo.name': [
{
limit: "required",
param: "",
errInfo: "名称不能为空"
},
{
limit: "maxLength",
param: "50",
errInfo: "名称不能超过50"
}
],
'addCommunitySpaceInfo.startTime': [
{
limit: "required",
param: "",
errInfo: "预约开始时间不能为空"
},
{
limit: "maxLength",
param: "64",
errInfo: "预约开始时间不能超过64"
}
],
'addCommunitySpaceInfo.endTime': [
{
limit: "required",
param: "",
errInfo: "预约结束时间不能为空"
},
{
limit: "maxLength",
param: "64",
errInfo: "预约结束时间不能超过64"
}
],
'addCommunitySpaceInfo.adminName': [
{
limit: "required",
param: "",
errInfo: "管理员不能为空"
},
{
limit: "maxLength",
param: "64",
errInfo: "管理员不能超过64"
}
],
'addCommunitySpaceInfo.tel': [
{
limit: "required",
param: "",
errInfo: "管理员电话不能为空"
},
{
limit: "maxLength",
param: "11",
errInfo: "管理员电话不能超过11"
}
],
'addCommunitySpaceInfo.bookingType': [
{
limit: "required",
param: "",
errInfo: "预约类型不能为空"
},
{
limit: "maxLength",
param: "12",
errInfo: "预约类型不能超过12"
}
],
'addCommunitySpaceInfo.state': [
{
limit: "required",
param: "",
errInfo: "状态不能为空"
},
{
limit: "maxLength",
param: "12",
errInfo: "状态不能超过12"
}
]
});
},
saveCommunitySpaceInfo: function () {
if (!vc.component.addCommunitySpaceValidate()) {
vc.toast(vc.validate.errInfo);
return;
}
// 根据预约类型设置默认值
if ($that.addCommunitySpaceInfo.bookingType === 'Full') {
// 全场预约
console.log('全场预约');
} else if ($that.addCommunitySpaceInfo.bookingType === 'Half') {
// 半场预约
console.log('半场预约');
}
vc.component.addCommunitySpaceInfo.communityId = vc.getCurrentCommunity().communityId;
// 设置价格规则
if ($that.addCommunitySpaceInfo.pricingByDay === 'Y') {
//按天收费
$that.addCommunitySpaceInfo.priceRule = {
type: '1001',
communityId: vc.getCurrentCommunity().communityId,
feeFlag: '2002'
};
} else {
//统一收费
$that.addCommunitySpaceInfo.priceRule = {
type: '1002',
communityId: vc.getCurrentCommunity().communityId,
feeFlag: '2002'
};
}
//不提交数据将数据 回调给侦听处理
if (vc.notNull($props.callBackListener)) {
vc.emit($props.callBackListener, $props.callBackFunction, vc.component.addCommunitySpaceInfo);
$('#addCommunitySpaceModel').modal('hide');
return;
}
vc.http.apiPost(
'/communitySpace.saveCommunitySpace',
JSON.stringify(vc.component.addCommunitySpaceInfo), {
emulateJSON: true
},
function (json, res) {
//vm.menus = vm.refreshMenuActive(JSON.parse(json),0);
let _json = JSON.parse(json);
if (_json.code == 0) {
// 获取保存后的spaceId
let spaceId = _json.data.spaceId;
$that.addCommunitySpaceInfo.spaceId = spaceId;
// 保存价格规则
$that._savePriceRule();
//关闭model
$('#addCommunitySpaceModel').modal('hide');
vc.component.clearAddCommunitySpaceInfo();
vc.emit('communitySpaceManage', 'listCommunitySpace', {});
vc.toast("添加成功");
return;
} else {
vc.toast(_json.msg);
}
},
function (errInfo, error) {
console.log('请求失败处理');
vc.message(errInfo);
});
},
clearAddCommunitySpaceInfo: function () {
vc.component.addCommunitySpaceInfo = {
name: '',
startTime: '00:00',
endTime: '23:59',
adminName: '',
tel: '',
state: '',
bookingType: '',
venueId: '',
// 是否按天定义收费
pricingByDay: 'N',
// 统一收费标准(不按天定义收费时使用)
uniformFullPrice: 0,
uniformHalfPrice: 0,
// 按天定义收费标准(按天定义收费时使用)
dayPricing: [
{ day: 'MONDAY', dayName: '周一', fullPrice: 0, halfPrice: 0 },
{ day: 'TUESDAY', dayName: '周二', fullPrice: 0, halfPrice: 0 },
{ day: 'WEDNESDAY', dayName: '周三', fullPrice: 0, halfPrice: 0 },
{ day: 'THURSDAY', dayName: '周四', fullPrice: 0, halfPrice: 0 },
{ day: 'FRIDAY', dayName: '周五', fullPrice: 0, halfPrice: 0 },
{ day: 'SATURDAY', dayName: '周六', fullPrice: 0, halfPrice: 0 },
{ day: 'SUNDAY', dayName: '周日', fullPrice: 0, halfPrice: 0 }
],
};
},
/**
* 预约类型变更事件处理
*/
_changeBookingType: function () {
console.log('预约类型变更为:', $that.addCommunitySpaceInfo.bookingType);
},
_changePricingByDay: function () {
// 是否按天定义收费变化时的处理逻辑
console.log('是否按天定义收费变更为:', $that.addCommunitySpaceInfo.pricingByDay);
},
_savePriceRule: function () {
// 构建保存数据
let _saveData = {
spaceId: $that.addCommunitySpaceInfo.spaceId,
venueId: $that.addCommunitySpaceInfo.venueId,
rules: []
};
// 根据是否按天定义收费添加不同的价格规则
if ($that.addCommunitySpaceInfo.pricingByDay === 'Y') {
// 按天定义收费,添加每日价格规则
$that.addCommunitySpaceInfo.dayPricing.forEach(item => {
// 添加全场每日价格规则
_saveData.rules.push({
ruleType: 'DAY_PRICING_FULL',
day: item.day,
price: item.fullPrice
});
// 添加半场每日价格规则
_saveData.rules.push({
ruleType: 'DAY_PRICING_HALF',
day: item.day,
price: item.halfPrice
});
});
} else {
// 不按天定义收费,添加统一价格规则
_saveData.rules.push({
ruleType: 'UNIFORM_PRICING_FULL',
price: $that.addCommunitySpaceInfo.uniformFullPrice
});
_saveData.rules.push({
ruleType: 'UNIFORM_PRICING_HALF',
price: $that.addCommunitySpaceInfo.uniformHalfPrice
});
}
// 保存价格规则
vc.http.apiPost(
'/communitySpacePriceRule.saveCommunitySpacePriceRules',
JSON.stringify(_saveData), {
emulateJSON: true
},
function (json, res) {
let _json = JSON.parse(json);
if (_json.code == 0) {
vc.toast("价格规则保存成功");
return;
} else {
vc.toast(_json.msg);
}
},
function (errInfo, error) {
console.log('请求失败处理');
vc.message(errInfo);
});
}
}
});
})(window.vc);