(function (vc) {
|
vc.extends({
|
data: {
|
importMeterWaterFeeInfo: {
|
communityId: vc.getCurrentCommunity().communityId,
|
excelTemplate: '',
|
configId: '',
|
feeConfigs: [],
|
secondaryFeeTypeCds: [],
|
secondaryFeeTypeCd: '',
|
feeTypeCd: '',
|
meterTypes: [],
|
meterType: ''
|
}
|
},
|
_initMethod: function () {
|
// 获取费用类型字典
|
vc.getDict('pay_fee_config', "fee_type_cd", function (_data) {
|
vc.component.importMeterWaterFeeInfo.feeTypeCds = _data;
|
});
|
|
// 初始化社区ID
|
vc.component._refreshCommunityId();
|
},
|
_initEvent: function () {
|
vc.on('importMeterWaterFee', 'openImportMeterWaterFeeModal',
|
function (_room) {
|
// 打开模态框时刷新社区ID
|
vc.component._refreshCommunityId();
|
vc.component._listImportMeterTypes();
|
$('#importMeterWaterFeeModel').modal('show');
|
}
|
);
|
},
|
methods: {
|
importMeterWaterFeeValidate() {
|
return vc.validate.validate({
|
importMeterWaterFeeInfo: vc.component.importMeterWaterFeeInfo
|
}, {
|
'importMeterWaterFeeInfo.communityId': [
|
{
|
limit: "required",
|
param: "",
|
errInfo: "数据异常还没有入驻小区"
|
}
|
],
|
'importMeterWaterFeeInfo.excelTemplate': [
|
{
|
limit: "required",
|
param: "",
|
errInfo: "文件不能为空"
|
}
|
]
|
});
|
},
|
_importMeterWaterData: function () {
|
if (!vc.component.importMeterWaterFeeValidate()) {
|
vc.toast(vc.validate.errInfo);
|
return;
|
}
|
// 导入数据
|
if (!vc.component.checkFileType(vc.component.importMeterWaterFeeInfo.excelTemplate.name.split('.')[1])) {
|
vc.toast('不是有效的Excel格式');
|
return;
|
}
|
// 移除文件大小限制检查
|
// if (!vc.component.checkFileSize(vc.component.importMeterWaterFeeInfo.excelTemplate.size)) {
|
// vc.toast('Excel文件大小不能超过20M');
|
// return;
|
// }
|
let param = new FormData();
|
param.append("uploadFile", vc.component.importMeterWaterFeeInfo.excelTemplate);
|
param.append('communityId', vc.component.importMeterWaterFeeInfo.communityId);
|
param.append('feeTypeCd', vc.component.importMeterWaterFeeInfo.feeTypeCd);
|
param.append('configId', vc.component.importMeterWaterFeeInfo.configId);
|
param.append('meterType', vc.component.importMeterWaterFeeInfo.meterType);
|
param.append('userId', '-1'); // 添加userId参数
|
param.append('USER-ID', '-1'); // 添加USER-ID参数(大写形式)
|
// 根据费用类型选择对应的适配器
|
if (vc.component.importMeterWaterFeeInfo.feeTypeCd === '630000017') {
|
// 水费使用 importMeterWaterFeeV2
|
param.append('importAdapt', "importMeterWaterFeeV2");
|
} else if (vc.component.importMeterWaterFeeInfo.feeTypeCd === '630000007') {
|
// 电费使用 importElectricityFeeV2
|
param.append('importAdapt', "importElectricityFeeV2");
|
} else {
|
// 其他费用使用原有适配器
|
param.append('importAdapt', "importMeterWaterFee");
|
}
|
|
// 添加详细错误信息参数,让后端返回完整的提示词
|
param.append('showDetailError', 'true');
|
|
// 打印调试信息
|
console.log('导入请求参数详情:', {
|
communityId: vc.component.importMeterWaterFeeInfo.communityId,
|
feeTypeCd: vc.component.importMeterWaterFeeInfo.feeTypeCd,
|
importAdapt: vc.component.importMeterWaterFeeInfo.feeTypeCd === '630000017' ? 'importMeterWaterFeeV2' :
|
vc.component.importMeterWaterFeeInfo.feeTypeCd === '630000007' ? 'importElectricityFeeV2' : 'importMeterWaterFee',
|
showDetailError: 'true'
|
});
|
|
vc.http.upload(
|
'assetImport',
|
'importData',
|
param, {
|
// 移除emulateJSON,避免与Content-Type冲突
|
headers: {
|
"Content-Type": "multipart/form-data"
|
}
|
},
|
function (json, res) {
|
//vm.menus = vm.refreshMenuActive(JSON.parse(json),0);
|
let _json = JSON.parse(json);
|
if (_json.code == 0) {
|
//关闭model
|
vc.toast("处理成功");
|
$('#importMeterWaterFeeModel').modal('hide');
|
vc.jumpToPage('/#/pages/property/assetImportLogDetail?logId=' + _json.data.logId + '&logType=importMeterWaterFee');
|
return;
|
}
|
vc.toast(_json.msg, 10000);
|
},
|
function (errInfo, error) {
|
console.log('请求失败处理');
|
vc.toast(errInfo, 10000);
|
});
|
},
|
_exportMeterWaterFeeTemplate: function () {
|
let _feeTypeCd = vc.component.importMeterWaterFeeInfo.feeTypeCd;
|
|
if (!vc.notNull(_feeTypeCd)) {
|
vc.toast('请选择费用类型');
|
return;
|
}
|
|
// 根据费用类型选择对应的模板
|
let templateUrl = '';
|
if (_feeTypeCd === '630000017') {
|
// 水费模板(对应 sheet:水费流水模板)
|
templateUrl = '/import/Z4水费流水模版.xlsx';
|
} else if (_feeTypeCd === '630000007') {
|
// 电费模板(对应 sheet:电费流水模版)
|
templateUrl = '/import/Z4电费流水模版.xlsx'; // 使用正确的文件名,与实际文件名匹配
|
} else {
|
// 其他费用使用默认模板
|
templateUrl = '/import/抄表导入模板.xlsx';
|
}
|
|
// 直接下载模板文件
|
window.open(templateUrl, '_blank');
|
},
|
_listImportMeterTypes: function (_page, _rows) {
|
var param = {
|
params: {
|
page: 1,
|
row: 50,
|
communityId: vc.getCurrentCommunity().communityId
|
}
|
};
|
//发送get请求
|
vc.http.apiGet('meterType.listMeterType',
|
param,
|
function (json, res) {
|
var _meterTypeManageInfo = JSON.parse(json);
|
vc.component.importMeterWaterFeeInfo.meterTypes = _meterTypeManageInfo.data;
|
},
|
function (errInfo, error) {
|
console.log('请求失败处理');
|
}
|
);
|
},
|
clearAddFeeConfigInfo: function () {
|
vc.component.importMeterWaterFeeInfo = {
|
communityId: vc.getCurrentCommunity().communityId,
|
excelTemplate: '',
|
secondaryFeeTypeCd: '',
|
configId: '',
|
feeConfigs: [],
|
feeTypeCd: '',
|
meterTypes: [],
|
meterType: ''
|
};
|
},
|
getExcelTemplate: function (e) {
|
// 清除旧的文件对象,确保获取最新的文件
|
vc.component.importMeterWaterFeeInfo.excelTemplate = null;
|
|
// 获取用户选择的文件
|
let file = e.target.files[0];
|
if (!file) {
|
vc.toast('请选择文件');
|
return;
|
}
|
|
// 显示文件信息,方便调试
|
console.log('选择的文件:', file.name, '大小:', file.size, '最后修改时间:', file.lastModified);
|
|
// 保存文件对象到组件数据中
|
vc.component.importMeterWaterFeeInfo.excelTemplate = file;
|
|
// 重置input[type=file]的value,确保用户修改文件后再次选择同一文件时能触发change事件
|
// 注意:这个重置必须在获取文件对象之后执行
|
setTimeout(function() {
|
e.target.value = '';
|
}, 100);
|
},
|
checkFileType: function (fileType) {
|
const acceptTypes = ['xlsx'];
|
for (var i = 0; i < acceptTypes.length; i++) {
|
if (fileType === acceptTypes[i]) {
|
return true;
|
}
|
}
|
return false;
|
},
|
checkFileSize: function (fileSize) {
|
//2M
|
const MAX_SIZE = 20 * 1024 * 1024;
|
if (fileSize > MAX_SIZE) {
|
return false;
|
}
|
return true;
|
},
|
_changeImportMeterWaterFeeTypeCd: function (_feeTypeCd){
|
console.log('开始处理费用类型变更,feeTypeCd:', _feeTypeCd);
|
|
// 立即清空当前选择,避免用户看到旧数据
|
vc.component.importMeterWaterFeeInfo.secondaryFeeTypeCd = '';
|
vc.component.importMeterWaterFeeInfo.configId = '';
|
|
// 清空费用子类型数组,避免显示旧数据
|
// 注意:vc框架中可能不支持$set,直接赋值
|
vc.component.importMeterWaterFeeInfo.secondaryFeeTypeCds = [];
|
|
// 添加加载状态提示
|
vc.toast('正在获取费用子类型...', { duration: 500 });
|
|
let param = {
|
params: {
|
feeTypeCd: _feeTypeCd,
|
communityId: vc.getCurrentCommunity().communityId
|
}
|
};
|
|
// 立即调用收费项目查询,传入空的费用子类型
|
// 确保收费项目列表也能及时更新
|
vc.component._changeSecondaryFeeTypeCdx(_feeTypeCd, '');
|
|
vc.http.apiGet('/secondaryFeeTypeCdGl.list.show', param,
|
function (json, res) {
|
console.log('费用子类型API返回原始数据:', json);
|
|
try {
|
let result = JSON.parse(json);
|
|
// 处理数据,支持多种返回格式
|
let dataArray = [];
|
if (result && result.code == 0 && Array.isArray(result.data)) {
|
// 标准组件API返回格式
|
dataArray = result.data;
|
} else if (Array.isArray(result)) {
|
// 直接数组格式
|
dataArray = result;
|
} else if (result && typeof result === 'object') {
|
// 单对象格式
|
dataArray = [result];
|
}
|
|
console.log('费用子类型原始数据数组长度:', dataArray.length);
|
|
// 去重处理,确保费用子类型不重复
|
let secondaryFeeTypeCds = [];
|
let seenSecondaryFeeTypeCds = new Set();
|
|
for (let i = 0; i < dataArray.length; i++) {
|
let item = dataArray[i];
|
console.log('处理费用子类型项:', i, item);
|
|
// 严格验证数据项
|
if (item && typeof item === 'object' && item.secondaryFeeTypeCd) {
|
// 确保secondaryFeeTypeName存在
|
item.secondaryFeeTypeName = item.secondaryFeeTypeName || item.secondaryFeeTypeCd;
|
|
if (!seenSecondaryFeeTypeCds.has(item.secondaryFeeTypeCd)) {
|
seenSecondaryFeeTypeCds.add(item.secondaryFeeTypeCd);
|
secondaryFeeTypeCds.push(item);
|
console.log('添加费用子类型:', item.secondaryFeeTypeCd, item.secondaryFeeTypeName);
|
} else {
|
console.log('跳过重复费用子类型:', item.secondaryFeeTypeCd);
|
}
|
} else {
|
console.log('跳过无效费用子类型项:', item);
|
}
|
}
|
|
console.log('费用子类型数据去重后,共', secondaryFeeTypeCds.length, '条数据');
|
|
// 确保组件状态更新可靠
|
if (secondaryFeeTypeCds.length > 0) {
|
// 使用去重后的数据,确保数据稳定
|
vc.component.importMeterWaterFeeInfo.secondaryFeeTypeCds = secondaryFeeTypeCds;
|
|
// 自动选择第一个费用子类型
|
vc.component.importMeterWaterFeeInfo.secondaryFeeTypeCd = secondaryFeeTypeCds[0].secondaryFeeTypeCd;
|
|
console.log('费用子类型数据处理完成,当前选择:', vc.component.importMeterWaterFeeInfo.secondaryFeeTypeCd);
|
|
// 重新调用收费项目查询,传入新选择的费用子类型
|
// 确保收费项目列表与当前选择的费用子类型匹配
|
vc.component._changeSecondaryFeeTypeCdx(_feeTypeCd, vc.component.importMeterWaterFeeInfo.secondaryFeeTypeCd);
|
} else {
|
// 没有可用的费用子类型数据,显示友好提示
|
let noDataOption = {
|
secondaryFeeTypeCd: "",
|
secondaryFeeTypeName: "无关联子类型,请直接选择收费项目"
|
};
|
vc.component.importMeterWaterFeeInfo.secondaryFeeTypeCds = [noDataOption];
|
vc.component.importMeterWaterFeeInfo.secondaryFeeTypeCd = '';
|
|
console.log('没有可用的费用子类型数据');
|
}
|
} catch (e) {
|
// 解析失败,显示友好错误信息
|
console.error('解析费用子类型失败:', e, json);
|
vc.toast('获取费用子类型失败: 数据格式错误');
|
|
// 恢复到初始状态
|
vc.component.importMeterWaterFeeInfo.secondaryFeeTypeCds = [{
|
secondaryFeeTypeCd: "",
|
secondaryFeeTypeName: "获取费用子类型失败,请直接选择收费项目"
|
}];
|
vc.component.importMeterWaterFeeInfo.secondaryFeeTypeCd = '';
|
}
|
},
|
function (errInfo, error) {
|
console.error('获取费用子类型失败:', errInfo, error);
|
|
// 显示友好错误信息
|
vc.toast('获取费用子类型失败: 网络异常');
|
|
// 恢复到初始状态
|
vc.component.importMeterWaterFeeInfo.secondaryFeeTypeCds = [{
|
secondaryFeeTypeCd: "",
|
secondaryFeeTypeName: "获取费用子类型失败,请直接选择收费项目"
|
}];
|
vc.component.importMeterWaterFeeInfo.secondaryFeeTypeCd = '';
|
}
|
);
|
},
|
_changeSecondaryFeeTypeCdx: function(_feeTypeCd,_secondaryFeeTypeCd) {
|
vc.component.importMeterWaterFeeInfo.configId = '';
|
// 使用当前选择的费用子类型,而不是传入的参数
|
var currentSecondaryFeeTypeCd = vc.component.importMeterWaterFeeInfo.secondaryFeeTypeCd;
|
var param = {
|
params: {
|
page: 1,
|
row: 20,
|
communityId: vc.getCurrentCommunity().communityId,
|
feeTypeCd: _feeTypeCd,
|
secondaryFeeTypeCd: currentSecondaryFeeTypeCd,
|
isDefault: 'F',
|
valid: '1'
|
}
|
};
|
//发送get请求
|
vc.http.apiGet('/feeConfig.listFeeConfigs', param,
|
function (json, res) {
|
var _feeConfigManageInfo = JSON.parse(json);
|
vc.component.importMeterWaterFeeInfo.feeConfigs = _feeConfigManageInfo.feeConfigs;
|
},
|
function (errInfo, error) {
|
console.log('请求失败处理');
|
}
|
);
|
},
|
/**
|
* 刷新社区ID,确保使用最新的社区ID
|
*/
|
_refreshCommunityId: function () {
|
let currentCommunity = vc.getCurrentCommunity();
|
console.log('当前社区信息:', currentCommunity);
|
if (currentCommunity && currentCommunity.communityId) {
|
vc.component.importMeterWaterFeeInfo.communityId = currentCommunity.communityId;
|
console.log('刷新社区ID成功:', vc.component.importMeterWaterFeeInfo.communityId);
|
} else {
|
console.error('获取社区ID失败,currentCommunity:', currentCommunity);
|
vc.component.importMeterWaterFeeInfo.communityId = '';
|
}
|
},
|
}
|
});
|
})(window.vc);
|