(function (vc) { var DEFAULT_PAGE = 1; var DEFAULT_ROWS = 10; vc.extends({ data: { advertisementSummaryInfo: { contracts: [], total: 0, records: 0, moreCondition: false, conditions: { contractNameLike: '', contractCode: '', contractType: '', state: '' }, contractTypes: [], importExcelFile: '' } }, _initMethod: function () { vc.component._listContracts(DEFAULT_PAGE, DEFAULT_ROWS); vc.component._listContractTypes(); }, _initEvent: function () { vc.on('advertisementSummary', 'listContract', function (_param) { vc.component._listContracts(DEFAULT_PAGE, DEFAULT_ROWS); }); vc.on('pagination', 'page_event', function (_currentPage) { vc.component._listContracts(_currentPage, DEFAULT_ROWS); }); }, methods: { _listContracts: function (_page, _rows) { try { if (!vc.component || !vc.component.advertisementSummaryInfo) { return; } vc.component.advertisementSummaryInfo.conditions.page = _page; vc.component.advertisementSummaryInfo.conditions.row = _rows; var param = { params: vc.component.advertisementSummaryInfo.conditions }; param.params.contractNameLike = param.params.contractNameLike.trim(); param.params.contractCode = param.params.contractCode.trim(); //发送get请求 vc.http.apiGet('/contract/queryContract', param, function (json, res) { try { if (!vc.component || !vc.component.advertisementSummaryInfo) { return; } var _advertisementSummaryInfo = JSON.parse(json); var contractData = _advertisementSummaryInfo.data || []; // 强制Vue更新 - 解决响应式问题 vc.component.advertisementSummaryInfo.total = _advertisementSummaryInfo.total; vc.component.advertisementSummaryInfo.records = _advertisementSummaryInfo.records; vc.component.advertisementSummaryInfo.contracts = []; setTimeout(() => { // 深拷贝数据,确保响应式 var deepCopiedData = JSON.parse(JSON.stringify(contractData)); vc.component.advertisementSummaryInfo.contracts = deepCopiedData; // 手动触发Vue更新 if (vc.$forceUpdate) { vc.$forceUpdate(); } var totalPages = Math.ceil(vc.component.advertisementSummaryInfo.total / _rows) || 1; vc.emit('pagination', 'init', { total: totalPages, dataCount: vc.component.advertisementSummaryInfo.total, currentPage: _page }); }, 0); } catch (e) { console.error('处理合同数据失败:', e); } }, function (errInfo, error) { console.log('请求失败处理:', errInfo, error); } ); } catch (e) { console.error('执行合同查询失败:', e); } }, _listContractTypes: function () { console.log('开始获取合同类型'); let param = { params: { page: 1, row: 50 } }; console.log('请求参数:', param); //发送get请求 vc.http.apiGet('/contract/queryContractType', param, function (json, res) { console.log('获取合同类型成功,响应:', json); try { let _contractTypeManageInfo = JSON.parse(json); console.log('解析后的数据:', _contractTypeManageInfo); if (_contractTypeManageInfo.code == 0) { console.log('合同类型数据:', _contractTypeManageInfo.data); if (vc.component && vc.component.advertisementSummaryInfo) { vc.component.advertisementSummaryInfo.contractTypes = _contractTypeManageInfo.data || []; console.log('设置合同类型数据成功,数量:', vc.component.advertisementSummaryInfo.contractTypes.length); } else { console.error('组件或数据对象不存在'); } } else { console.error('API返回错误:', _contractTypeManageInfo.msg); } } catch (e) { console.error('处理合同类型数据失败:', e); } }, function (errInfo, error) { console.error('请求合同类型失败:', errInfo, error); } ); }, _openAddContractModal: function () { vc.jumpToPage('/#/pages/admin/addContract') }, _openEditContractModel: function (_contract) { // 跳转到合同详情页面 vc.jumpToPage('/#/pages/admin/contractDetailView?contractId=' + _contract.contractId); }, _openDeleteContractModel: function (_contract) { // 跳转到合同管理页面进行删除操作 vc.jumpToPage('/#/pages/admin/contractManage/contractManage'); }, // 查看合同详情 _viewContractDetail: function (_item) { // 存储当前记录到localStorage localStorage.setItem('advertisementContractCurrentItem', JSON.stringify(_item)); vc.jumpToPage('/#/pages/admin/contractDetailView?contractId=' + _item.contractId); }, // 查看更多(如果需要的话,可以跳转到更详细的页面) _viewMore: function (_item) { // 存储当前记录到localStorage localStorage.setItem('advertisementContractCurrentItem', JSON.stringify(_item)); // 这里可以跳转到更详细的页面,暂时先跳转到详情页 vc.jumpToPage('/#/pages/admin/contractDetailView?contractId=' + _item.contractId); }, // 编辑合同 _editContract: function (_item) { // 存储当前记录到localStorage localStorage.setItem('advertisementContractCurrentItem', JSON.stringify(_item)); vc.jumpToPage('/#/pages/admin/editContract?contractId=' + _item.contractId); }, // 删除合同 _deleteContract: function (_item) { if (!_item || !_item.contractId) { vc.toast('删除失败:缺少必要的数据'); return; } if (typeof vc.confirm === 'function') { vc.confirm('确定要删除这条广告合同吗?', function () { var param = { contractId: _item.contractId }; vc.http.apiPost('/contract/deleteContract', JSON.stringify(param), { headers: { 'Content-Type': 'application/json' } }, function (json, res) { try { var _json = JSON.parse(json); if (_json.code === 0 || _json.code === '0') { vc.toast(_json.msg || '删除成功'); // 刷新合同列表 vc.component._listContracts(vc.component.advertisementSummaryInfo.conditions.page || DEFAULT_PAGE, DEFAULT_ROWS); } else { vc.toast(_json.msg || '删除失败'); } } catch (e) { console.error('删除响应解析失败:', e); vc.toast('删除失败,请重试'); } }, function (errInfo, error) { console.error('删除请求失败:', errInfo, error); vc.toast(errInfo || '删除失败,请检查网络连接'); } ); }); } else { if (window.confirm('确定要删除这条广告合同吗?')) { var param = { contractId: _item.contractId }; vc.http.apiPost('/contract/deleteContract', JSON.stringify(param), { headers: { 'Content-Type': 'application/json' } }, function (json, res) { try { var _json = JSON.parse(json); if (_json.code === 0 || _json.code === '0') { vc.toast(_json.msg || '删除成功'); // 刷新合同列表 vc.component._listContracts(vc.component.advertisementSummaryInfo.conditions.page || DEFAULT_PAGE, DEFAULT_ROWS); } else { vc.toast(_json.msg || '删除失败'); } } catch (e) { console.error('删除响应解析失败:', e); vc.toast('删除失败,请重试'); } }, function (errInfo, error) { console.error('删除请求失败:', errInfo, error); vc.toast(errInfo || '删除失败,请检查网络连接'); } ); } } }, //查询 _queryContractMethod: function () { vc.component._listContracts(DEFAULT_PAGE, DEFAULT_ROWS); }, //重置 _resetContractMethod: function () { vc.component.advertisementSummaryInfo.conditions.contractNameLike = ""; vc.component.advertisementSummaryInfo.conditions.contractCode = ""; vc.component.advertisementSummaryInfo.conditions.contractType = ""; vc.component.advertisementSummaryInfo.conditions.state = ""; vc.component._listContracts(DEFAULT_PAGE, DEFAULT_ROWS); }, _moreCondition: function () { if (vc.component.advertisementSummaryInfo.moreCondition) { vc.component.advertisementSummaryInfo.moreCondition = false; } else { vc.component.advertisementSummaryInfo.moreCondition = true; } }, // 打开导入弹窗 _openImportContractModal: function () { $('#importContractModel').modal('show'); }, // 获取Excel模板文件 _getExcelTemplate: function (e) { vc.component.advertisementSummaryInfo.importExcelFile = e.target.files[0]; }, // 导出合同模板 _exportContractTemplate: function () { // 广告合同模板(对应 sheet:广告合同汇总表) let templateUrl = '/import/广告合同汇总表.xlsx'; // 直接下载模板文件 window.open(templateUrl, '_blank'); }, // 导入合同数据 _importContractData: function () { var fileInput = document.getElementById('importExcelFile'); var file = fileInput.files[0]; if (!file) { vc.toast("请选择文件"); return; } // 验证文件类型 var fileName = file.name; var fileExtension = fileName.substring(fileName.lastIndexOf('.') + 1).toLowerCase(); if (fileExtension !== 'xlsx' && fileExtension !== 'xls') { vc.toast("请选择Excel文件"); return; } // 移除文件大小限制检查 // // 验证文件大小 // if (file.size > 20 * 1024 * 1024) { // vc.toast("文件大小不能超过20MB"); // return; // } // 打印所有参数,便于调试 console.log('导入参数:'); console.log('communityId:', vc.getCurrentCommunity().communityId); console.log('file:', file); console.log('importAdapt:', 'importContractV2'); // 使用实际的userId,如果没有则使用默认值 let userId = '-1'; let userName = ''; // 尝试从localStorage获取用户信息 let localUserInfo = localStorage.getItem('userInfo'); if (localUserInfo) { try { localUserInfo = JSON.parse(localUserInfo); userId = localUserInfo.userId || '-1'; userName = localUserInfo.name || ''; console.log('从localStorage获取的用户信息:', localUserInfo); console.log('从localStorage获取的userId:', userId); console.log('从localStorage获取的userName:', userName); } catch (e) { console.log('解析localStorage用户信息失败:', e); } } // 如果localStorage获取失败,尝试第一种方式 if (userId === '-1') { let userInfo = vc.getData('/nav/getUserInfo'); userId = userInfo && userInfo.userId ? userInfo.userId : '-1'; userName = userInfo && userInfo.name ? userInfo.name : ''; console.log('第一种方式获取用户信息:', userInfo); console.log('第一种方式获取的userId:', userId); console.log('第一种方式获取的userName:', userName); } // 如果第一种方式失败,尝试第二种方式 if (userId === '-1') { let userInfo = vc.getData() && vc.getData().userInfo ? vc.getData().userInfo : null; userId = userInfo && userInfo.userId ? userInfo.userId : '-1'; userName = userInfo && userInfo.name ? userInfo.name : ''; console.log('第二种方式获取用户信息:', userInfo); console.log('第二种方式获取的userId:', userId); console.log('第二种方式获取的userName:', userName); } console.log('最终使用的userId:', userId); console.log('最终使用的userName:', userName); // 构建表单数据,只需要四个参数 var formData = new FormData(); formData.append("uploadFile", file); // 添加Excel文件 // 合同管理员层级的账号导入时,communityId应该为空 formData.append('communityId', ''); // 添加空的小区ID formData.append('importAdapt', "importContractV2"); // 指定使用的导入适配器 formData.append('userId', userId); // 添加userId参数(大写d) // 发送导入请求,与车辆导入保持一致 vc.http.upload( 'assetImport', // 模块名 'importData', // 方法名 formData, // 参数 { // 移除emulateJSON,避免与Content-Type冲突 timeout: 60000, // 增加超时设置,60秒 headers: { "Content-Type": "multipart/form-data" } }, function(json, res) { // 成功回调 let _json = JSON.parse(json); if (_json.code == 0) { // 导入成功 vc.toast("处理成功"); $('#importContractModel').modal('hide'); // 关闭模态框 // 清空表单数据 vc.component.advertisementSummaryInfo.importExcelFile = ''; // 跳转到导入日志详情页面 vc.jumpToPage('/#/pages/property/assetImportLogDetail?logId=' + _json.data.logId + '&logType=importContractV2'); return; } // 导入失败,显示错误信息 let errorMsg = _json.msg; // 优化SocketException错误信息 if (errorMsg && errorMsg.includes('java.net.SocketException')) { errorMsg = '导入失败: 网络连接异常,请检查网络连接或稍后重试'; } vc.toast(errorMsg, 10000); }, function(errInfo, error) { // 失败回调 console.log('请求失败处理:', errInfo, error); // 确保即使 errInfo 为空,也能显示错误信息 let errorMsg = errInfo; if (!errorMsg || errorMsg.trim() === '') { errorMsg = '导入失败,请检查文件格式或联系管理员'; } else { // 优化错误信息显示 if (errorMsg.includes('java.net.SocketException')) { errorMsg = '导入失败: 网络连接异常,请检查网络连接或稍后重试'; } else if (errorMsg.includes('timeout')) { errorMsg = '导入失败: 请求超时,请检查网络连接或稍后重试'; } } vc.toast(errorMsg, 10000); // 关闭模态框 $('#importContractModel').modal('hide'); // 清空表单数据 vc.component.advertisementSummaryInfo.importExcelFile = ''; } ); }, // 导出合同数据 _exportContractData: function () { // 构建导出参数 var params = vc.component.advertisementSummaryInfo.conditions; params.contractNameLike = params.contractNameLike.trim(); params.contractCode = params.contractCode.trim(); // 构建导出URL let exportUrl = '/contract/exportContractData?'; // 添加参数 let paramStr = ''; for (let key in params) { if (params[key] && params[key] !== '') { if (paramStr) { paramStr += '&'; } paramStr += key + '=' + encodeURIComponent(params[key]); } } exportUrl += paramStr; // 直接下载导出文件 window.open(exportUrl, '_blank'); }, } }); })(window.vc);