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

313 lines
13 KiB
JavaScript

(function (vc) {
var default_row = 500;
vc.extends({
propTypes: {
emitSelectRooms: vc.propTypes.string,
},
data: {
selectRoomsInfo: {
rooms: [],
roomIds: [],
records: 0,
total: 0,
conditions: {
roomName: '',
communityId: vc.getCurrentCommunity().communityId,
unitId: '',
floorId: '',
floorNum: '',
unitNum: '',
roomNum: '',
}
}
},
watch: {
'selectRoomsInfo.roomIds': {
deep: true,
handler: function () {
vc.emit($props.emitSelectRooms, 'notifySelectRooms', $that.selectRoomsInfo.roomIds);
}
}
},
_initMethod: function () { },
_initEvent: function () {
vc.on('selectRooms', 'refreshTree', function (_param) {
if (_param) {
$that.selectRoomsInfo.floorId = _param.floorId;
}
$that._loadSelectRoomsFloorAndUnits();
});
vc.on('selectRooms', 'switchFloor', function (_param) {
$that.selectRoomsInfo.conditions.floorId = _param.floorId;
if (_param.floorId) {
$that.listSelectRoom(1, default_row);
return;
}
});
vc.on('selectRooms', 'switchUnit', function (_param) {
$that.selectRoomsInfo.conditions.unitId = _param.unitId;
if (_param.unitId) {
$that.listSelectRoom(1, default_row);
return;
}
});
vc.on('selectRooms', 'deleteSelectFloor', function (_param) {
let _unFloorId = _param.unFloorId;
let _roomIds = $that.selectRoomsInfo.roomIds;
let _tmpRoomIds = [];
_roomIds.forEach(item => {
if (item.floorId != _unFloorId) {
_tmpRoomIds.push(item);
}
});
$that.selectRoomsInfo.roomIds = _tmpRoomIds;
$that.computeSelectedRoomCount();
});
vc.on('selectRooms', 'deleteSelectUnit', function (_param) {
let _unUnitId = _param.unUnitId;
let _roomIds = $that.selectRoomsInfo.roomIds;
let _tmpRoomIds = [];
_roomIds.forEach(item => {
if (item.unitId != _unUnitId) {
_tmpRoomIds.push(item);
}
});
$that.selectRoomsInfo.roomIds = _tmpRoomIds;
$that.computeSelectedRoomCount();
});
},
methods: {
_loadSelectRoomsFloorAndUnits: function () {
let param = {
params: {
communityId: vc.getCurrentCommunity().communityId
}
};
//发送get请求
vc.http.apiGet('/floor.queryFloorAndUnits',
param,
function (json) {
let _unitInfo = JSON.parse(json);
$that.selectRoomsInfo.units = _unitInfo;
$that._initSelectRoomsJsTreeFloorUnit();
},
function () {
console.log('请求失败处理');
});
},
_initSelectRoomsJsTreeFloorUnit: function () {
let _data = $that._doSelectRoomsJsTreeData();
let _unitId = '';
$that.selectRoomsInfo.units.forEach(item => {
if ($that.selectRoomsInfo.floorId && item.floorId == $that.selectRoomsInfo.floorId) {
_unitId = item.unitId;
}
});
$.jstree.destroy()
$("#jstree_selectRooms_floorUnit").jstree({
"checkbox": {
"keep_selected_style": false
},
'state': { //一些初始化状态
"opened": false,
},
"plugins": ["checkbox"],
'core': {
'data': _data,
'check_callback': true,
},
});
$("#jstree_selectRooms_floorUnit").on("ready.jstree", function (e, data) {
//data.instance.open_all();//打开所有节点
});
$('#jstree_selectRooms_floorUnit').on("changed.jstree", function (e, data) {
if (data.action == 'model' || data.action == 'ready') {
//默认合并
$("#jstree_selectRooms_floorUnit").jstree("close_all");
return;
} else if (data.action == 'deselect_node') {
let _nodeId = data.node.id;
if (_nodeId.startsWith('f_')) {
vc.emit('selectRooms', 'switchFloor', {
floorId: '',
unFloorId: data.node.original.floorId
});
vc.emit('selectRooms', 'deleteSelectFloor', {
unFloorId: data.node.original.floorId
})
}
if (_nodeId.startsWith('u_')) {
vc.emit('selectRooms', 'deleteSelectUnit', {
unUnitId: data.node.original.unitId
})
}
vc.emit('selectRooms', 'switchUnit', {
unitId: '',
unUnitId: data.node.original.unitId
});
return;
}
let _selected = data.selected[0];
if (!_selected) {
return;
}
if (_selected.startsWith('f_')) {
vc.emit('selectRooms', 'switchFloor', {
floorId: data.node.original.floorId
})
return;
}
//console.log(_selected, data.node.original.unitId)
vc.emit('selectRooms', 'switchUnit', {
unitId: data.node.original.unitId
})
});
},
_doSelectRoomsJsTreeData: function () {
let _mFloorTree = [];
let _units = $that.selectRoomsInfo.units;
//构建 第一层菜单组
_units.forEach(pItem => {
let _includeFloor = false;
for (let _mgIndex = 0; _mgIndex < _mFloorTree.length; _mgIndex++) {
if (pItem.floorId == _mFloorTree[_mgIndex].floorId) {
_includeFloor = true;
}
}
if (!_includeFloor) {
let _floorItem = {
id: 'f_' + pItem.floorId,
floorId: pItem.floorId,
floorNum: pItem.floorNum,
icon: "/img/floor.png",
text: pItem.floorNum,
state: {
opened: false,
selected: false
},
children: []
};
$that._doSelectRoomsJsTreeMenuData(_floorItem);
_mFloorTree.push(_floorItem);
}
});
return _mFloorTree;
},
_doSelectRoomsJsTreeMenuData: function (_floorItem) {
let _units = $that.selectRoomsInfo.units;
//构建菜单
let _children = _floorItem.children;
for (let _pIndex = 0; _pIndex < _units.length; _pIndex++) {
if (_floorItem.floorId == _units[_pIndex].floorId && _units[_pIndex].unitId) {
let _includeMenu = false;
for (let _mgIndex = 0; _mgIndex < _children.length; _mgIndex++) {
if (_units[_pIndex].unitId == _children[_mgIndex].unitId) {
_includeMenu = true;
}
}
if (_units[_pIndex].unitNum == "0") {
continue;
}
if (!_includeMenu) {
let _menuItem = {
id: 'u_' + _units[_pIndex].unitId,
unitId: _units[_pIndex].unitId,
text: _units[_pIndex].unitNum + "单元",
icon: "/img/unit.png",
state: {
opened: false,
selected: false
},
};
_children.push(_menuItem);
}
}
}
},
listSelectRoom: function (_page, _row) {
vc.component.selectRoomsInfo.conditions.page = _page;
vc.component.selectRoomsInfo.conditions.row = _row;
let param = {
params: JSON.parse(JSON.stringify(vc.component.selectRoomsInfo.conditions))
};
let _roomName = $that.selectRoomsInfo.conditions.roomName;
let _roomNames = _roomName.split('-')
if (_roomNames.length == 3) {
param.params.floorNum = _allNums[0].trim();
param.params.unitNum = _allNums[1].trim();
param.params.roomNum = _allNums[2].trim();
}
//发送get请求
vc.http.apiGet('/room.queryRooms',
param,
function (json, res) {
let listRoomData = JSON.parse(json);
$that.selectRoomsInfo.total = listRoomData.total;
$that.selectRoomsInfo.records = listRoomData.records;
$that.selectRoomsInfo.rooms = listRoomData.rooms;
listRoomData.rooms.forEach(item => {
$that.selectRoomsInfo.roomIds.push(item);
});
$that.computeSelectedRoomCount();
},
function (errInfo, error) {
console.log('请求失败处理');
}
);
},
computeSelectedRoomCount: function (e) {
let _selectNodeIds = $("#jstree_selectRooms_floorUnit").jstree('get_selected');
if (!_selectNodeIds) {
return;
}
setTimeout(function () {
let _roomIds = $that.selectRoomsInfo.roomIds;
_selectNodeIds.forEach(item => {
if (item.startsWith("f_")) {
$that.computeFloorSelectRoomCount(item, _roomIds);
}
if (item.startsWith("u_")) {
$that.computeUnitSelectRoomCount(item, _roomIds);
}
})
}, 1000);
},
computeFloorSelectRoomCount: function (_floorId, _roomIds) {
let _count = 0;
_roomIds.forEach(_room => {
if (("f_" + _room.floorId) == _floorId) {
_count += 1;
}
});
let _node = $("#jstree_selectRooms_floorUnit").jstree('get_node', _floorId);
let _text = _node.text;
if (_text.indexOf('(选择') > -1) {
_text = _text.substr(0, _text.indexOf('(选择'));
}
_text = _text + "(选择" + _count + "个房屋)";
$("#jstree_selectRooms_floorUnit").jstree('rename_node', _node, _text);
},
computeUnitSelectRoomCount: function (_unitId, _roomIds) {
let _count = 0;
_roomIds.forEach(_room => {
if (("u_" + _room.unitId) == _unitId) {
_count += 1;
}
});
let _node = $("#jstree_selectRooms_floorUnit").jstree('get_node', _unitId);
let _text = _node.text;
if (_text.indexOf('(选择') > -1) {
_text = _text.substr(0, _text.indexOf('(选择'));
}
_text = _text + "(选择" + _count + "个房屋)";
$("#jstree_selectRooms_floorUnit").jstree('rename_node', _node, _text);
}
}
});
})(window.vc);