/**
|
业委会公约管理
|
**/
|
(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);
|