/** 业委会公约管理 **/ (function (vc) { var DEFAULT_PAGE = 1; var DEFAULT_ROWS = 15; var $that = {}; vc.extends({ data: { moreInfo: { dataList: [], paginationInfo: { currentPage: 1, rows: DEFAULT_ROWS, total: 1, dataCount: 0, pageList: [] }, jumpPage: 1, currentTab: 'publicIncome', conditions: { startDate: '', endDate: '' }, editForm: { id: '', amount: '', meetingResolution: '1', consultationForm: '1' } } }, _initMethod: function () { $that = vc.component; $that._initDate(); // 进入页面时立即调用接口 $that._loadPublicIncomeData(DEFAULT_PAGE, DEFAULT_ROWS); // 根据当前标签页加载数据 if ($that.moreInfo.currentTab !== 'publicIncome') { $that._listData(DEFAULT_PAGE, DEFAULT_ROWS); } }, _initEvent: function () { }, methods: { _initDate: function () { // 初始化日期选择器 $(".startDate").datetimepicker({ minView: "month", language: 'zh-CN', fontAwesome: 'fa', format: 'yyyy-mm-dd', initTime: true, initialDate: new Date(), autoClose: 1, todayBtn: true, clearBtn: true }); $(".endDate").datetimepicker({ minView: "month", language: 'zh-CN', fontAwesome: 'fa', format: 'yyyy-mm-dd', initTime: true, initialDate: new Date(), autoClose: 1, todayBtn: true, clearBtn: true }); // 设置默认日期为当前月份 var now = new Date(); var year = now.getFullYear(); var month = now.getMonth() + 1; var startDateStr = year + '-' + (month < 10 ? '0' + month : month) + '-01'; var endDate = new Date(year, month, 0); // 获取当月最后一天 var endDateStr = year + '-' + (month < 10 ? '0' + month : month) + '-' + endDate.getDate(); $that.moreInfo.conditions.startDate = startDateStr; $that.moreInfo.conditions.endDate = endDateStr; $(".startDate").val(startDateStr); $(".endDate").val(endDateStr); $('.startDate').datetimepicker() .on('changeDate', function (ev) { var value = $(".startDate").val(); $that.moreInfo.conditions.startDate = value; }); $('.endDate').datetimepicker() .on('changeDate', function (ev) { var value = $(".endDate").val(); var start = Date.parse(new Date($that.moreInfo.conditions.startDate)) var end = Date.parse(new Date(value)) if (start - end >= 0) { vc.toast("结束时间必须大于开始时间") $that.moreInfo.conditions.endDate = ''; $(".endDate").val(''); } else { $that.moreInfo.conditions.endDate = value; } }); // 防止多次点击时间插件失去焦点 var startDateElements = document.getElementsByClassName('form-control startDate'); if (startDateElements.length > 0) { startDateElements[0].addEventListener('click', function (e) { e.currentTarget.blur(); }); } var endDateElements = document.getElementsByClassName('form-control endDate'); if (endDateElements.length > 0) { endDateElements[0].addEventListener('click', function (e) { e.currentTarget.blur(); }); } }, changeTab: function (_tab) { $that.moreInfo.currentTab = _tab; // 根据标签页加载不同数据 if (_tab === 'publicIncome') { // 公共收益金标签,调用特殊接口 $that._loadPublicIncomeData(DEFAULT_PAGE, $that.moreInfo.paginationInfo.rows); } else { $that._listData(DEFAULT_PAGE, $that.moreInfo.paginationInfo.rows); } }, _loadPublicIncomeData: function (_page, _rows) { // 获取URL参数中的costDetailId var costDetailId = vc.getParam('costDetailId'); if (!costDetailId) { // 尝试从hash中获取 var hash = location.hash; if (hash && hash.indexOf('?') !== -1) { var hashParams = hash.substring(hash.indexOf('?') + 1); var params = hashParams.split('&'); for (var i = 0; i < params.length; i++) { var param = params[i].split('='); if (param[0] === 'costDetailId') { costDetailId = decodeURIComponent(param[1] || ''); break; } } } } if (!costDetailId) { vc.toast('缺少costDetailId参数'); return; } var param = { params: { mpId: costDetailId, page: _page, row: _rows } }; // 调用公共收益金接口 vc.http.apiGet('/announcementTimeRange/queryAnnouncementTimeRangeInfo', param, function (json, res) { try { var _json = JSON.parse(json); if (_json.code === "0000") { var total = _json.total || 0; var rows = _rows || DEFAULT_ROWS; // 计算总页数 var totalPages = Math.ceil(total / rows); if (totalPages === 0) { totalPages = 1; } $that.moreInfo.paginationInfo.dataCount = total; $that.moreInfo.paginationInfo.total = totalPages; // 映射数据字段 var dataList = []; if (_json.data && Array.isArray(_json.data)) { dataList = _json.data.map(function(item) { return { id: item.id, mpId: item.mpId, proposedStartDate: item.plannedAnnouncementStart || '-', proposedEndDate: item.plannedAnnouncementEnd || '-', publishedStartDate: item.publishedAnnouncementStart || '-', publishedEndDate: item.publishedAnnouncementEnd || '-', createTime: item.createTime || '', updateTime: item.updateTime || '', _originalData: item }; }); } $that.moreInfo.dataList = dataList; $that.moreInfo.paginationInfo.currentPage = _page; $that._freshPageList(); } else { vc.toast(_json.msg || '查询失败'); $that.moreInfo.dataList = []; $that.moreInfo.paginationInfo.dataCount = 0; $that.moreInfo.paginationInfo.total = 1; $that.moreInfo.paginationInfo.currentPage = _page; $that._freshPageList(); } } catch (e) { console.error('数据解析失败:', e); vc.toast('数据解析失败'); $that.moreInfo.dataList = []; $that.moreInfo.paginationInfo.dataCount = 0; $that.moreInfo.paginationInfo.total = 1; $that.moreInfo.paginationInfo.currentPage = _page; $that._freshPageList(); } }, function (errInfo, error) { console.error('请求失败:', errInfo, error); vc.toast(errInfo || '请求失败,请检查网络连接'); $that.moreInfo.dataList = []; $that.moreInfo.paginationInfo.dataCount = 0; $that.moreInfo.paginationInfo.total = 1; $that.moreInfo.paginationInfo.currentPage = _page; $that._freshPageList(); } ); }, _listData: function (_page, _rows) { $that.moreInfo.conditions.page = _page; $that.moreInfo.conditions.row = _rows; $that.moreInfo.conditions.tab = $that.moreInfo.currentTab; $that.moreInfo.conditions.communityId = vc.getCurrentCommunity().communityId; var param = { params: $that.moreInfo.conditions }; // 发送get请求 - 这里需要根据实际API调整 vc.http.apiGet('/costDetail/queryMore', param, function (json, res) { var _json = JSON.parse(json); $that.moreInfo.paginationInfo.dataCount = _json.total || 0; $that.moreInfo.paginationInfo.total = _json.records || 1; $that.moreInfo.dataList = _json.data || []; $that.moreInfo.paginationInfo.currentPage = _page; $that._freshPageList(); }, function (errInfo, error) { console.log('请求失败处理'); // 模拟数据用于演示 $that.moreInfo.dataList = [ { amount: '张三三', meetingResolution: '1', consultationForm: '0' } ]; $that.moreInfo.paginationInfo.dataCount = 100; $that.moreInfo.paginationInfo.total = 7; $that.moreInfo.paginationInfo.currentPage = _page; $that._freshPageList(); } ); }, _freshPageList: function () { var currentPage = $that.moreInfo.paginationInfo.currentPage; var total = $that.moreInfo.paginationInfo.total; var pageList = []; if (total <= 7) { // 总页数小于等于7,显示所有页码 for (var i = 1; i <= total; i++) { pageList.push({ page: i, pageView: i, currentPage: i == currentPage }); } } else { // 总页数大于7,显示部分页码 if (currentPage <= 4) { // 当前页在前4页 for (var i = 1; i <= 5; i++) { pageList.push({ page: i, pageView: i, currentPage: i == currentPage }); } pageList.push({ page: 0, pageView: '...', currentPage: false }); pageList.push({ page: total, pageView: total, currentPage: false }); } else if (currentPage >= total - 3) { // 当前页在后4页 pageList.push({ page: 1, pageView: 1, currentPage: false }); pageList.push({ page: 0, pageView: '...', currentPage: false }); for (var i = total - 4; i <= total; i++) { pageList.push({ page: i, pageView: i, currentPage: i == currentPage }); } } else { // 当前页在中间 pageList.push({ page: 1, pageView: 1, currentPage: false }); pageList.push({ page: 0, pageView: '...', currentPage: false }); for (var i = currentPage - 1; i <= currentPage + 1; i++) { pageList.push({ page: i, pageView: i, currentPage: i == currentPage }); } pageList.push({ page: 0, pageView: '...', currentPage: false }); pageList.push({ page: total, pageView: total, currentPage: false }); } } $that.moreInfo.paginationInfo.pageList = pageList; }, _changePageSize: function () { if ($that.moreInfo.currentTab === 'publicIncome') { $that._loadPublicIncomeData(DEFAULT_PAGE, $that.moreInfo.paginationInfo.rows); } else { $that._listData(DEFAULT_PAGE, $that.moreInfo.paginationInfo.rows); } }, _goToPage: function (_page) { if (!_page || _page < 1 || _page > $that.moreInfo.paginationInfo.total) { return; } if ($that.moreInfo.currentTab === 'publicIncome') { $that._loadPublicIncomeData(_page, $that.moreInfo.paginationInfo.rows); } else { $that._listData(_page, $that.moreInfo.paginationInfo.rows); } }, _jumpToPage: function () { var page = parseInt($that.moreInfo.jumpPage); if (isNaN(page) || page < 1) { page = 1; } if (page > $that.moreInfo.paginationInfo.total) { page = $that.moreInfo.paginationInfo.total; } if ($that.moreInfo.currentTab === 'publicIncome') { $that._loadPublicIncomeData(page, $that.moreInfo.paginationInfo.rows); } else { $that._listData(page, $that.moreInfo.paginationInfo.rows); } }, _add: function () { // 添加功能 vc.toast('添加功能'); }, _export: function () { // 导出功能 vc.toast('导出功能'); }, _viewDetailPublicIncome: function (_item) { // 查看详情 vc.toast('查看详情功能'); }, _showEditPublicModal: function () { const modal = document.getElementById('editPublicIncomeModal'); modal.classList.add('show'); modal.style.display = 'block'; modal.removeAttribute('inert'); modal.removeAttribute('aria-hidden'); modal.setAttribute('aria-modal', 'true'); modal.focus(); }, _hideEditPublicModal: function () { const modal = document.getElementById('editPublicIncomeModal'); modal.classList.remove('show'); modal.style.display = 'none'; modal.setAttribute('inert', ''); modal.setAttribute('aria-hidden', 'true'); modal.removeAttribute('aria-modal'); }, _editPublicIncome: function (_item) { // 编辑 - 填充表单数据 // $that.moreInfo.editForm.id = _item.id || ''; // $that.moreInfo.editForm.amount = _item.amount || ''; // $that.moreInfo.editForm.meetingResolution = _item.meetingResolution || '1'; // $that.moreInfo.editForm.consultationForm = _item.consultationForm || '1'; // 打开弹窗 $that._showEditPublicModal(); }, _saveEditPublicIncome: function () { // 保存编辑 var param = { params: { id: $that.moreInfo.editForm.id, amount: $that.moreInfo.editForm.amount, meetingResolution: $that.moreInfo.editForm.meetingResolution, consultationForm: $that.moreInfo.editForm.consultationForm, communityId: vc.getCurrentCommunity().communityId } }; vc.http.apiPost('/costDetail/updatePublicIncome', param, function (json, res) { vc.toast('保存成功'); $that._hideEditPublicModal(); $that._listData($that.moreInfo.paginationInfo.currentPage, $that.moreInfo.paginationInfo.rows); }, function (errInfo, error) { vc.message(errInfo); } ); }, _delete: function (_item) { vc.confirm('确定要删除这条记录吗?', function () { var param = { params: { id: _item.id } }; // 这里需要根据实际API调整 vc.http.apiPost('/costDetail/deleteMore', param, function (json, res) { vc.toast('删除成功'); $that._listData($that.moreInfo.paginationInfo.currentPage, $that.moreInfo.paginationInfo.rows); }, function (errInfo, error) { vc.message(errInfo); } ); }); } } }); })(window.vc);